T08 · Insecure Dependencies
- Location
scripts/install.sh:24- Finding
Unpinned Third-Party Dependency Installation
- Content
View full analysis
/dev/null; then echo "" echo "Installing yfinance package..." pip3 install --user yfinance || pip3 install --break-system-packages yfinance fi ``` ### Technical Analysis The installation script retrieves the latest available `yfinance` package and its transitive dependencies without pinning versions or validating package hashes. Consequently, the dependency tree can change after the Skill has been reviewed. Python package installation can execute package build backends or setup logic. A compromised package release, compromised transitive dependency, or distribution-channel attack could therefore result in arbitrary code execution during installation. The fallback to `--break-system-packages` also bypasses Python's externally managed environment protection. Depending on the user's permissions and Python configuration, this may alter a shared or operating-system-managed Python environment rather than keeping the dependency isolated to the Skill. ### Attack Path 1. An attacker compromises a future `yfinance` release, one of its transitive dependencies, or the relevant package distribution channel. 2. A user runs `scripts/install.sh` when `yfinance` is not already importable. 3. The unversioned `pip3 install` command selects the compromised release. 4. Malicious installation or runtime code executes with the privileges of the user running the installer. 5. The malicious dependency can access resources available to that account, including the locally stored portfolio and alert files. ### Impact Assessment Successful exploitation provides code execution under the installing user's account. This may permit access to the user's files, portfolio records, network credentials available to the process, ...[truncated 239 chars]- Remediation
View remediation
