T08 · Insecure Dependencies
- Location
scripts/edge_tts.js:4- Finding
Unpinned Globally Loaded Third-Party TTS Dependency
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:76-79;scripts/edge_tts.js:4-8
Vulnerability Type: Unpinned third-party dependency loaded from global or fixed system locations
Risk Level: MediumComplete Code Snippet
From
SKILL.md:76-79:bash If `node-edge-tts` is missing: ```bash npm i -g node-edge-ttstext From `scripts/edge_tts.js:4-8`: ```javascript const candidates = [ 'node-edge-tts', '/usr/lib/node_modules/openclaw/node_modules/node-edge-tts', ];Technical Analysis
The documented installation command retrieves the latest available version of
node-edge-ttswithout an exact version constraint, lockfile, or separately verified integrity value. The runtime then attempts to load either a module resolved by Node.js or a package from a fixed OpenClaw system path.Because
require()executes package initialization code, the effective trusted codebase includes whichever dependency copy resolves at runtime. The project does not define an audited local dependency version or provide a lockfile that makes installations reproducible. Consequently, a compromised future package release, compromised package-distribution account, or attacker-controlled package copy in an applicable resolution location could introduce arbitrary JavaScript execution.This finding concerns supply-chain trust and reproducibility. The audited repository itself does not contain evidence that the current
node-edge-ttspackage is malicious.Attack Path
- An attacker compromises the upstream npm package, its publisher account, or a package copy available through an applicable runtime resolution location.
- A user follows the documented
npm i -g node-edge-ttscommand, which does not select a previously audited exact version, or the environment otherwise contains a substituted copy. - The user invokes the text-to-speech workflow.
scripts/edge_tts.jscallsrequire()on the dep ...[truncated 815 chars]
- Remediation
View remediation
Remediation Suggestions
- Add a local
package.jsonthat pinsnode-edge-ttsto an exact, reviewed version rather than using a floating global installation. - Commit a generated lockfile and install dependencies with
npm cito ensure reproducible resolution. - Review and retain the lockfile integrity metadata; use package provenance or registry-signature verification where supported.
- Load only the project-local dependency and remove global and absolute-path fallback resolution.
- Run the TTS process under a least-privileged account or sandbox with access limited to the required input and output locations.
- Incorporate dependency vulnerability, provenance, and unexpected lifecycle-script checks into release review.
- Document whether the dependency sends text to a remote service so users can make informed decisions before processing sensitive content.
- Add a local
