T08 · Insecure Dependencies
- Location
scripts/pyproject.toml:7- Finding
Unpinned Third-Party Dependencies Without a Committed Lockfile
- Content
View full analysis
=8.1", "httpx>=0.27", "rich>=13.0", "pyyaml>=6.0", "brotli>=1.2.0", ] ``` The repository contains no dependency lockfile, while `SKILL.md` instructs users to execute `uv sync` when dependencies are missing. ### Technical Analysis All runtime dependencies use open-ended lower-bound constraints. Consequently, dependency resolution can install future package versions that were not present or reviewed when the Skill was audited. This does not establish that any current dependency is malicious. However, it creates a supply-chain trust gap: if a permitted package release or package-index account is compromised, a later invocation of `uv sync` may resolve the compromised release automatically. Python package installation or subsequent imports may execute package-controlled build or runtime code with the permissions of the invoking process. The issue is classified as insecure dependency management rather than remote payload execution because the project does not explicitly download and execute a remote script. The flagged documentation in `dev_docs/STEPS.md` also does not contain `curl | bash`; its curl examples either retrieve API data or pipe response data to a local Python parser. ### Attack Path 1. An attacker compromises the publishing account, distribution artifacts, or release process of one of the allowed dependencies. 2. The attacker publishes a malicious version that still satisfies the corresponding open-ended constraint. 3. A user or Agent follows the project instructions and runs `uv sync`. 4. Because no reviewed lockfile constrains resolution, the package manager selects the malicious release. 5. Package-controlled code executes during installation, import, or normal CLI oper ...[truncated 1019 chars]- Remediation
View remediation
