T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Mutable Third-Party Dependency Without Integrity Pinning
- Content
View full analysis
Vulnerability Details
File Location:
requirements.txt:1
Vulnerability Type: Unpinned third-party dependency and missing package integrity verification
Risk Level: MediumThe installation guidance in
SKILL.md:25also directs users to install Pydantic without selecting an exact reviewed version:text Pydantic v2 (`pip install pydantic` or `uv pip install pydantic`)The dependency declaration is:
text pydantic>=2.0,<3Technical Analysis
The project permits any Pydantic release from version 2.0 up to, but excluding, version 3.0. It provides neither a lock file nor package hashes. Consequently, dependency resolution is mutable: two installations performed at different times can install different code despite using the same project revision.
protocol.pyimports and executes the installed dependency at lines 14 and 123. If a future matching release, package-index response, or distribution artifact were compromised, its code could execute during installation or import. The broad version range also allows an unreviewed but defective release to change input-validation behavior.This is a supply-chain hardening issue. The reviewed project does not itself retrieve code from arbitrary URLs, and exploitation requires compromise or manipulation of the configured package source or a matching upstream release.
Attack Path
- An attacker compromises a matching Pydantic release or manipulates the package source used by the victim.
- The attacker publishes or serves a malicious distribution whose version satisfies
pydantic>=2.0,<3. - A user installs the project dependencies without a lock file or hash verification.
- The package manager resolves and installs the attacker-controlled artifact.
- Malicious package code runs during installation or when
protocol.pyimports Pydantic. - The payload operates with the privileges and environmental access of the installing or ...[truncated 623 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin Pydantic to an exact version that has been reviewed and tested, rather than accepting every release in the major-version range.
- Generate a reproducible lock file containing cryptographic hashes for every direct and transitive dependency.
- Enforce hash verification during installation, such as with
pip install --require-hashes -r requirements.txt. - Use only an explicitly configured, trusted package index and prevent unexpected fallback to untrusted indexes.
- Add automated dependency vulnerability and provenance scanning to the release process.
- Test and deliberately approve dependency upgrades before updating the lock file and hashes.
- Update
SKILL.mdso its installation command uses the same pinned, hash-verified dependency set instead of installing the latest matching Pydantic release.
