T08 · Insecure Dependencies
Error
- Location
- SKILL.md:23
- Finding
- Unpinned Third-Party Dependency Allows Mutable Upstream Code Installation## Vulnerability Details **File Location**: `SKILL.md:23-30` **Vulnerability Type**: Supply-chain risk from an unpinned dependency **Risk Level**: High **Vulnerable Code:** ```markdown 1. Install the API: ```bash # Install from GitHub (required for bottle feeding support until next PyPI release) pip install git+https://github.com/Woyken/py-huckleberry-api.git # or with uv: uv pip install git+https://github.com/Woyken/py-huckleberry-api.git ``` ``` The package metadata also declares the dependency without an exact version: ```yaml requires: bins: ["python3"] packages: ["huckleberry-api"] install: - id: pip-huckleberry kind: pip package: huckleberry-api label: Install huckleberry-api (pip) ``` ### Technical Analysis The installation commands retrieve the current content of a remote Git repository without specifying a reviewed release tag or immutable commit hash. Consequently, the code installed by users can change after this Skill has been audited. The metadata installation path similarly does not pin an exact package version. Python package installation may execute build backend logic, while installed package code executes when imported by `scripts/hb.py`. The dependency is especially sensitive because it receives the user's Huckleberry email and password and provides the authenticated Firebase/Firestore client. The documentation and metadata also use different dependency sources: the documentation installs directly from GitHub, while the metadata names a package resolved through the configured package index. This creates non-reproducible installations and makes it difficult to determine which implementation has been reviewed. No evidence establishes that the current upstream project is malicious. The vulnerability is that the Skill trusts mutable, externally controlled package content without version or integrity controls. ### Attack Path 1. An attacker c ...[truncated 1349 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the Git dependency to a reviewed immutable commit: ```bash pip install "huckleberry-api @ git+https://github.com/Woyken/py-huckleberry-api.git@FULL_COMMIT_SHA" ``` 2. Prefer a reviewed, fixed release from a trusted package index when the required functionality is available. 3. Pin the exact dependency version in Skill metadata rather than using the unqualified `huckleberry-api` name. 4. Use a lock file or constraints file to pin transitive dependencies. 5. Require package hashes where the installation mechanism supports them, such as `pip install --require-hashes`. 6. Ensure the metadata and documentation install the same reviewed artifact. 7. Perform dependency vulnerability and provenance checks in CI, and update pins only after reviewing upstream changes. 8. Install dependencies in an isolated virtual environment under a non-privileged account.
