T08 · Insecure Dependencies
- Location
SKILL.md:43- Finding
Unpinned Third-Party Dependencies Allow Unreviewed Supply-Chain Changes
- Content
View full analysis
Vulnerability Details
File Locations:
SKILL.md:43-47,skill.json:7
Vulnerability Type: Unpinned third-party dependencies
Risk Level: LowVulnerable Code
SKILL.md:43-47:bash pip install akshare pandas numpy scipyskill.json:7:json "dependencies": ["akshare", "pandas", "numpy", "scipy"],Technical Analysis
The project instructs users to install four Python packages without specifying reviewed versions or integrity hashes. The metadata similarly declares only package names. Consequently, package resolution depends on the versions available from the configured package index at installation time.
Python package installation can execute package-controlled build or installation logic. If a future release or transitive dependency is compromised, users may install and execute that code without any change to this project. The absence of a lock file and hashes also prevents reliable verification that an installation uses the dependency artifacts reviewed by the project maintainer.
No evidence was found that the currently named packages are malicious. This finding concerns the project's reproducibility and supply-chain controls rather than a confirmed malicious dependency.
Attack Path
- An attacker compromises a declared dependency, one of its transitive dependencies, or the package-index account used to publish it.
- The attacker publishes a malicious release that remains compatible with unconstrained dependency resolution.
- A user follows the documented
pip installcommand or an agent processes the dependency list. - The package manager resolves and downloads the compromised release.
- Malicious package build or installation logic executes with the privileges of the user performing the installation.
- The malicious package may subsequently execute again when imported by
risk_assessment.py.
This path requires compromise of the package supply chain or pa ...[truncated 575 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a reviewed version instead of allowing unrestricted resolution.
- Generate a lock file that records all transitive dependencies.
- Require cryptographic hashes for downloaded artifacts, such as by using a hash-locked requirements file and
pip install --require-hashes. - Install packages only from an explicitly configured, trusted package index or an internally controlled artifact repository.
- Run dependency vulnerability and provenance checks in CI before publishing the Skill.
- Review and update pinned versions through a controlled process rather than allowing automatic resolution during installation.
- Perform installation in an isolated, least-privileged virtual environment or container and avoid installing dependencies as an administrator.
- Keep
skill.json, installation documentation, and the lock file synchronized so all installation paths enforce the same constraints.
