T08 · Insecure Dependencies
- Location
SKILL.md:20- Finding
Runtime Execution of an Unpinned Third-Party Package
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 20-21; similar invocations occur at lines 26-27, 32, 37, and 83
Vulnerability Type: Unpinned runtime dependency execution
Risk Level: MediumVulnerable Code
shell uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3 # With subtitles uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3 --write-subtitles -Additional instances execute the same dependency without a version constraint:
shell uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3 --rate=+50% uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3 --volume=+50% --pitch=-50Hz uvx edge-tts --text "{msg}" --write-media {tempdir}/{filename}.mp3 --voice=zh-CN-XiaoxiaoNeural uvx edge-tts --list-voicesTechnical Analysis
The skill instructs the agent to resolve and execute
edge-ttsthroughuvxwithout specifying an exact package version, package hash, lockfile, trusted package index, or verified publisher. Runtime package resolution means the code executed during a future invocation may differ from the code that existed when the skill was reviewed.The documentation also describes the dependency as the
node-edge-tts npm package, while the actual command usesuvx edge-tts. This provenance mismatch makes it less clear which package implementation and registry source are intended.Although the repository itself contains no embedded executable scripts, invoking an unpinned package introduces a supply-chain trust boundary outside the reviewed project.
Attack Path
- An attacker compromises the package distribution account, publishes a malicious version under the resolved package name, or influences resolution toward an unsafe source.
- A user or agent invokes one of the documented
uvx edge-ttscommands. uvxresolves and downloads the dependency available at invocation time.- The downloaded p ...[truncated 661 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to an audited, exact version rather than invoking an unconstrained package name.
- Use a lockfile and package integrity hashes where supported.
- Configure and document an explicitly trusted package index and publisher.
- Verify the package before execution and cache an approved artifact instead of resolving mutable code during each invocation.
- Correct the discrepancy between the stated npm package and the package executed through
uvx. - Run the TTS utility in a sandbox with minimal filesystem access, restricted environment variables, and only the network access required for TTS generation.
- Establish an update process that reviews package changes before advancing the pinned version.
