T08 · Insecure Dependencies
- Location
SKILL.md:44- Finding
Unpinned Third-Party Dependencies Are Downloaded and Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:44,SKILL.md:106,SKILL.md:192, andSKILL.md:253
Vulnerability Type: Supply-chain risk caused by unpinned package retrieval and execution
Risk Level: MediumVulnerable Code
SKILL.md:44:bash npx -y playwright@latest test --browser=chromium -g "test name"SKILL.md:106:bash npx playwright install chromiumSKILL.md:192:javascript // npm install @axe-core/playwrightSKILL.md:253:text Install: `pip install selenium webdriver-manager`Technical Analysis
The documented setup commands retrieve third-party packages without pinning them to reviewed, exact versions or verifying their integrity. In particular,
npx -y playwright@latestdownloads and executes the package currently associated with the mutablelatesttag while automatically approving installation.The npm and pip installation examples similarly omit exact versions, hashes, lockfiles, and provenance verification. Consequently, the code that users execute can change after this skill has been reviewed. Package lifecycle hooks, package runtime code, and transitive dependencies may execute with the permissions of the user running the command.
This does not establish that the named packages are malicious. The vulnerability is the unsafe dependency-consumption pattern, which creates exposure if a package release, maintainer account, registry, or transitive dependency is compromised.
Attack Path
- An attacker compromises a referenced package, one of its transitive dependencies, a maintainer account, or the relevant package-distribution channel.
- The attacker publishes a malicious release or causes a malicious version to be selected by the mutable version resolution.
- A user or agent follows the instructions in
SKILL.md, such as runningnpx -y playwright@latestor an unpinnedpip install. - The package manager down ...[truncated 1274 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace mutable tags such as
@latestwith exact, reviewed package versions. - Declare npm dependencies in
package.jsonand commit a trusted lockfile, such aspackage-lock.json. - Use deterministic installation commands such as
npm cirather than dynamically resolving dependencies during skill execution. - Execute locally installed tools with
npx --no-installso that invocation fails rather than downloading an unexpected package. - Pin Python dependencies to exact versions and, where practical, enforce package hashes with
pip install --require-hashes -r requirements.txt. - Review and update pinned versions through a controlled dependency-update process that includes vulnerability scanning and testing.
- Verify package provenance, registry configuration, and integrity metadata before installation.
- Run browser automation and package installation inside a disposable, least-privilege container or sandbox.
- Do not expose unrelated repository credentials, production secrets, or host directories to the dependency installation environment.
- Consider disabling or restricting package lifecycle scripts where compatible with the selected dependencies.
- Replace mutable tags such as
