T08 · Insecure Dependencies
- Location
SKILL.md:334- Finding
Unpinned Third-Party Dependency Installation Guidance
- Content
View full analysis
Vulnerability Details
File Locations:
SKILL.md:334-338scripts/search_conferences.py:24-27scripts/search_presentations.py:25-28scripts/search_chained.py:27-30
Vulnerability Type: T08: Insecure Dependencies
Risk Level: LowVulnerable Code
SKILL.md:334-338:markdown ## Dependencies - Python 3.8+ - `requests` library (`pip install requests`) - Environment variable `NOAH_API_TOKEN` — register at [noah.bio](https://noah.bio) to obtain your API key.scripts/search_conferences.py:24-27:python try: import requests except ImportError: print("[ERROR] Missing dependency: requests\nInstall it with: pip install requests", file=sys.stderr) sys.exit(1)scripts/search_presentations.py:25-28:python try: import requests except ImportError: print("[ERROR] Missing dependency: requests\nInstall it with: pip install requests", file=sys.stderr) sys.exit(1)scripts/search_chained.py:27-30:python try: import requests except ImportError: print("[ERROR] Missing dependency: requests\nInstall it with: pip install requests", file=sys.stderr) sys.exit(1)Technical Analysis
The project instructs users to install
requestsusing an unversionedpip install requestscommand. It does not provide a dependency lock file, an exact reviewed version, package hashes, a trusted package-index declaration, or isolated-environment guidance.Consequently, dependency resolution is mutable: the package and transitive dependency versions installed depend on the configured package index and the state of that index at installation time. This weakens build reproducibility and supply-chain integrity. Although
requestsis a well-known package and the scripts do not install it automatically, users are directly prompted to run the unsafe installation command when the import fails.The guidance also conflicts with the statement in
SKILL.md:348that the Skill does not require runtime ...[truncated 1775 chars]- Remediation
View remediation
Remediation Suggestions
- Add a reviewed dependency manifest with an exact version, for example:
text requests==2.32.5- Generate and verify cryptographic hashes for the dependency and its transitive dependencies, then install with:
bash python -m pip install --require-hashes -r requirements.txt-
Commit a lock file generated by a dependency-management tool and update it through a controlled review process.
-
Recommend installation in an isolated virtual environment rather than a shared or system Python environment:
bash python3 -m venv .venv . .venv/bin/activate python -m pip install --require-hashes -r requirements.txt-
Document the trusted package index explicitly and avoid unreviewed alternate indexes or
--extra-index-urlconfigurations. -
Replace the runtime error messages with instructions that reference the reviewed requirements file rather than the unpinned package name.
-
Correct the packaging statement in
SKILL.mdso it accurately states whether dependency installation is required. -
Use an automated dependency-update process that verifies hashes, runs tests, and requires review before accepting new versions.
