T08 · Insecure Dependencies
- Location
SKILL.md:49- Finding
Unpinned Runtime Package Download and Execution Through npx
- Content
View full analysis
/scripts npx tsx x-search.ts search "" [options] ``` ``` `README.md:74-78`: ```bash cd skills/x-research-but-cheaper/scripts # Search (sorted by likes, auto-filters retweets) npx tsx x-search.ts search "Seedance 2.0" --sort likes --limit 10 ``` `package.json:1-13`: ```json { "name": "x-research-but-cheaper", "version": "1.0.0", "description": "X/Twitter research skill for OpenClaw and Claude Code — powered by TwitterAPI.io", "license": "MIT", "type": "module", "scripts": { "search": "tsx scripts/x-search.ts search", "profile": "tsx scripts/x-search.ts profile", "tweet": "tsx scripts/x-search.ts tweet", "thread": "tsx scripts/x-search.ts thread" } } ``` ### Technical Analysis The documented execution path invokes `tsx` through `npx`, but `package.json` does not declare `tsx` as a dependency or pin an audited version. No lockfile is included. When a locally installed `tsx` binary is unavailable, `npx` can resolve and download the current package from the configured npm registry and then execute it. Consequently, the code reviewed in this Skill is not necessarily the complete code that runs. The effective runtime can change after the Skill has been audited without any modification to the repository. This creates a supply-chain trust boundary around a mutable third-party package. A compromised npm release, maintainer account, registry configuration, package-resolution path, or future malicious version could result in arbitrary code execution. ### Attack Path 1. A user or AI agent follows the documented `npx tsx ...[truncated 1614 chars]- Remediation
View remediation
