T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:14
- Finding
- Unpinned External Binary Installed from a Personal Homebrew Tap<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:14-24` **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code ```json "install": [ { "id": "appledev", "kind": "brew", "tap": "Abdullah4AI/tap", "formula": "appledev", "bins": ["appledev"], "label": "Apple Developer Toolkit - unified binary (Homebrew)", }, ], ``` Related installation and credential-handling instructions appear in `SKILL.md:88-105`: ```bash brew install Abdullah4AI/tap/appledev appledev store auth login --name "MyApp" --key-id "KEY_ID" --issuer-id "ISSUER_ID" --private-key /path/to/AuthKey.p8 ``` The README also presents unpinned source and package installation workflows in `README.md:37-57`: ```bash brew install Abdullah4AI/tap/appledev ``` ```bash git clone https://github.com/Abdullah4AI/apple-developer-toolkit.git cd apple-developer-toolkit bash scripts/setup.sh ``` ```bash npx add-skill Abdullah4AI/apple-developer-toolkit ``` ### Technical Analysis The Skill instructs the host to install and execute an external `appledev` binary from a personal Homebrew tap. No immutable version, commit hash, binary checksum, or signature verification is specified. The repository artifact does not include the binary, the referenced `cli.js`, or `scripts/setup.sh`, so the executable implementation and source-installation behavior cannot be reviewed from the supplied package. This creates a supply-chain trust boundary: the code executed by users may change after the Skill itself has been audited. The risk is amplified because the binary is designed to receive or access sensitive App Store Connect credentials and an LLM API key. It also exposes commands that upload builds, manage signing assets, submit applications, and install build prerequisites. The finding does not establish that the current Homebrew formula or upstream repository is malicious. It establishes that the package relies on mutable, ...[truncated 1898 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the Homebrew formula and binary to an immutable release version rather than relying on a mutable latest release. 2. Publish SHA-256 checksums for every release artifact and verify them before installation or execution. 3. Sign release binaries and document signature verification using an independently verifiable signing identity. 4. Pin Git-based installation instructions to a reviewed commit hash or signed tag. 5. Avoid floating `npx` installation. Pin an exact package version and lock all transitive dependencies. 6. Include the executable source and referenced setup scripts in the audited artifact, or link to an immutable source revision that exactly matches the distributed binary. 7. Provide reproducible-build instructions so users can verify that published binaries correspond to reviewed source. 8. Document every action performed by `appledev build setup`, and require explicit confirmation before installing additional software. 9. Store App Store Connect private keys in the macOS Keychain or another protected credential store. Avoid raw private-key environment variables and command-line arguments. 10. Use a dedicated App Store Connect API key with the minimum role required for the requested operation, and rotate or revoke it if dependency compromise is suspected. 11. Separate documentation search, application generation, and App Store Connect administration into independently installable components so credential-free tasks do not require trusting a credential-capable binary. ]]>
