T08 · Insecure Dependencies
- Location
SKILL.md:13- Finding
Unpinned System-Wide Python Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 13–20
Vulnerability Type: Unpinned third-party dependency installed into the system Python environment
Risk Level: MediumComplete Code Snippet:
json "requires": { "bins": ["skill-scanner"] }, "install": [ { "id": "pip", "kind": "run", "label": "Install Cisco AI skill-scanner (pip)", "run": "pip install cisco-ai-skill-scanner --break-system-packages", }, ],Technical Analysis
The installation command retrieves
cisco-ai-skill-scannerwithout pinning an exact reviewed version or verifying an integrity hash. Consequently, the code installed depends on whichever package release and transitive dependencies the package index resolves at installation time, rather than the artifact reviewed during this audit.The
--break-system-packagesoption bypasses Python's externally managed environment protection. This permits pip to modify the system Python environment, increasing the potential scope of dependency conflicts and package replacement.There is no evidence in the reviewed project that the named package is currently malicious. The vulnerability is the unsafe, mutable supply-chain installation process.
Attack Path
- An attacker compromises the upstream package, a maintainer account, the distribution channel, or one of the unpinned transitive dependencies.
- The attacker publishes a malicious or compromised release that remains compatible with the unconstrained package specification.
- A user installs this Skill and the installation hook executes:
bash pip install cisco-ai-skill-scanner --break-system-packages - Pip resolves and installs the attacker-controlled release into the system Python environment.
- Package installation logic may execute during installation, and the resulting
skill-scannercommand can execute attacker-controlled code when `scripts/sc ...[truncated 857 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
cisco-ai-skill-scannerto an exact, reviewed version rather than installing the latest available release:bash python -m pip install 'cisco-ai-skill-scanner==<reviewed-version>' - Use a lock file or hash-verified requirements file that pins all transitive dependencies:
bash python -m pip install --require-hashes -r requirements.txt - Publish and verify expected package hashes through a trusted release process.
- Install the CLI in an isolated virtual environment or through
pipx, rather than modifying system Python. - Remove
--break-system-packages. - Execute installation with an unprivileged account and avoid
sudoor root installation. - Periodically review pinned versions and apply updates only after source, provenance, and integrity validation.
- Pin
