T08 · Insecure Dependencies
Error
- Location
- SKILL.md:8
- Finding
- Mutable Third-Party CLI Is Downloaded and Executed Without Version or Integrity Pinning<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:8` and `SKILL.md:91-93` (the mutable command pattern is repeated throughout the file) **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: High ### Vulnerable Code ```yaml allowed-tools: Read, Write, Bash(npx:@vincentai/cli*) ``` ```bash npx @vincentai/cli@latest trading-engine create-strategy \ --key-id <KEY_ID> \ --name "BTC Momentum" \ ``` ### Technical Analysis The Skill authorizes execution of the third-party `@vincentai/cli` npm package and consistently instructs the agent to invoke its mutable `latest` release. The project contains no pinned package version, lockfile, package integrity hash, signature-verification procedure, or local implementation that would allow the executed payload to be fully audited. When the package is not already available locally, `npx` can retrieve it and its transitive dependencies from the npm registry and immediately execute them. The effective code can therefore change after this Skill has been reviewed. The wildcard in `Bash(npx:@vincentai/cli*)` also permits every subcommand exposed by the package rather than limiting execution to the minimum set of audited trading-engine operations. This is particularly sensitive because the CLI is used in a context involving wallet authorization, automated financial transactions, strategy configuration, and access to local credential-related state. The statements in the documentation that private keys remain on Vincent's servers and that policies are enforced cannot be independently verified from this project because the CLI and backend implementations are not included. ### Attack Path 1. An attacker compromises the npm publisher account, the package release process, a transitive dependency, or another component in the package distribution chain. 2. The attacker publishes a malicious release that becomes the version resolved by `@vincentai/cli@latest`. 3. ...[truncated 1266 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace `@vincentai/cli@latest` with an exact, reviewed version in every command, such as `@vincentai/cli@1.2.3`. 2. Install the CLI during a controlled build or deployment phase rather than downloading executable code at Skill runtime. 3. Commit and enforce a lockfile covering the package and all transitive dependencies. 4. Verify package integrity with trusted hashes or signed provenance before installation and execution. 5. Run the CLI in a sandbox with no access to unrelated files, environment variables, network destinations, or credentials. 6. Restrict the Bash allowlist to the specific required subcommands and arguments rather than allowing `npx:@vincentai/cli*`. 7. Use a dedicated, revocable, least-privilege trading credential with server-side limits on venues, instruments, transaction sizes, daily exposure, and spending. 8. Vendor or otherwise make the security-relevant CLI implementation available for review, especially credential resolution, network destinations, policy enforcement, and transaction construction. ]]>
