T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned Third-Party Dependency Installation## Vulnerability Details **File Location**: `SKILL.md:5` (also documented in `README.md:82`) **Vulnerability Type**: Unpinned dependency installation from a mutable package source **Risk Level**: Medium ### Vulnerable Code `SKILL.md:5`: ```yaml metadata: {"clawdbot":{"emoji":"✉️","requires":{"bins":["python3"]},"install":[{"id":"pip","kind":"exec","command":"pip3 install requests","label":"Install python requests"}]}} ``` The equivalent installation guidance appears in `README.md:82`: ```bash pip install requests ``` ### Technical Analysis The installation command does not pin `requests` to a reviewed version and does not verify package integrity with cryptographic hashes. Consequently, the installed artifact is determined by mutable package-index state and the user's pip configuration at installation time. Although the package name is legitimate and the project contains no evidence that it intentionally selects a malicious dependency, this installation pattern leaves the runtime supply chain insufficiently constrained. A compromised package release, package index, configured mirror, or pip configuration could cause installation of code that was not part of the audited project. Python packages may execute installation or build-related code and are subsequently imported by `scripts/send_email.py`. Malicious code delivered through this dependency could therefore execute in the Python process under the privileges of the user running the installation or email script. ### Attack Path 1. An attacker compromises a dependency release, the selected Python package index, or a mirror configured in the victim's pip environment. 2. The user or skill framework executes `pip3 install requests` as specified in `SKILL.md`. 3. Because no reviewed version or artifact hash is required, pip accepts the attacker-controlled package artifact selected by dependency resolution. 4. Attacker-controlled code executes during package instal ...[truncated 757 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `requests` and all transitive dependencies to reviewed versions using a lock file. 2. Record cryptographic hashes for every permitted distribution and install with hash verification, such as: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 3. Generate `requirements.txt` through a reproducible dependency-management workflow and commit it to the project. 4. Configure installation to use an explicitly trusted package index rather than inheriting an arbitrary local mirror. 5. Perform dependency vulnerability and provenance checks during releases. 6. Install dependencies inside a dedicated virtual environment under an unprivileged account. 7. Replace the inline `pip3 install requests` metadata command with installation from the reviewed, hash-locked dependency file.
