T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned Executable Dependency from a Third-Party Homebrew Tap## Vulnerability Details **File Location**: `SKILL.md`, line 5 **Vulnerability Type**: Supply-chain risk caused by an unpinned third-party dependency **Risk Level**: Medium **Vulnerable Code Snippet**: ```yaml metadata: {"clawdbot":{"emoji":"📨","os":["darwin"],"requires":{"bins":["imsg"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/imsg","bins":["imsg"],"label":"Install imsg (brew)"}]}} ``` ### Technical Analysis The Skill installs the `imsg` executable from the third-party Homebrew tap `steipete/tap`. The dependency is identified only by its mutable formula name and is not pinned to a reviewed release, immutable commit, source archive checksum, or binary digest. Consequently, the executable installed in the future may differ from the component that was available when the Skill was reviewed. If the tap, formula repository, release infrastructure, or maintainer account is compromised, an attacker could replace the referenced package with a modified executable. Homebrew would then install that modified component through the documented installation workflow. The risk is amplified by the permissions documented for normal operation: the terminal is expected to receive Full Disk Access and Automation permission to control Messages.app. Although the Skill itself does not contain malicious executable code, the mutable dependency becomes an indirect code-execution and data-access channel. ### Attack Path 1. An attacker compromises the third-party Homebrew tap, its maintainer account, formula repository, or an artifact location referenced by the formula. 2. The attacker modifies the `imsg` formula or its downloadable artifact to distribute a malicious executable. 3. A user installs or upgrades the dependency using the Skill's documented Homebrew source. 4. Homebrew retrieves and installs the attacker-controlled version because the Skill does not enforce a reviewed version or integrity digest. 5. The user invokes ...[truncated 938 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the dependency to a specific, reviewed release rather than relying solely on the mutable `steipete/tap/imsg` formula name. 2. Record and verify a cryptographic checksum, such as SHA-256, for the exact source archive or binary artifact expected by the Skill. 3. Where supported, reference an immutable source commit and verify that the Homebrew formula resolves to that commit and checksum. 4. Establish a dependency-update review process in which version and checksum changes require explicit security review. 5. Document the exact expected package version and provide a verification command users can run after installation. 6. Reduce permission exposure by avoiding Full Disk Access for a general-purpose terminal where practical. Prefer a dedicated, narrowly scoped execution environment and grant Messages automation access only when sending is required. 7. Continue requiring explicit confirmation of the recipient, message text, and attachment before every send operation.
