T08 · Insecure Dependencies
- Location
SKILL.md:14- Finding
Unpinned Third-Party Dependencies Create Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:14-19;references/sdk.md:17,147;references/integrations.md:27,190,263,402,554,620,666
Vulnerability Type: T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
SKILL.md:14-19bash pip install tavily-python npm install @tavily/corereferences/sdk.md:17,147bash pip install tavily-python npm install @tavily/corereferences/integrations.md:27bash pip install -U langchain-tavilyreferences/integrations.md:190bash pip install "pydantic-ai-slim[tavily]"references/integrations.md:263bash pip install agno tavily-pythonreferences/integrations.md:402bash pip install anthropic tavily-pythonreferences/integrations.md:554bash pip install google-adk mcpreferences/integrations.md:620bash npm install ai @ai-sdk/openai @tavily/ai-sdkreferences/integrations.md:666bash pip install 'crewai[tools]'Technical Analysis
The installation instructions do not pin exact dependency versions or verify package integrity with cryptographic hashes. Consequently, package managers resolve mutable versions and their transitive dependency trees at installation time. The
-Uoption used forlangchain-tavilyexplicitly requests an upgrade to the latest version available from the configured registry.This does not establish that any listed package is currently malicious. However, it prevents the audited Skill from guaranteeing that users will install the same dependency artifacts that were reviewed. If a package, maintainer account, registry, or transitive dependency is compromised, later users could receive attacker-controlled code. Python and Node.js packages may execute package-controlled build or installation behavior and will execute arbitrary library code when imported.
Attack Path
- An attacker compromises ...[truncated 1394 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace mutable package requirements with exact, reviewed versions, such as
package==X.Y.Zfor Python and exact versions without range operators for npm. - Maintain dependency lockfiles, such as a hash-verified Python requirements file and
package-lock.json,npm-shrinkwrap.json, or an equivalent lockfile. - For Python, generate requirements with hashes and install using
pip install --require-hashes -r requirements.txt. - Use
npm ciwith a committed lockfile for reproducible Node.js installations. - Remove
-Ufrom routine installation guidance because it intentionally retrieves mutable latest releases. - Document the expected package registries and reject untrusted registry overrides in CI/CD environments.
- Audit direct and transitive dependencies with tools such as
pip-audit, OSV-Scanner, ornpm audit. - Review package provenance, signatures, maintainer changes, and release history before updating pinned versions.
- Run installation and agent workloads in least-privileged, isolated environments without unnecessary secrets or host filesystem access.
- Establish a controlled dependency-update process that reviews and tests each version before updating the documented pins and lockfiles.
- Replace mutable package requirements with exact, reviewed versions, such as
