T08 · Insecure Dependencies
- Location
setup.sh:51- Finding
Unpinned Third-Party Dependencies Create a Supply-Chain Execution Risk
- Content
View full analysis
/dev/null && info "Playwright pip installed" || fail "Playwright pip install failed" ``` ```bash python3 -m pip install --user pillow 2>/dev/null || fail "Pillow install failed (try: python3 -m pip install --user pillow)" ``` ```bash python3 -m pip install --user mistune 2>/dev/null || fail "Mistune install failed" ``` ```bash python3 -m pip install --user 'nh3>=0.2.18' 2>/dev/null || fail "nh3 install failed" ``` ```bash npm install --prefix "$VENDOR_DIR" @mermaid-js/mermaid-cli 2>/dev/null && info "Mermaid CLI installed" || warn "Mermaid CLI install failed, diagrams will show as code" ``` ```bash npm install --prefix "$VENDOR_DIR" katex 2>/dev/null && info "KaTeX CLI installed" || warn "KaTeX CLI install failed, LaTeX will show as raw text" ``` ### Technical Analysis The setup process downloads pip and npm packages without exact version constraints, package hashes, or an enforced lockfile. The constraint `nh3>=0.2.18` establishes only a minimum version and therefore does not provide reproducible dependency resolution. Consequently, the code installed by the same reviewed version of this skill can change over time. The trust boundary extends beyond the named packages to their transitive dependencies, package registries, mirrors, and package lifecycle behavior. In particular, npm dependencies may execute installation lifecycle scripts under the identity of the user running `setup.sh`. This is a supply-chain weakness rather than evidence that the currently named packages are malicious. Exploitation requires compromise or malicious publication of an accepted package, transitive dependency, registry response, or configured mirror. ### Attack Path 1 ...[truncated 1192 chars]- Remediation
View remediation
