T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned Third-Party Python Dependency in the Root Skill## Vulnerability Details **File Location**: `SKILL.md:5`, `SKILL.md:21-24`, and `arxiv_search.py:11-18` **Vulnerability Type**: Unpinned third-party dependency installation **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"openclaw": {"emoji": "📚", "requires": {"bins": ["python"], "pip": ["arxiv"]}, "homepage": "https://arxiv.org"}} ``` ```powershell # Install Python dependency pip install arxiv ``` ```python # Try to import arxiv try: import arxiv from arxiv import Client, Search except ImportError as e: print(f"Error: arxiv module not installed or import failed: {e}") print("Run: pip install arxiv") sys.exit(1) ``` ### Technical Analysis The root skill declares and recommends installation of the `arxiv` package without an exact version, integrity hash, lock file, or trusted package source. Consequently, the dependency resolved at installation time can differ from the version originally reviewed. Python package installation may execute package build or installation logic. The package is also imported by the skill, which executes its module-level initialization code. Therefore, compromise of the package publication account, package repository, distribution artifact, or a transitive dependency could introduce attacker-controlled code into the skill's execution path. This finding does not establish that the current `arxiv` package is malicious. The vulnerability is the mutable and unverifiable dependency resolution process. ### Attack Path 1. An attacker compromises the upstream package, its publisher account, its distribution channel, or a dependency resolved by it. 2. The attacker publishes a malicious or backdoored release under the package name used by the skill. 3. A user or agent installs the dependency using `pip install arxiv`, or the skill platform automatically resolves the unpinned `pip` requirement. 4. The package manager retrieves the attacker-contr ...[truncated 976 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the dependency to an explicitly reviewed version, for example `arxiv==X.Y.Z`. 2. Generate and commit a dependency lock file containing all transitive dependencies. 3. Record cryptographic hashes for every approved distribution artifact and install with pip's `--require-hashes` option. 4. Prefer binary wheels from a controlled or explicitly trusted package repository where practical. 5. Review dependency updates before changing the pinned version or hashes. 6. Install and execute the skill in an isolated virtual environment under a non-privileged account. 7. Add automated software-composition analysis and artifact-integrity verification to the release process. 8. Replace the generic installation instruction with a reproducible command referencing the reviewed lock file and verified hashes.
