T08 · Insecure Dependencies
- Location
SKILL.md:6- Finding
Unpinned Third-Party Python Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 6-29
Vulnerability Type: Supply-chain exposure through mutable dependency resolution
Risk Level: MediumVulnerable Code
yaml metadata: { "openclaw": { "requires": { "bins": ["streamlit"], "runtime": "python3" }, "install": [ { "id": "python", "kind": "pip", "package": "streamlit", "label": "Install Streamlit (pip)", }, { "id": "pandas", "kind": "pip", "package": "pandas", "label": "Install Pandas (pip)", }, { "id": "plotly", "kind": "pip", "package": "plotly", "label": "Install Plotly (pip)", }, ], "emoji": "📊", }, }Technical Analysis
The installation metadata requests
streamlit,pandas, andplotlyfrom pip without exact versions, package hashes, a constraints file, or a lockfile. Consequently, separate installations can resolve different package versions and transitive dependency graphs.These are legitimate package names, and the reviewed project contains no evidence that they are currently malicious. Nevertheless, mutable dependency resolution creates a supply-chain weakness: if an upstream release, maintainer account, package index, or transitive dependency is compromised, installation may retrieve and execute code that was not part of the audited artifact. The empty Node.js dependency declarations in
package.jsondo not provide integrity controls for these Python dependencies.Attack Path
- An attacker compromises an upstream package, package-maintainer account, distribution channel, or transitive dependency.
- The attacker publishes a malicious release under one of the d ...[truncated 1154 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an exact, reviewed version, such as
streamlit==X.Y.Z,pandas==X.Y.Z, andplotly==X.Y.Z. - Generate a reproducible lock or requirements file that also constrains all transitive dependencies.
- Record cryptographic hashes and install with a command equivalent to:
bash python3 -m pip install --require-hashes -r requirements.txt - Configure installation to use an approved HTTPS package index or an internally controlled package mirror.
- Run dependency vulnerability and provenance checks in CI before approving lockfile updates.
- Review dependency updates explicitly rather than automatically accepting the newest available releases.
- Install and run the application in an isolated virtual environment or container under a non-privileged account with access limited to the required log files.
- Pin every direct dependency to an exact, reviewed version, such as
