T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:42
- Finding
- Unpinned Third-Party Dependencies Installed from Mutable Package Registries## Vulnerability Details **File Location**: `SKILL.md:42`, `SKILL.md:64`, `SKILL.md:67`, and `SKILL.md:142` **Vulnerability Type**: Supply-chain exposure through unpinned dependencies **Risk Level**: Medium **Complete Code Snippets**: ```bash pip install spacerouter ``` ```bash npm install @spacenetwork/spacerouter ``` ```bash pip install spacerouter-cli spacerouter config set api-key sr_live_YOUR_API_KEY spacerouter request get https://example.com ``` ```python pip install spacerouter[socks] client = SpaceRouter("sr_live_xxx", protocol="socks5", gateway_url="socks5://gateway:1080") ``` ### Technical Analysis The documented installation commands retrieve packages by name without pinning an audited version, validating package hashes, using a lockfile, or identifying a verified source revision. Consequently, the code installed when a user follows these instructions can change independently of the reviewed Skill. Python and Node.js package installation may execute package-controlled build or lifecycle logic. A compromised publisher account, malicious new release, registry compromise, or dependency-confusion condition could therefore introduce code that was not present during this audit. The project does not vendor these dependencies, so their behavior cannot be validated from the supplied artifact. This finding does not establish that the named packages are currently malicious. It establishes that the documented dependency process does not guarantee that users receive the same reviewed package content. ### Attack Path 1. An attacker compromises a package publisher, dependency, or relevant registry path, or publishes an unsafe replacement release. 2. The attacker places malicious code in an installation hook, build backend, lifecycle script, imported module, or executable. 3. A user follows one of the unpinned `pip install` or `npm install` instructions. 4. The package manager resolves the current m ...[truncated 916 chars]
- Remediation
- ## Remediation Suggestions 1. Pin every documented dependency to a specifically reviewed version, for example by using exact Python and npm versions. 2. Provide lockfiles or constraints generated from reviewed dependency trees, including transitive dependencies. 3. For Python, distribute and verify hashes with a requirements file and `pip install --require-hashes`. 4. For Node.js, provide a committed lockfile and recommend deterministic installation with `npm ci`. 5. Identify the official package registry entries and source repositories so users can verify package ownership. 6. Review package build scripts and npm lifecycle hooks before approving version updates. 7. Recommend installation in an isolated virtual environment or container without unnecessary credentials or filesystem access. 8. Establish an update process that re-audits dependencies before changing pinned versions.
