T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Unpinned Third-Party Dependencies and Mutable Container Images
- Content
View full analysis
Vulnerability Details
File Location:
requirements.txt:1-4;README.md:40-41;SKILL.md:196-202, 215-219, 455-472
Vulnerability Type: Supply-chain exposure through unpinned dependencies and mutable artifacts
Risk Level: MediumVulnerable Code
requirements.txt:1-4:text # Core dependencies requests>=2.28.0 numpy>=1.20.0 pyyaml>=6.0README.md:40-41:bash # 1. Install dependencies pip3 install aiohttp pyyamlRelevant installation commands in
SKILL.mdinclude:bash pip install -r requirements.txt docker pull pengong101/searxng-auto-proxy:latest pip install searxng-auto-proxyTechnical Analysis
The dependency file permits any version at or above the specified minimum. It does not provide exact versions, integrity hashes, or a lock file. In addition,
adapter.pyimportsaiohttp, butaiohttpis absent fromrequirements.txt. The documentation instead instructs users to install it directly without a version constraint.The Skill documentation also recommends pulling a personal container image using the mutable
latesttag. Consequently, the executable artifact received by a user can change after this audited package has been reviewed.This does not prove that any current dependency or container is malicious. However, it creates a supply-chain execution path through compromised publisher accounts, malicious future releases, dependency takeover, or incompatible upstream updates.
Attack Path
- An attacker compromises an upstream package publisher, package registry account, or container registry account.
- The attacker publishes a malicious version satisfying a broad requirement such as
pyyaml>=6.0, or replaces the image referenced by thelatesttag. - A user follows the documented
pip installordocker pullinstructions. - The package installation process or downloaded container executes attacker-controlled code.
- The ma ...[truncated 755 chars]
- Remediation
View remediation
Remediation Suggestions
- Add every runtime dependency, including
aiohttp, to a single authoritative dependency file. - Pin dependencies to exact audited versions rather than minimum versions.
- Generate and verify cryptographic hashes, for example with
pip-compile --generate-hashes, and install withpip --require-hashes. - Maintain a reproducible lock file and update it through a reviewed dependency-upgrade process.
- Pin container images by immutable digest, such as
image@sha256:..., instead of usinglatest. - Verify the ownership and provenance of PyPI and container registry artifacts.
- Run dependency vulnerability and software-bill-of-materials scans in CI.
- Install into an isolated virtual environment and run the adapter as a dedicated unprivileged user.
- Avoid presenting unaudited remote packages or images as interchangeable with the bundled source.
- Add every runtime dependency, including
