T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned External CLI Dependency Allows Supply-Chain Substitution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 5 **Vulnerability Type**: Unpinned and mutable third-party executable dependency **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"clawdbot":{"emoji":"📱","requires":{"bins":["wacli"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/wacli","bins":["wacli"],"label":"Install wacli (brew)"},{"id":"go","kind":"go","module":"github.com/steipete/wacli/cmd/wacli@latest","bins":["wacli"],"label":"Install wacli (go)"}]}} ``` ### Technical Analysis The installation metadata permits `wacli` to be installed from either the custom Homebrew tap `steipete/tap/wacli` or the mutable Go module reference `github.com/steipete/wacli/cmd/wacli@latest`. The Go dependency is not pinned to a reviewed version or immutable commit. The Homebrew option likewise specifies no version, checksum, signature, or other integrity constraint in the Skill. As a result, the executable installed later may differ from the implementation that existed when the Skill was reviewed. This creates a third-party supply-chain risk. If the upstream repository, release process, package-hosting account, or custom Homebrew tap is compromised, an attacker could publish a modified release that is selected by `@latest` or by the tap formula. There is no evidence in the audited files that the current upstream dependency is malicious; the vulnerability is the lack of reproducible version and integrity controls. ### Attack Path 1. An attacker compromises the upstream repository, release account, Go module distribution path, or custom Homebrew tap. 2. The attacker publishes a modified `wacli` release or changes the formula to resolve to malicious executable code. 3. A user or agent follows the Skill installation metadata after the upstream change. 4. The package manager downloads and builds or installs the mutable dependency without validation against a Skill-maintained version, checksum, or signature. 5. The malicio ...[truncated 1112 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace `@latest` with a reviewed, explicit semantic version or immutable commit: ```yaml module: github.com/steipete/wacli/cmd/wacli@vX.Y.Z ``` 2. Pin the Homebrew installation to a versioned formula where the platform supports it, or replace the custom tap workflow with a trusted, immutable release artifact. 3. Record and verify cryptographic checksums for downloaded release artifacts. 4. Prefer signed releases and verify signatures against a documented, trusted maintainer key. 5. Document the expected dependency version and update it only through a review process that examines upstream changes. 6. Use reproducible builds or compare built artifacts against trusted provenance attestations where available. 7. Run the CLI with the least privileges required and restrict access to `~/.wacli`, because that directory may contain sensitive authentication and message data. ]]>
