T08 · Insecure Dependencies
- Location
SKILL.md:13- Finding
Unpinned Third-Party Package Execution Through npx
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 13
Vulnerability Type: Supply-chain exposure through an unpinned executable dependency
Risk Level: MediumVulnerable Code:
bash npx tsx src/cli.ts <path-to-markdown> [--no-cache] [--pdf] [--plugins <dir>]Technical Analysis
The documented command invokes
tsxthroughnpxwithout specifying a version. If an audited local copy is unavailable,npxmay resolve, download, and execute a package from the configured npm registry. The effective package version can therefore change after this Skill has been reviewed.The project artifact contains only
SKILL.md; it provides no package manifest, lockfile, integrity metadata, or other mechanism demonstrating thattsxis pinned to an audited release. This creates supply-chain risk because installation or runtime code from a compromised package release, registry account, transitive dependency, or configured registry could execute locally.This finding does not establish that
tsxis malicious. The vulnerability is the unsafe, unpinned download-and-execute workflow recommended by the Skill.Attack Path
- An attacker compromises a package release, maintainer account, transitive dependency, or package registry used to resolve
tsx. - The attacker publishes or serves a malicious version under the expected package name.
- A user follows the documented command on a system where an audited local
tsxversion is not installed. npxresolves and downloads the attacker-controlled package version.- Package installation or runtime code executes with the permissions and environment of the invoking user.
- The payload can access resources available to that user, subject to operating-system and sandbox restrictions.
Impact Assessment
Successful exploitation could result in arbitrary code execution with the invoking user's privileges. Potential scope includes readable a ...[truncated 404 chars]
- An attacker compromises a package release, maintainer account, transitive dependency, or package registry used to resolve
- Remediation
View remediation
Remediation Suggestions
-
Add
tsxto the project'sdevDependenciesusing an exact, reviewed version rather than relying on on-demand registry resolution. -
Commit a lockfile containing resolved versions and integrity hashes.
-
Install dependencies with a lockfile-enforcing command such as
npm ci. -
Invoke the installed local binary through a package script, for example:
json { "scripts": { "wurd": "tsx src/cli.ts" }, "devDependencies": { "tsx": "<exact-reviewed-version>" } }Then document:
bash npm ci npm run wurd -- <path-to-markdown> -
Protect package installation with trusted-registry configuration, dependency review, provenance verification where available, and automated supply-chain scanning.
-
Run document compilation in a least-privileged, isolated environment without unnecessary credentials or access to sensitive host files.
-
