Back to skill

Security audit

ClawBB

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for a macOS voice-to-text app, but it asks users to optionally run an unpinned remote install script and uses sensitive macOS microphone/accessibility permissions.

Prefer the verified DMG path and check the documented SHA-256 before opening it. Treat the optional build-from-source instructions as higher risk unless you first pin and inspect a specific commit. Only grant Microphone and Accessibility permissions if you are comfortable with a dictation app capturing audio and inserting text into the active cursor location.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Warning
Location
SKILL.md:43
Finding
Execution of Unpinned Code Retrieved from a Remote Repository## Vulnerability Details **File Location**: `SKILL.md`, lines 43-47 **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Medium ```bash git clone https://github.com/dyz2102/xiabb.git /tmp/xiabb-build cd /tmp/xiabb-build # Review install.sh and native/main.swift before running cat install.sh bash install.sh ``` ### Technical Analysis The build instructions clone the mutable default branch of a remote GitHub repository and then direct the user to execute its `install.sh` script. The repository is not pinned to a reviewed commit, immutable release tag, or cryptographically verified source archive. Consequently, the code executed by the user may differ from the code that existed when this Skill was audited. Displaying the script with `cat` does not provide a reliable security boundary. A user may not fully inspect the script or its transitive behavior, and the script can retrieve and execute additional mutable content. Although the repository is fetched over HTTPS, transport security does not protect against compromise of the upstream repository, maintainer account, or release process. ### Attack Path 1. An attacker compromises the upstream repository, a maintainer account, or the repository's default branch. 2. The attacker modifies `install.sh`, or another resource invoked by it, to contain malicious commands. 3. A user follows the documented build-from-source procedure and clones the mutable default branch. 4. The user runs `bash install.sh` as instructed. 5. The attacker-controlled commands execute with the privileges and environment of the invoking user. ### Impact Assessment Successful exploitation permits arbitrary command execution in the invoking user's security context. The payload could read or alter files accessible to that user, access environment variables such as `GEMINI_API_KEY` if present, make network requests, install user-level persistence, or download further payloads. ...[truncated 252 chars]
Remediation
## Remediation Suggestions - Pin the source to a specific reviewed commit hash rather than cloning the mutable default branch. - Publish the expected commit identifier or archive SHA-256 checksum in `SKILL.md` and require verification before execution. - Prefer downloading a source archive from an immutable release and validating its checksum and release signature. - If a Git tag is used, require a signed tag and verify its signature; a tag name alone may be moved. - Replace the generic installation script with explicit, reviewable build commands where practical. - Audit `install.sh`, `native/main.swift`, and every script or remote resource they invoke before recommending execution. - Fail closed if the checked-out commit, checksum, or signature does not match the documented trusted value.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (4)

Vague Triggers

Medium
Confidence
84% confidence
Finding
The phrase 'Hold Globe key. Speak. Text appears.' describes invocation only as pressing a common keyboard key, without clarifying whether the skill activates globally, in which apps it should or should not be used, or any negative examples. In a markdown skill description, this can be read as an overly broad trigger condition that may cause unintended invocation or user confusion about scope.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
Or configure via the app's menu bar → "Configure Gemini API Key...".

The key is stored locally at `~/Tools/xiabb/.api-key` (chmod 600 recommended).

### Permissions
Confidence
80% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Natural-Language Policy Violations

Low
Confidence
73% confidence
Finding
The description markets the skill as 'Bilingual — Mixed Chinese + English, perfect punctuation for AI prompts,' which suggests a specific language/locale behavior but does not mention any user choice or opt-in for language handling. Under the policy, forcing or assuming a language/locale without offering a choice can be a natural-language policy concern.

External Script Fetching

Low
Category
Supply Chain
Content
Download the Apple Notarized DMG (app release v1.1.3): from GitHub Releases:

```bash
curl -L -o /tmp/XiaBB.dmg "https://github.com/dyz2102/xiabb/releases/download/v1.1.3/XiaBB-v1.1.3-macOS-arm64.dmg"
```

**Verify checksum before opening:**
Confidence
15% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Static analysis

No suspicious patterns detected.