T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Unpinned Third-Party SDK Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:17-29
Vulnerability Type: Unpinned third-party dependencies
Risk Level: Mediumyaml install: - id: openai-sdk kind: pip package: openai label: "Install OpenAI SDK (required for openai provider)" optional: true - id: anthropic-sdk kind: pip package: anthropic label: "Install Anthropic SDK (required for claude provider)" optional: true - id: gemini-sdk kind: pip package: google-generativeai label: "Install Gemini SDK (required for gemini provider)" optional: trueTechnical Analysis
The Skill declares three packages without version constraints or integrity hashes. Consequently, installation resolves whichever releases are current at installation time rather than a version reviewed with the Skill. Although these are expected provider SDK names and no malicious dependency was identified in the audited package, this configuration creates a mutable supply-chain boundary.
The same unsafe installation pattern is repeated in the setup commands at
SKILL.md:43-47. A compromised package publisher account, malicious future release, or registry compromise could cause arbitrary package installation or import-time code to run. The dependencies are optional, which limits exposure to users who select and install a provider SDK, but does not eliminate the risk.Attack Path
- An upstream package release or its package registry account is compromised.
- The attacker publishes a malicious release under one of the declared package names.
- A user installs the dependency using the Skill metadata or documented unpinned
pip installcommand. - The package executes attacker-controlled installation or import-time code under the privileges of the user running the Skill.
Impact Assessment
Successful exploitation could provide code execution with the privileges of the installing or ex ...[truncated 304 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every SDK to a reviewed exact version, such as
package==x.y.z. - Maintain a lock file containing resolved transitive dependency versions.
- Require package hashes during installation, for example through a hash-locked requirements file and
pip install --require-hashes. - Install only from a trusted, explicitly configured package index.
- Review dependency changes before updating pins and use automated vulnerability and provenance scanning.
- Document a controlled upgrade procedure rather than resolving the latest release during installation.
- Pin every SDK to a reviewed exact version, such as
