T08 · Insecure Dependencies
- Location
README.md:24- Finding
Unpinned Third-Party Installation Sources Permit Supply-Chain Substitution
- Content
View full analysis
Vulnerability Details
File Location:
README.md:24-32;SKILL.md:83
Vulnerability Type: Unpinned executable dependencies and mutable installation sources
Risk Level: MediumVulnerable Code
README.md:24-32:bash # Installation method 1: skills.sh npx skills add maoningwood/gongwen # Installation method 2: Git clone git clone https://github.com/maoningwood/gongwen.git ~/.agents/skills/gongwen # Alternatively, clone it into <project>/.agents/skills/gongwen pip3 install --user python-docxSKILL.md:83:text Dependency: `python-docx` (`pip3 install --user python-docx`).Technical Analysis
The documented installation procedure resolves third-party components without an exact version, immutable commit, lockfile, or integrity hash.
The
npxcommand may retrieve and execute the currently resolved release of theskillspackage. npm packages can contain lifecycle scripts and executable entry points, so a compromised or unexpectedly changed upstream release can execute code during installation.The
pip3 install --user python-docxcommand similarly resolves the current compatible package release. Depending on the selected distribution and environment, pip may invoke package build backends or installation logic. No hash checking or reviewed version constraint ensures that the installed artifact is the one expected by the audited project.The Git clone command tracks a mutable repository branch rather than an immutable commit or signed release. Consequently, the installed Skill content may differ from the version covered by this audit.
This is a supply-chain weakness rather than evidence that the currently audited dependencies are malicious.
Attack Path
- An attacker compromises an upstream package registry account, repository account, release process, or another relevant distribution channel.
- The attacker publishes a modified release or changes the r ...[truncated 1162 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every package to a reviewed exact version instead of resolving the latest release.
- Pin the Skill repository to an immutable commit or a signed, immutable release tag.
- Supply and verify cryptographic hashes for downloaded artifacts. For pip, use a requirements file with exact versions and hashes, then install with
--require-hashes. - Pin the npm installer package explicitly and use a committed lockfile where applicable.
- Install Python dependencies in a dedicated virtual environment rather than the user-wide Python environment.
- Prefer prebuilt, verified wheels from trusted indexes and review any dependency requiring a source build.
- Document the expected commit, package versions, artifact hashes, and verification procedure so users can reproduce the audited installation.
- Use signed releases or provenance attestations where supported, and periodically review pinned dependencies for security updates.
