T08 · Insecure Dependencies
- Location
SKILL.md:29- Finding
Unpinned Third-Party Dependencies Create a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:29-41andSKILL.md:205
Vulnerability Type: Unpinned package installation
Risk Level: MediumVulnerable Code
yaml requires: bins: ["python3", "pip"] python_pkgs: ["python-docx", "lxml", "markitdown"] install: - id: "python-docx" kind: "pip" package: "python-docx" - id: "lxml" kind: "pip" package: "lxml" - id: "markitdown" kind: "pip" package: "markitdown"bash pip install python-docx lxml markitdownTechnical Analysis
The Skill installs
python-docx,lxml, andmarkitdownfrom the package index without specifying reviewed versions or cryptographic hashes. Dependency resolution will therefore select whichever versions satisfy the unconstrained package names at installation time.No evidence indicates that the currently named packages are malicious. However, the dependency configuration does not guarantee that the packages installed in the future are the same artifacts that were reviewed. A compromised package release, package-index account, mirror, or dependency could introduce arbitrary installation-time or import-time code.
The same unsafe installation recommendation is repeated in
scripts/generate_datadict.py:9andscripts/generate_datadict.py:88.Attack Path
- An attacker compromises a listed package, one of its transitive dependencies, the package publisher account, or a package mirror used by the environment.
- The attacker publishes a malicious version that remains compatible with the unconstrained installation request.
- A user or Agent installs the Skill dependencies with the documented
pip installcommand. - Package installation hooks or subsequently imported package code execute the malicious payload.
- The payload receives the permissions of the account or environment performing installation or running the Skill.
Impact Assessment
Su ...[truncated 466 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a specifically reviewed version, for example through an exact-version requirements file.
- Generate a lock file that also fixes all transitive dependency versions.
- Require cryptographic hashes for downloaded distributions, such as by using
pip install --require-hashes. - Download dependencies only from an explicitly configured, trusted package repository or an internally controlled mirror.
- Review and update locked dependencies through a controlled process that includes vulnerability and provenance checks.
- Install and execute the Skill in an isolated virtual environment or container under a non-privileged account.
- Keep dependency declarations in
SKILL.mdand installation guidance in the scripts synchronized with the same locked dependency manifest.
