T08 · Insecure Dependencies
- Location
SKILL.md:28- Finding
Unpinned Third-Party Package Download and Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 28-46
Vulnerability Type: Unpinned npm dependencies and direct execution of remotely retrieved packages
Risk Level: MediumVulnerable Code
bash npx @builtbyecho/research --helpFor repeated use, install globally:
bash npm install -g @builtbyecho/research builtbyecho-research --helpAlias:
bash echo-research --helpRequires Node.js 20+.
Optional browser setup
The package uses Playwright for render/browser escalation. If Playwright browsers are missing, install Chromium:
bash npx playwright install chromiumTechnical Analysis
The Skill instructs the agent to download and execute npm packages without pinning exact versions or verifying package integrity. Although the Skill metadata identifies version
0.5.2, the installation commands do not constrain@builtbyecho/researchto that reviewed version.Running
npx @builtbyecho/researchcan retrieve the current registry version and execute its package code immediately. Similarly,npm install -gcan execute npm lifecycle scripts and permanently expose the installed command in the user's global environment. The Playwright command also relies on an unpinned package and downloads a browser binary.Consequently, the code executed at runtime can differ from the dependency version that was reviewed. A compromised package owner, npm account, registry response, transitive dependency, or future malicious release could introduce arbitrary executable behavior.
Attack Path
- An attacker compromises the npm package, a maintainer account, or a transitive dependency, or publishes a malicious future release.
- The agent follows the Skill and invokes the unpinned
npxor global installation command. - npm downloads the attacker-controlled package version from the registry.
- Package lifecycle scripts or the requested executable run under t ...[truncated 925 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin the package to the exact reviewed version, such as:
bash npx --yes @builtbyecho/research@0.5.2 --help -
Pin Playwright to a reviewed version rather than resolving the latest package implicitly.
-
Prefer a project-local installation governed by a committed lockfile over global installation.
-
Verify registry integrity metadata and dependency provenance before execution.
-
Use
npm ciwith a reviewed lockfile for repeatable installations. -
Disable lifecycle scripts with
--ignore-scriptswhere package functionality permits it. -
Run research tooling in a sandbox or container with restricted filesystem access, minimal environment variables, and limited network permissions.
-
Avoid running npm commands as an administrator or root user.
-
Periodically review both direct and transitive dependencies for ownership changes, vulnerabilities, and unexpected lifecycle scripts.
-
