T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:7
- Finding
- Unpinned Third-Party Dependencies in Skill Installation Metadata<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 7 and 21-25 **Vulnerability Type**: Unpinned third-party dependencies and non-reproducible installation **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"openclaw": {"emoji": "🎵", "requires": {"bins": ["python3"]}, "install": [{"type": "uv", "packages": ["Pillow", "moviepy"]}]}} ``` ```markdown Before using, ensure dependencies are installed: ```bash pip3 install Pillow moviepy ``` ``` ### Technical Analysis The Skill installation metadata and setup instructions install `Pillow` and `moviepy` without exact versions, cryptographic hashes, or a reviewed lockfile. Consequently, the installed code is resolved from mutable package-index state at installation time rather than from a reproducible set of audited artifacts. The dependency names are consistent with the Skill's legitimate image and video processing functionality, and no evidence indicates that the currently named packages are malicious. However, the installation configuration does not protect users if a package publishing account, package index, distribution artifact, or future dependency release is compromised. Python packages may execute code during installation or when imported. The effective code executed by the Skill can therefore change after the Skill itself has been reviewed. ### Attack Path 1. An attacker compromises a dependency publisher account, upstream release process, or configured Python package index. 2. The attacker publishes a malicious or backdoored release under one of the unpinned package names. 3. A user installs the Skill or follows the documented `pip3 install Pillow moviepy` command. 4. The package resolver selects the attacker-controlled release because no reviewed version or hash is enforced. 5. Malicious code executes during package installation or when the Skill imports the affected dependency. 6. The code runs with the privileges and filesystem/network access of the user or servi ...[truncated 674 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin every direct dependency to an exact, reviewed version, for example: ```yaml "packages": ["Pillow==<reviewed-version>", "moviepy==<reviewed-version>"] ``` 2. Maintain a lockfile that includes resolved transitive dependencies. 3. Require cryptographic hashes for downloaded distributions, such as through a hash-pinned requirements file and `pip --require-hashes`. 4. Use an explicitly trusted package index and prevent unintended fallback to untrusted indexes. 5. Prefer reviewed wheel artifacts and record their hashes and provenance. 6. Run dependency installation and media processing as a non-privileged user in an isolated environment. 7. Establish a controlled dependency update process that includes vulnerability scanning, provenance verification, testing, and review before changing pinned versions. ]]>
