T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:25
- Finding
- Unpinned Third-Party Dependency Installation## Vulnerability Details **File Locations**: - `SKILL.md:25-34` - `references/sdk.md:14-17` - `references/sdk.md:144-147` - `references/integrations.md:19-22` - `references/integrations.md:263-266` - `references/integrations.md:309-312` **Vulnerability Type**: Unpinned and unverifiable third-party dependencies **Risk Level**: Medium ### Vulnerable Code `SKILL.md:25-34`: ```markdown ## Installation **Python:** ```bash pip install tavily-python ``` **JavaScript:** ```bash npm install @tavily/core ``` ``` `references/sdk.md:14-17`: ```markdown ### Installation ```bash pip install tavily-python ``` ``` `references/sdk.md:144-147`: ```markdown ### Installation ```bash npm install @tavily/core ``` ``` `references/integrations.md:19-22`: ```markdown ### Installation ```bash pip install -U langchain-tavily ``` ``` `references/integrations.md:263-266`: ```markdown ### Installation ```bash npm install ai @ai-sdk/openai @tavily/ai-sdk ``` ``` `references/integrations.md:309-312`: ```markdown ### Installation ```bash pip install 'crewai[tools]' ``` ``` ### Technical Analysis The documented installation commands retrieve mutable package versions from public package registries without exact version pins, lockfiles, package hashes, or integrity verification. Consequently, the code installed by a user may differ from the code reviewed when this Skill was published. Python and Node.js package installation can execute package-controlled build or installation logic. Runtime imports subsequently execute package code inside the integrating application. The `pip install -U langchain-tavily` instruction is particularly exposed because `-U` explicitly replaces an existing installation with the newest available compatible release. No evidence indicates that the currently named packages are malicious. The confirmed weakness is that the instructi ...[truncated 1820 chars]
- Remediation
- ## Remediation Suggestions 1. Replace unconstrained dependency commands with exact, reviewed versions, for example: ```bash pip install tavily-python==REVIEWED_VERSION npm install @tavily/core@REVIEWED_VERSION --save-exact ``` 2. Remove unconditional upgrade behavior such as `pip install -U` from standard setup instructions. Upgrades should be deliberate and reviewed. 3. Provide reproducible dependency metadata: - Use a Python lockfile or a fully pinned requirements file. - Use `package-lock.json`, `npm-shrinkwrap.json`, or an equivalent JavaScript lockfile. - Pin relevant transitive dependencies where the selected ecosystem tooling supports it. 4. Add integrity verification: - Publish Python requirements with hashes and install using `pip install --require-hashes`. - Commit and enforce npm lockfile integrity metadata. - Use only trusted package registries and document approved registry configuration. 5. Run dependency vulnerability and provenance checks in CI, such as package auditing, lockfile review, and publisher or signature verification where available. 6. Recommend installation inside an isolated virtual environment or container under a non-privileged account. Avoid installing dependencies as root or in a broadly privileged CI/CD context. 7. Establish a controlled update process in which dependency changes are reviewed, scanned, tested, and explicitly approved before users are instructed to adopt them.
