T08 · Insecure Dependencies
- Location
SKILL.md:10- Finding
Unpinned Third-Party Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:10-18
Related Locations:SKILL.md:46-53,SKILL.md:63-64,README.md:31-34,README.md:50-52
Vulnerability Type: Unpinned and mutable third-party dependency
Risk Level: MediumVulnerable Code
yaml "requires": { "bins": ["python"] }, "install": [ { "id": "pywinauto", "kind": "pip", "package": "pywinauto", "label": "Install pywinauto (pip)", }, ],The associated installation instructions execute:
bash pip install pywinautoThe documented offline alternative is:
bash cd dependencies pip install --no-index --find-links=. pywinautoHowever, the audited project contains only
README.mdandSKILL.md; the documenteddependenciesdirectory and wheel files are not present.Technical Analysis
The installation metadata and documentation identify the dependency only by package name, without an exact version, cryptographic hash, or lock file. As a result, installation resolves whichever release the configured Python package index considers current at execution time. The installed artifact can therefore differ from the artifact that existed when this skill was reviewed.
Python package installation is a code-execution boundary. A compromised package-index account, malicious package release, compromised distribution artifact, or unexpected future dependency change could introduce code that executes during installation or when imported. This risk is amplified because the dependency is intended to control arbitrary Windows application interfaces.
The offline installation instructions do not mitigate the issue in the audited artifact because the claimed local wheel directory is absent. Even if wheels were later supplied, installing by package name without requiring hashes would not independently establish their integrity.
Attack Path
- An attacker compromise ...[truncated 1111 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an explicitly reviewed version, for example
pywinauto==0.6.9. - Generate a lock file containing all transitive dependencies and exact versions.
- Require cryptographic hashes during installation, such as with a hash-pinned requirements file and
pip install --require-hashes. - Obtain packages only from an explicitly configured trusted index over TLS.
- If offline installation is advertised, include the reviewed wheel files in the package and publish SHA-256 hashes for each artifact.
- Ensure the wheel versions and Python ABI tags match the documented supported Python versions.
- Install dependencies inside a dedicated virtual environment under a standard user account.
- Add automated dependency vulnerability and integrity scanning to the release process.
- Remove the offline-installation instructions if the corresponding verified artifacts are not distributed with the project.
- Pin every direct dependency to an explicitly reviewed version, for example
