T08 · Insecure Dependencies
- Location
SKILL.md:4- Finding
Unpinned Python Dependency Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 4
Vulnerability Type: Unpinned third-party package installation
Risk Level: MediumVulnerable Code
yaml metadata: {"openclaw":{"requires":{"bins":["curl","python3"]},"requires_env":["SKILLBOSS_API_KEY"],"install":[{"id":"python","kind":"pip","package":"requests","bins":[],"label":"Install requests (pip)"}]}}Technical Analysis
The Skill instructs the installation system to retrieve the Python
requestspackage through pip without specifying an audited version or validating an integrity hash. Consequently, the exact artifact installed can change over time and depends on the configured package index and resolver state.This behavior does not prove that the current
requestspackage is malicious. However, it creates a supply-chain exposure: compromise of the package distribution channel, an unsafe package-index configuration, or a future compromised release could cause an unreviewed artifact to be installed. Package installation and subsequent import may execute package-controlled code under the privileges of the user or Agent running the Skill.The dependency is used only for documentation examples and could be avoided by using Python's standard-library HTTP facilities. If it remains necessary, immutable dependency locking and artifact verification should be applied.
Attack Path
- An attacker compromises a package release or a package source trusted by the local pip configuration.
- A user or Agent installs this Skill, triggering resolution of the unconstrained
requestsdependency. - Pip downloads and installs the attacker-controlled or compromised artifact because no version or hash is enforced.
- Malicious package logic executes during installation or when the package is imported by the provided Python examples.
- The payload operates with the privileges of the installing user or Agent and may access resources available to that process, potentially including ...[truncated 1126 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
requeststo a specifically reviewed version rather than allowing unconstrained resolution. - Store dependencies in a lock file containing cryptographic hashes and install them with pip's
--require-hashesoption. - Explicitly use a trusted package index and prevent fallback to untrusted or organization-controlled indexes where dependency confusion could occur.
- Add automated dependency and vulnerability scanning while treating scanner results as complementary to, not a replacement for, version and hash pinning.
- Prefer eliminating the installation requirement entirely if the Python example can use
urllib.requestor another suitable Python standard-library module. - Run dependency installation and Skill execution as an unprivileged account with minimal filesystem access, restricted environment-variable exposure, and constrained network permissions.
- Pin
