T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Unpinned Runtime Dependency Installation Creates Supply-Chain Risk
- Content
View full analysis
=2.25.0", ] ``` ### Technical Analysis The documented execution commands instruct `uv` to resolve and install `requests` without an exact version or a cryptographically verified lock file. The project constraint in `pyproject.toml` similarly allows any release at or above version 2.25.0. Consequently, the code reviewed during the audit is not sufficient to determine the exact dependency code that will execute in a future installation. If a newly resolved direct or transitive dependency is compromised, malicious import-time code could execute before the Skill performs its intended Airbnb search. This is a supply-chain weakness rather than evidence that the current `requests` package is malicious. ### Attack Path 1. An attacker compromises a future release of a dependency accepted by the unconstrained version range, or compromises one of its transitive dependencies. 2. A user or agent invokes the documented `uv run --with requests` command in an environment where dependency resolution is required. 3. `uv` downloads the currently selected package versions from the configured package registry. 4. The standalone script imports `airbnb_search.cli`, which imports `airbnb_search.search`. 5. `airbnb_search.search` imports `requests`, causing any malicious package initialization co ...[truncated 662 chars]- Remediation
View remediation
=2.25.0` for reproducible Skill execution. 4. Configure installation to require locked versions and fail if the lock file would be modified. 5. Where supported, verify downloaded artifacts using trusted hashes. 6. Run the Skill in a sandbox with minimal filesystem access, no unnecessary credentials, and restricted outbound network access. 7. Establish a dependency update process that includes vulnerability scanning and explicit review before lock-file changes are accepted. ]]>
