T08 · Insecure Dependencies
- Location
SKILL.md:32- Finding
Unpinned npm Packages Are Downloaded and Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:32,README.md:24, andREADME.md:49
Vulnerability Type: Unpinned third-party package execution
Risk Level: HighVulnerable Code
SKILL.md:32:bash hermes mcp add surfagent --command npx --args -y surfagent-mcpREADME.md:24:bash npx clawhub@latest install surfagentREADME.md:49:bash hermes mcp add surfagent --command npx --args -y surfagent-mcpTechnical Analysis
The documented installation commands instruct users to fetch and execute mutable third-party npm packages without pinning an exact reviewed version or verifying package integrity.
The
npx -y surfagent-mcpcommand can automatically download the package and run its lifecycle or runtime code. Likewise,npx clawhub@latestexplicitly selects the latest available release. The code ultimately executed can therefore change after this skill package has been audited.If an npm publisher account, package, release process, or upstream dependency is compromised, a malicious package version could execute arbitrary commands under the operating-system account that invokes
npx.Attack Path
- An attacker compromises the npm package, its publisher account, its release pipeline, or a transitive dependency.
- The attacker publishes a malicious release under the package name referenced by the documentation.
- A user follows the documented command without specifying a known-safe version.
npxdownloads the mutable package release and executes package lifecycle or runtime code.- The malicious code runs with the user's local privileges.
- It may access files available to the user, modify local configuration, or target SurfAgent and the persistent Chrome profile.
Impact Assessment
Successful exploitation can provide arbitrary local code execution with the privileges of the user who runs the installation command. The resulting scope ma ...[truncated 568 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every npm package to a specific, reviewed version rather than relying on an implicit latest release or
@latest. - Replace the commands with versioned forms such as
npx -y surfagent-mcp@X.Y.Z, after validating the selected version. - Pin the ClawHub CLI to an approved version instead of using
clawhub@latest. - Publish and verify expected package integrity hashes where the installation workflow supports them.
- Require npm provenance and publisher verification for released packages.
- Review and lock transitive dependencies in the upstream MCP project.
- Document the approved package publisher, version, release URL, and expected integrity metadata.
- Recommend installation and execution from a restricted, non-administrator account.
- Pin every npm package to a specific, reviewed version rather than relying on an implicit latest release or
