T08 · Insecure Dependencies
- Location
SKILL.md:188- Finding
Unpinned Third-Party Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:188andSKILL.md:289
Vulnerability Type: Unpinned package installation from a third-party registry
Risk Level: MediumVulnerable Code
At line 188:
python import json5 # pip install json5At line 289:
markdown | json5 | Python library | Optional | `pip install json5` (JSON5-compatible parsing) |Technical Analysis
The Skill instructs the Agent or user to install
json5without specifying an audited version or validating the package artifact with a cryptographic hash. Consequently, the installed code can vary over time even though the reviewed Skill remains unchanged.Package installation and subsequent import can execute third-party code in the local Python environment. If the package registry, maintainer account, release process, or selected package version is compromised, following this instruction could introduce malicious code into the Agent environment.
This is a supply-chain weakness rather than evidence that the current
json5package is malicious. The dependency is optional and only needed for JSON5 compatibility, so installation should not occur during ordinary strict JSON validation.Attack Path
- An attacker compromises the upstream package, its maintainer account, or the relevant package-distribution channel.
- A malicious or otherwise compromised release becomes the version selected by the unpinned
pip install json5command. - The Agent follows the Skill instructions and installs the dependency without version or hash verification.
- Malicious package code executes during installation or when
json5is imported. - The code operates with the privileges of the Agent or user running Python.
Impact Assessment
Successful exploitation could provide code execution within the Agent's Python environment. The resulting scope would be limited by the operating-system account and sandbox controls un ...[truncated 522 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
json5to a specifically reviewed version rather than installing the latest available release:text json5==<reviewed-version> - Store dependencies in a lock file or requirements file with cryptographic hashes, and install them using hash enforcement:
bash python -m pip install --require-hashes -r requirements.txt - Review and record the package source, maintainer, release artifact, license, and transitive dependencies before approving the pinned version.
- Require explicit user confirmation before installing any package; do not install dependencies automatically when the Skill is loaded.
- Install the package in an isolated virtual environment with minimal filesystem and network privileges.
- Keep strict JSON validation on the Python standard library path, and only enable the optional JSON5 dependency when the user explicitly requests JSON5 parsing.
- Update
SKILL.mdso every installation example references the same pinned, verified dependency specification.
- Pin
