T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:831
- Finding
- Unpinned Third-Party Package Installation Creates a Supply-Chain Execution Risk## Vulnerability Details **File Location**: `SKILL.md:831` **Vulnerability Type**: Unpinned third-party dependency installation **Risk Level**: Medium ### Vulnerable Code ```bash # 1. Install CLI npm install -g @nevermined-io/cli ``` Equivalent unpinned installation instructions also appear at: - `SKILL.md:366,371,386` - `references/a2a-integration.md:22,28` - `references/express-integration.md:8` - `references/fastapi-integration.md:8` - `references/langchain-integration.md:8,144,225` - `references/mcp-paywall.md:8` - `references/strands-integration.md:8` These include commands such as: ```bash npm install @nevermined-io/payments pip install payments-py pip install payments-py[fastapi] pnpm add @nevermined-io/payments @langchain/core @langchain/langgraph @langchain/openai ``` ### Technical Analysis The installation instructions do not specify exact package versions, integrity hashes, or a reviewed lockfile. Consequently, package managers resolve the latest compatible releases and their transitive dependencies at installation time. The code that is ultimately installed can therefore differ from the code reviewed during this audit. Package installation may execute lifecycle scripts, and imported packages can execute initialization code within the application process. The global CLI command is especially sensitive because it modifies the user-wide executable environment and may expose the installed package to broader use than the current project. The package names are consistent with the Skill's declared Nevermined payment functionality, and there is no evidence that they are currently malicious or typosquatted. The vulnerability is the uncontrolled trust in mutable future package versions. ### Attack Path 1. An attacker compromises a named package, one of its transitive dependencies, or the relevant package registry account. 2. The attacker publishes a malicious release under the existing pac ...[truncated 1118 chars]
- Remediation
- ## Remediation Suggestions 1. Replace mutable installation commands with reviewed exact versions, for example: ```bash npm install --save-exact @nevermined-io/payments@<reviewed-version> pip install "payments-py[fastapi]==<reviewed-version>" ``` 2. Commit package lockfiles and require immutable installation modes such as `npm ci`, `pnpm install --frozen-lockfile`, or hash-verified Python requirements. 3. For Python deployments, generate requirements with hashes and install using `pip install --require-hashes -r requirements.txt`. 4. Avoid global CLI installation. Prefer a project-local pinned development dependency invoked through the package manager. 5. Review lifecycle scripts and transitive dependencies before updating pins. 6. Run package installation in a restricted build environment without production API keys or payment credentials. 7. Apply dependency scanning and registry provenance verification in CI. 8. Periodically update exact versions only after security and compatibility review.
