T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:20
- Finding
- Runtime Execution of an Unpinned Third-Party Package## 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**: Medium ### Vulnerable 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-voices ``` ### Technical Analysis The skill instructs the agent to resolve and execute `edge-tts` through `uvx` without 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 uses `uvx 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 1. An attacker compromises the package distribution account, publishes a malicious version under the resolved package name, or influences resolution toward an unsafe source. 2. A user or agent invokes one of the documented `uvx edge-tts` commands. 3. `uvx` resolves and downloads the dependency available at invocation time. 4. The downloaded p ...[truncated 661 chars]
- 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.
