T08 · Insecure Dependencies
- Location
SKILL.md:14- Finding
Unpinned Third-Party Repository Is Installed and Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:14-18andSKILL.md:43-47; execution path inbin/valtec-tts.js:77-99
Vulnerability Type: Unpinned executable dependency and mutable supply-chain source
Risk Level: MediumVulnerable Code
json5 "install": [ { "id": "clone-repo", "kind": "shell", "cmd": "git clone https://github.com/tronghieuit/valtec-tts.git ~/.openclaw/tools/valtec-tts && cd ~/.openclaw/tools/valtec-tts && pip install -e .", "label": "Clone repo and install dependencies", }, ],The same installation procedure is documented for users:
bash git clone https://github.com/tronghieuit/valtec-tts.git ~/.openclaw/tools/valtec-tts cd ~/.openclaw/tools/valtec-tts pip install -e .The wrapper later executes Python scripts from that checkout:
javascript if (zeroshot) { if (!reference) usage("--reference is required for --zeroshot mode."); script = path.join(ttsDir, "infer_zeroshot.py"); if (!fs.existsSync(script)) usage(`Script not found: ${script}`); scriptArgs = [ script, "-t", text, "-r", reference, "-o", outputPath, "--speed", speed, ]; } else { script = path.join(ttsDir, "infer.py"); if (!fs.existsSync(script)) usage(`Script not found: ${script}`); scriptArgs = [ script, "-t", text, "-o", outputPath, "-s", speaker, "--length_scale", speed, ]; }Technical Analysis
The installation command clones the current default branch of an external GitHub repository without pinning a reviewed commit or immutable release. It performs no checksum, signature, or provenance verification before running
pip install -e ..Python package installation can execute repository-controlled build or installation logic. In addition, the local wrapper explicitly invokes
infer.pyorinfer_zeroshot.pyfrom the mutable checkout. Consequ ...[truncated 1641 chars]- Remediation
View remediation
Remediation Suggestions
- Pin the repository to a specific, reviewed commit hash or immutable signed release rather than cloning the moving default branch.
- Download a versioned release artifact and verify a maintainer-published cryptographic checksum or signature before installation.
- Use a Python lock file with exact versions and hashes, and install dependencies with hash verification where supported.
- Avoid editable installation (
pip install -e .) for production deployment; build and install a reviewed, immutable package artifact instead. - Validate the provenance and integrity of model files downloaded at first run.
- Execute inference in a least-privilege environment with restricted filesystem and network access.
- Review and pin the upstream inference scripts together with the Skill release so the code executed at runtime matches the audited version.
