T08 · Insecure Dependencies
- Location
SKILL.md:44- Finding
Unpinned Third-Party Python Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 4 and 44
Vulnerability Type: Unpinned third-party dependencies
Risk Level: MediumComplete Code Snippet:
yaml metadata: {"openclaw": {"requires": {"python": ["pyperclip", "Pillow"]}, "install": []}}bash pip install pyperclip PillowTechnical Analysis
The skill declares and instructs users to install
pyperclipandPillowwithout pinning reviewed versions or verifying package hashes. Consequently, the command resolves whichever package versions the configured Python Package Index supplies at installation time.This creates supply-chain exposure because the installed code can change after the skill has been reviewed. A compromised package release, compromised package-maintainer account, malicious package-index configuration, or future vulnerable release could introduce attacker-controlled code. The audit did not identify evidence that the named packages are currently malicious; the issue is the absence of dependency integrity and version controls.
Attack Path
- An attacker compromises an upstream dependency release, its publisher account, or a package index used by the victim.
- A user follows the documented
pip install pyperclip Pillowinstruction. pipresolves and downloads the attacker-controlled or otherwise unsafe release because no exact versions or hashes are specified.- Malicious installation hooks or imported package code execute under the account running the installation or skill.
- The payload can access resources available to that account, potentially including clipboard contents and user-accessible files.
Impact Assessment
Successful exploitation could execute arbitrary code with the privileges of the user or service account performing the installation or running the skill. The affected scope may include clipboard data, user-accessible files, environment variables, and any applications ...[truncated 213 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin each dependency to an explicitly reviewed version, for example through a version-controlled requirements file.
- Generate and verify cryptographic hashes for all packages and transitive dependencies, and install with
pip --require-hashes. - Use a lock file produced by a dependency-management tool so transitive versions are reproducible.
- Install only from a trusted, explicitly configured package index and disable unintended additional indexes.
- Automate vulnerability and provenance scanning for pinned dependencies, and update them through a reviewed process.
- Perform installation in an isolated virtual environment under a non-administrative account.
- Keep the frontmatter dependency declaration synchronized with the locked dependency manifest.
