T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:15
- Finding
- Unpinned Third-Party Dependencies and Unverified Binary Downloads## Vulnerability Details **File Location**: `SKILL.md:15-38`, `SKILL.md:90-125`, `README.md:29-49` **Vulnerability Type**: Supply-chain risk from unpinned packages and unverified executable artifacts **Risk Level**: Medium ### Vulnerable Code ```yaml install: - id: mcporter-npm kind: npm package: mcporter bins: ["mcporter"] label: Install MCPorter via npm (all platforms) platforms: ["macOS", "Linux", "Windows"] - id: mcporter-brew kind: brew formula: steipete/tap/mcporter bins: ["mcporter"] label: Install MCPorter via Homebrew (macOS/Linux) platforms: ["macOS", "Linux"] - id: engram-brew kind: brew formula: gentleman-programming/tap/engram bins: ["engram"] label: Install Engram via Homebrew (macOS/Linux) platforms: ["macOS", "Linux"] - id: engram-binary kind: manual label: Download Engram binary from GitHub Releases url: https://github.com/Gentleman-Programming/engram/releases platforms: ["macOS", "Linux", "Windows"] ``` ```bash # Without installation npx mcporter --version # Global installation npm install -g mcporter brew install gentleman-programming/tap/engram ``` ```text 1. Download from GitHub Releases 2. Windows: Rename to engram.exe and add it to PATH 3. macOS/Linux: chmod +x engram && sudo mv engram /usr/local/bin/ ``` ### Technical Analysis The installation metadata and documentation reference package names and release pages without pinning exact versions or requiring integrity or signature verification. Consequently, the effective executable installed by following these instructions may change after the Skill has been reviewed. `npm install -g mcporter` can execute package lifecycle scripts and installs the package globally. `npx mcporter --version` may also download and execute a package when it is not already cached. The Homebrew instructions consume mutable thi ...[truncated 2091 chars]
- Remediation
- ## Remediation Suggestions 1. Pin MCPorter and Engram to reviewed, exact versions in both installation metadata and documentation. 2. Avoid bare `npx` execution. If it must be supported, specify an exact version and use a locked, verified package source. 3. Prefer project-local npm installation with a committed lockfile over global installation. 4. Publish SHA-256 or stronger digests for every manually downloaded binary and require users to verify the digest before applying executable permissions. 5. Provide and verify signed release artifacts using a documented signing identity, such as Sigstore provenance or platform-native code signing. 6. Link directly to immutable, versioned release artifacts rather than a mutable general releases page. 7. Document trusted publisher names, expected repository ownership, and artifact filenames so users can detect typosquatting or repository substitution. 8. Avoid placing manually downloaded binaries in a system-wide PATH directory unless necessary. Prefer a user-scoped installation directory with restricted permissions. 9. Add an installation verification step that records the installed version and validates that the executable resolves to the expected path. 10. Establish an update policy requiring review and integrity verification before dependency versions are changed.
