T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned Credential-Handling Dependency and Mutable Self-Update Channel<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 5 and 24 **Vulnerability Type**: Unpinned third-party dependency and mutable update channel **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"clawdbot":{"emoji":"🔑","requires":{"bins":["ghapp"]},"install":[{"id":"brew","kind":"brew","formula":"operator-kit/tap/ghapp","bins":["ghapp"],"label":"Install ghapp (brew)"}]}} ``` ```text - `ghapp update` — self-update to latest release ``` ### Technical Analysis The skill directs users to install `ghapp` from the third-party Homebrew tap `operator-kit/tap/ghapp` without specifying an immutable version, formula revision, source commit, checksum, or signature-verification requirement. It also documents a self-update operation that installs the latest release, whose contents may change after this skill has been reviewed. This dependency is security-sensitive because the documented workflow gives it access to the path of a GitHub App private key, permits it to generate and cache installation tokens, and allows it to modify Git and GitHub CLI authentication behavior. The dependency implementation is not included in the audited project, so its handling of credentials and updates cannot be verified from the available source. This does not prove that the current external package is malicious. The vulnerability is the absence of controls ensuring that future installations and updates use the same reviewed artifact. ### Attack Path 1. An attacker compromises the third-party Homebrew tap, release account, artifact-hosting infrastructure, or self-update distribution channel. 2. The attacker publishes a modified `ghapp` formula or release under the expected package identity. 3. A user or automation installs `operator-kit/tap/ghapp` or executes `ghapp update`. 4. The substituted binary executes with the privileges of the invoking local user. 5. During setup or authentication, the binary receives or reads the configured GitHub App private-ke ...[truncated 958 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the dependency to a specific audited release rather than implicitly installing the latest formula. 2. Pin the Homebrew tap or formula to an immutable commit or revision where the installation system permits it. 3. Publish and verify cryptographic checksums or signatures for release artifacts before execution. 4. Disable or discourage automatic self-updates in security-sensitive and automated environments. Route upgrades through a reviewed, version-controlled dependency update process. 5. Document the exact source repository, release version, artifact digest, and verification procedure expected by the skill. 6. Restrict the GitHub App to the minimum required repositories and permissions, avoiding organization-wide installation unless necessary. 7. Store the private key with restrictive filesystem permissions and isolate the tool in a dedicated execution environment where feasible. 8. Review the external dependency's source and update implementation before deployment, with particular attention to private-key handling, token storage, shell integration, path shims, and release verification. ]]>
