T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned PyYAML Dependency Allows Unreviewed Supply-Chain Changes## Vulnerability Details **File Location**: `SKILL.md`, line 5 **Vulnerability Type**: Unpinned third-party dependency **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"clawdbot":{"emoji":"🛡️","requires":{"bins":["python3"],"python_deps":["PyYAML"]},"install":[{"id":"pip","kind":"pip","packages":["PyYAML"],"label":"Install PyYAML (pip)"}]}} ``` ### Technical Analysis The installation metadata specifies `PyYAML` without an exact version constraint or an integrity hash. Consequently, installation results depend on whichever release the package resolver selects at installation time rather than the dependency version reviewed with this artifact. The project contains no dependency lockfile, hash manifest, vendored package, or explicit trusted-index configuration. A future compromised, malicious, or incompatible package release could therefore alter installation-time or runtime behavior without any corresponding change to this skill package. The reviewed artifact does not contain evidence that PyYAML is currently malicious. The issue is the mutable and unverifiable dependency resolution process. ### Attack Path 1. An attacker compromises the upstream package, its maintainer account, publishing credentials, or the package index used during installation. 2. The attacker publishes a malicious release that satisfies the unrestricted `PyYAML` dependency declaration. 3. A user installs or reinstalls the skill after that release becomes available. 4. `pip` resolves and downloads the attacker-controlled release because no exact version or integrity hash is required. 5. Malicious package installation hooks or imported runtime code execute with the privileges of the user or service performing the installation or running the skill. ### Impact Assessment Successful exploitation could execute arbitrary code with the privileges of the account installing or running the skill. Depending on that account's access, this may expose API keys, configuration files, u ...[truncated 332 chars]
- Remediation
- ## Remediation Suggestions 1. Pin PyYAML to a specific, reviewed version, for example by using an exact `==` constraint supported by the skill packaging system. 2. Maintain a lockfile or requirements file containing cryptographic hashes and install with hash verification, such as `pip --require-hashes`. 3. Configure installation to use an explicitly trusted package index rather than inheriting an uncontrolled index or mirror. 4. Review dependency updates before changing the pin, including release provenance, known vulnerabilities, and package integrity. 5. Generate and retain a software bill of materials for released skill versions. 6. Add automated dependency scanning and controlled update tooling to detect vulnerable releases without silently adopting new versions.
