T08 · Insecure Dependencies
- Location
scripts/scan-skill.py:67- Finding
Automatic Installation of an Unpinned Third-Party Security Scanner
- Content
View full analysis
Vulnerability Details
File Location:
scripts/scan-skill.py:67-79, 274-278; related installation instruction atSKILL.md:47
Vulnerability Type: Unpinned and automatically installed third-party dependency
Risk Level: MediumVulnerable Code
python def install_agent_audit() -> bool: """Attempt to install agent-audit via pip.""" print("📦 agent-audit not found. Installing...") try: result = subprocess.run( [sys.executable, "-m", "pip", "install", "agent-audit", "--quiet"], capture_output=True, text=True, timeout=120 ) if result.returncode == 0: print("✅ agent-audit installed successfully.") return True else: print(f"❌ Installation failed: {result.stderr.strip()}") return False except subprocess.TimeoutExpired: print("❌ Installation timed out.") return Falsepython # Ensure agent-audit is available if not check_agent_audit_installed(): if not install_agent_audit(): print("\n❌ Cannot proceed without agent-audit.") print(" Install manually: pip install agent-audit") sys.exit(3)The corresponding documented installation command is:
bash pip install agent-audit && agent-audit --versionTechnical Analysis
When the
agent-auditexecutable is unavailable, the wrapper automatically installs the latest package published under that name. The installation does not pin an audited version, verify package hashes, validate the package source, or request explicit approval immediately before modifying the Python environment.This creates a supply-chain trust boundary: the locally reviewed Skill delegates its central operation to code obtained dynamically from a package repository. The effective code can change after this Skill has been reviewed. A compromised publisher account, malic ...[truncated 1842 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove automatic package installation from the scanning path. If the dependency is unavailable, stop with a clear error and require the user to install it explicitly.
- Pin the dependency to a specifically reviewed version rather than installing the latest release.
- Maintain a lock file or requirements file containing cryptographic hashes, and install with pip's
--require-hashesoption. - Use an isolated virtual environment so the scanner cannot modify the user's global or unrelated project environment.
- Display the exact package version and source and obtain explicit user approval before any installation.
- Review and update the Skill metadata to accurately disclose dependency-related network access.
- Consider vendoring a reviewed scanner implementation if licensing and update procedures permit, while maintaining a controlled process for security updates.
