T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:13
- Finding
- Unpinned Runtime Dependency Receives Sensitive X Account Credentials## Vulnerability Details **File Location**: `SKILL.md`, lines 13–16 **Vulnerability Type**: Unpinned third-party runtime dependency **Risk Level**: Medium ### Vulnerable Code Snippet ```yaml install: - id: "npm" kind: "node" package: "@xonder/clawbird" label: "Install clawbird plugin (npm)" ``` The associated trust statement at `SKILL.md`, lines 67–80, confirms that the executable implementation is obtained from npm at installation time rather than included in the reviewed artifact: ```markdown Clawbird is an npm-distributed skill — the runtime code is installed via `npm i -g @xonder/clawbird` and is not bundled in the ClawHub skill archive. The security properties below can be verified by auditing the source: - **Source:** https://github.com/xonder/clawbird (MIT) - **npm:** https://www.npmjs.com/package/@xonder/clawbird - Makes **no network requests** other than to `api.x.com` ([source: `src/client.ts`](https://github.com/xonder/clawbird/blob/main/src/client.ts)) - Reads and writes **one local file** (`clawbird-interactions.jsonl`) for session interaction logging — no other filesystem access ([source: `src/interaction-log.ts`](https://github.com/xonder/clawbird/blob/main/src/interaction-log.ts)) - Has **zero transitive dependencies** beyond the official `@xdevplatform/xdk` SDK and `@sinclair/typebox` - Includes a comprehensive test suite (200+ tests) verifiable via `npm test` Since this skill installs code from npm at runtime, **review the source or pin a specific version** (`npm i -g @xonder/clawbird@1.1.0`) before granting credentials. ``` ### Technical Analysis The installation metadata references `@xonder/clawbird` without an exact version or integrity constraint. Package resolution can therefore select a release published after this skill was audited. The runtime implementation is not bundled in the project, so its claimed network, filesystem, credential-handling, and dependency properti ...[truncated 2245 chars]
- Remediation
- ## Remediation Suggestions 1. Replace the unversioned package declaration with an exact, reviewed version, such as `@xonder/clawbird@1.1.0`, after independently verifying that release. 2. Enforce package integrity using a trusted lockfile, cryptographic integrity hash, signed provenance, or registry signature mechanism where the installation platform supports it. 3. Prefer bundling the reviewed runtime source with the skill so the audited artifact matches the code that will execute. 4. Audit each dependency update before changing the pinned version, including package provenance, install scripts, transitive dependencies, network destinations, filesystem access, and credential handling. 5. Grant only the minimum OAuth scopes required for intended operations. Use separate credentials for read-only and write functionality where possible. 6. Require explicit user confirmation for tweets, replies, likes, follows, and direct messages. 7. Run the plugin in a restricted sandbox with minimal filesystem access, no unnecessary environment variables, and outbound network access limited to the required official X API endpoint. 8. Rotate and revoke X credentials promptly if package compromise is suspected.
