T08 · Insecure Dependencies
- Location
SKILL.md:194- Finding
Unpinned Third-Party Python Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:194
Additional References:SKILL.md:286, 303-308
Vulnerability Type: Unpinned and unverifiable third-party dependencies
Risk Level: MediumVulnerable Code
bash pip install matplotlib seaborn plotly pandas numpyThe same unsafe installation pattern is repeated in the dependency documentation:
text | matplotlib | Plotting library | Required | pip install matplotlib | | seaborn | Statistical plotting | Recommended | pip install seaborn | | plotly | Interactive plotting | Recommended | pip install plotly | | pandas | Data processing | Recommended | pip install pandas | | numpy | Numerical computing | Required | pip install numpy | | kaleido | Plotly export | Optional | pip install kaleido |Technical Analysis
The Skill directs the Agent to install multiple packages without fixed versions, integrity hashes, a lockfile, or an explicitly trusted package index. Consequently, the artifacts installed during execution may differ from those available when the Skill was audited.
Package installation and later import execute package-controlled code, including build backends, installation hooks, native extensions, and module initialization logic. If a package, transitive dependency, package-index account, or resolution source is compromised, malicious code could execute under the account running the Agent.
This finding does not establish that any named package is currently malicious. The vulnerability is the mutable and unverifiable supply-chain installation process.
Attack Path
- An attacker compromises a package release, maintainer account, transitive dependency, or package source used by
pip. - The Agent follows the documented environment-setup command.
pipresolves the dependency to the attacker-controlled or compromised release because no reviewed version or hash is enforced.- Malicious code executes duri ...[truncated 747 chars]
- An attacker compromises a package release, maintainer account, transitive dependency, or package source used by
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a reviewed version rather than installing unconstrained latest releases.
- Resolve and pin all transitive dependencies in a committed lockfile.
- Require cryptographic hashes, such as with
pip install --require-hashes -r requirements.txt. - Configure an approved package index or internal mirror instead of relying on an unspecified source.
- Scan resolved dependencies for known vulnerabilities and review updates before changing pinned versions.
- Install packages in an isolated virtual environment or container running with least privilege.
- Restrict network access, mounted secrets, and writable host paths during installation and chart generation.
- Update every repeated installation example in
SKILL.md, including the separate Kaleido instruction, to use the hardened dependency file.
