T08 · Insecure Dependencies
- Location
SKILL.md:42- Finding
Unpinned Third-Party npm Package Is Downloaded and Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 5 and 42
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: HighThe Skill declares the mutable npm package without a version or integrity constraint:
yaml metadata: {"openclaw":{"emoji":"📞","requires":{"env":["RUNWAYML_API_SECRET"],"bins":["node","npm"]},"install":[{"id":"node","kind":"node","package":"openclaw-video-call","bins":["openclaw-video-call"],"label":"Install Video Call (npm)"}],"primaryEnv":"RUNWAYML_API_SECRET","source":"https://www.npmjs.com/package/openclaw-video-call","repository":"https://github.com/runwayml/openclaw-skills/tree/main/video-call-ai-character"}}It then instructs the Agent to execute the package through
npx:bash npx openclaw-video-callTechnical Analysis
Neither the package declaration nor the
npxcommand pins an exact audited version. The project also contains no lockfile, integrity hash, vendored implementation, or local runtime source through which the executed package could be verified.When the package is not already available locally,
npx openclaw-video-callcan resolve, download, and immediately execute the version currently selected by the npm registry. The effective executable payload can therefore change after this Skill has been reviewed. Package lifecycle scripts and the package runtime may execute with the operating-system privileges of the user running the Agent.The runtime implementation is not included in the audited project, so this finding does not establish that the current npm package is malicious. It establishes that the documented installation and execution process lacks reproducibility and creates a supply-chain execution boundary controlled by a mutable external dependency.
Attack Path
- An attacker compromises the npm publisher account, package distribution process, or a future package release.
- The attacker publishes a malicious versi ...[truncated 1100 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to an exact reviewed version, such as
openclaw-video-call@X.Y.Z, in both installation metadata and command examples. - Install the dependency ahead of execution using a committed lockfile, and run the locally installed binary rather than allowing
npxto retrieve an unspecified release. - Record and verify the expected package integrity hash. Use deterministic installation such as
npm ciwith a reviewed lockfile. - Review the resolved package contents, transitive dependencies, lifecycle scripts, and release provenance before approving updates.
- Disable package lifecycle scripts during installation where they are unnecessary, for example with
npm ci --ignore-scripts, and explicitly enable only reviewed setup steps. - Run the service in a restricted environment with minimum filesystem and network permissions. Provide
RUNWAYML_API_SECRETonly to the component that requires it. - Add automated dependency monitoring and require manual security review whenever the pinned package or its lockfile changes.
- Pin the dependency to an exact reviewed version, such as
