T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned Third-Party Dependency Installation with System Package Safeguards Bypassed<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:5`, `SKILL.md:25-38`, and `SKILL.md:231-239` **Vulnerability Type**: Unpinned third-party dependency and unsafe installation configuration **Risk Level**: Medium ### Vulnerable Code The Skill metadata declares the `holidays` package without a version constraint: ```yaml metadata: {"clawdbot":{"emoji":"🗓️","requires":{"bins":["python","pip"]}, "install":[{"id":"pip","kind":"pip","package":"holidays","label":"Install holidays package"}]}} ``` The primary installation instructions likewise install the latest available release and recommend bypassing system package protections: ```markdown ## Installation **IMPORTANT: Always use a virtual environment or `--break-system-packages` flag.** ```bash pip install holidays --break-system-packages ``` **For production use, pin to a specific version:** ```bash pip install holidays==0.58 --break-system-packages ``` ``` The dependency and security guidance repeat the unsafe installation option: ```markdown ## Dependencies - **Python:** 3.10+ - **Package:** `holidays` (PyPI). Install with: `pip install holidays --break-system-packages` - **No external system dependencies required** ## Security Considerations 1. **Package installation:** Use `--break-system-packages` flag (required in this environment) and consider pinning to a specific version ``` ### Technical Analysis The installation metadata and default commands resolve `holidays` from PyPI without an exact version or cryptographic hash. The effective package contents can therefore change after this Skill has been reviewed. A compromised maintainer account, compromised package distribution infrastructure, or malicious future release could cause the Skill to install code that was not included in the audited artifact. The documented production example pins version `0.58`, but this does not mitigate the default metadata installation or the primary unpinned command. It also lacks hash verification ...[truncated 2477 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the dependency to an exact, reviewed version in the Skill metadata rather than declaring only `holidays`. 2. Replace every unpinned installation example with an exact version constraint. 3. Record cryptographic hashes for all accepted distribution artifacts and install with `pip --require-hashes` from a reviewed requirements or lock file. 4. Install the dependency inside a dedicated virtual environment. Do not present `--break-system-packages` as an alternative to isolation. 5. Remove `--break-system-packages` from the metadata, installation examples, dependency section, and security guidance. 6. Run package installation and Skill execution as an unprivileged account with only the filesystem and network permissions required for holiday calculations. 7. Establish a dependency update process that reviews release changes, refreshes hashes, and reruns security checks before changing the pinned version. 8. Where supported by the Skill platform, use an internally controlled package repository or artifact mirror containing only reviewed distributions. A hardened installation flow should resemble: ```bash python -m venv .venv . .venv/bin/activate python -m pip install --require-hashes -r requirements.txt ``` The corresponding `requirements.txt` should pin the reviewed version and include hashes for every permitted artifact. ]]>
