T08 · Insecure Dependencies
- Location
README.md:8- Finding
Unpinned Third-Party Package Installation Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
README.md:8,README.md:101-103;SKILL.md:52,SKILL.md:77;examples/geopackage_example.md:118
Vulnerability Type: Unpinned and unverifiable third-party dependencies
Risk Level: MediumVulnerable Code Snippets
README.md:8:bash npx clawhub install epigrass-creatorREADME.md:101-103:bash pip install geopandas # Recommended # or pip install fiona # Lightweight alternativeSKILL.md:52:text Requirements: `pip install geopandas` (or fiona as fallback)SKILL.md:77:text - epigrass (`pip install epigrass`)examples/geopackage_example.md:118:bash pip install geopandasTechnical Analysis
The documentation instructs users to install and potentially execute third-party packages using mutable package names. It does not pin reviewed versions, verify package hashes, provide a lockfile, or explicitly constrain downloads to an authenticated trusted package index.
The
npxcommand is particularly sensitive because it can download and execute package code in one operation. Python package installation can also execute build-system code or install packages that execute code when imported. The application subsequently importsgeopandasorfionaat runtime inwizard.py:29-43.There is no evidence in the audited project that the named packages are currently malicious. The vulnerability is the absence of controls that ensure users receive the same reviewed dependency versions over time.
Attack Path
- An attacker compromises a referenced package, its publisher account, or the package registry delivery path.
- Alternatively, a future malicious release is published under one of the mutable package names.
- A user follows the documented
npxorpip installcommand. - The package manager retrieves the attacker-controlled release because no version or hash is fixed.
...[truncated 716 chars]
- Remediation
View remediation
Remediation Suggestions
- Publish a reviewed dependency manifest with exact versions rather than mutable package names.
- Use a hash-locked requirements file and recommend installation with:
bash python3 -m pip install --require-hashes -r requirements.txt - Pin the
clawhubinstaller to a reviewed version instead of relying on the latest package selected bynpx. - Explicitly specify the expected trusted registry and verified package publisher.
- Use a lockfile generated from reviewed dependency versions, including transitive dependencies where practical.
- Document installation inside an isolated virtual environment without administrator privileges.
- Add automated dependency integrity, provenance, and vulnerability checks to the release process.
