T08 · Insecure Dependencies
- Location
SKILL.md:14- Finding
Unpinned Runtime Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 14
Vulnerability Type: Unpinned third-party dependencies resolved and installed at runtime
Risk Level: MediumVulnerable Code
bash uv run --with yfinance --with mplfinance --with pandas {baseDir}/scripts/generate_chart.py --ticker "NVDA" --period "6mo" --interval "1d" --style "yahoo" --title "NVIDIA Daily Chart"Technical Analysis
The documented execution command instructs
uvto resolve and installyfinance,mplfinance, andpandasat runtime without version constraints or integrity hashes. The code that ultimately executes is therefore not fully represented by the audited project: package versions and transitive dependencies may change between invocations.This creates a supply-chain exposure. If a package release, transitive dependency, configured package index, or dependency resolution source is compromised, malicious package installation or import-time code could execute as part of an otherwise legitimate chart-generation request.
The audit found no evidence that the project intentionally selects a typosquatted package or untrusted index. The issue is the lack of reproducible, integrity-verified dependency resolution.
Attack Path
- An attacker compromises a named dependency, one of its transitive dependencies, or a package source used by
uv. - The attacker publishes or substitutes a malicious version that remains compatible with unconstrained resolution.
- A user or Agent runs the command documented in
SKILL.md. uvresolves and installs the attacker-controlled package version.- Malicious code executes during package installation, module import, or normal library invocation.
- That code operates with the permissions and environmental access of the process running the Skill.
Impact Assessment
Successful exploitation could permit arbitrary code execution with the invoking process's privileges. Depending on the runtime environment, this ma ...[truncated 432 chars]
- An attacker compromises a named dependency, one of its transitive dependencies, or a package source used by
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an audited exact version rather than resolving the latest available release:
bash uv run --with 'yfinance==AUDITED_VERSION' --with 'mplfinance==AUDITED_VERSION' --with 'pandas==AUDITED_VERSION' ... - Prefer a committed
pyproject.tomlanduv.lockso direct and transitive dependency versions are reproducible. - Require integrity verification through package hashes or an equivalent trusted artifact-verification mechanism.
- Retrieve packages only from an explicitly configured, trusted package index; prevent fallback to untrusted or user-controlled indexes.
- Build and scan a pre-provisioned environment instead of installing dependencies whenever the Skill is invoked.
- Run the chart generator with least privilege in a sandbox that restricts filesystem access, environment-variable exposure, and unnecessary outbound network access.
- Establish dependency update review and vulnerability-scanning procedures before regenerating the lockfile or approving newer releases.
- Pin every direct dependency to an audited exact version rather than resolving the latest available release:
