T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:36- Finding
Unverified Remote Installer Is Piped Directly Into a Shell
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a voice-generation helper, but it makes local/offline privacy claims while using an online TTS service and recommends unsafe installer commands.
Review this skill before installing. Do not use it for secrets, private messages, or confidential work unless you are comfortable sending the text to Microsoft Edge-TTS. Avoid the curl-to-sh uv installer unless you independently trust and verify it, and run sudo package installation only on a machine where system package changes are acceptable.
SKILL.md:36Unverified Remote Installer Is Piped Directly Into a Shell
scripts/voice_gen.py:2Runtime Dependencies Are Unpinned and Automatically Resolved
scripts/voice_gen.py:63Input Text Is Sent to an Online TTS Service Despite Offline Privacy Claims
Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.
sudo apt update && sudo apt install ffmpeg python3-pip -y
Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.
sudo apt update && sudo apt install ffmpeg python3-pip -y
The documentation repeatedly claims the solution is 'completely offline' and '100% local' while relying on Microsoft Edge-TTS, which typically uses a remote service rather than an offline local synthesis engine. This is dangerous because users may provide sensitive text under false privacy assumptions, leading to unintended data disclosure to third-party infrastructure.
Piping downloaded content directly into sh is a classic command-chaining pattern that turns remote content retrieval into immediate code execution with no review step. This is especially dangerous in a skill document because agents or users may copy it verbatim, leading to fast-path compromise if the source is malicious or tampered with.
sudo apt update && sudo apt install ffmpeg python3-pip -y
curl -LsSf https://astral.sh/uv/install.sh | sh
## 🚀 使用方法 (推荐)
The skill is described as local/offline voice generation, but it imports and uses edge-tts, which sends input text to an external service for synthesis. This creates a significant trust and privacy gap: users may provide sensitive text believing it never leaves the host, when it is actually transmitted off-device.
The skill documentation is presented entirely in Chinese, including the core description and usage guidance, with no indication that other languages are supported or that Chinese is a deliberate region-specific requirement. This can violate language/locale policy when a skill imposes a specific language without user opt-in or justification.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
sudo apt update && sudo apt install ffmpeg python3-pip -y
The skill documents shell-based installation and execution steps but does not declare any explicit tool scope or allowed-tools boundary. This increases the chance that an agent may invoke shell commands without clear sandboxing or user awareness, which is risky for a skill that installs packages and runs local scripts.
The description states the skill uses '高质量中文语音', which hard-codes Chinese output as the intended language. Under the policy, forcing a specific language or locale without offering user choice or documenting a justified regional constraint is a natural-language policy violation.
The skill instructs users or agents to run package installation commands with sudo, which requires elevated privileges and expands the blast radius of any mistake or compromise. In agent-assisted environments, encouraging privileged execution is dangerous because it can normalize unnecessary root access for routine setup tasks.
# 需要 Python 环境和 FFmpeg
sudo apt update && sudo apt install ffmpeg python3-pip -y
# 推荐安装 uv 以极速运行封装脚本
curl -LsSf https://astral.sh/uv/install.sh | sh
The code path that generates speech depends on edge_tts.Communicate(...).save(...), which requires an online service despite the skill being positioned as local. In this context, the mismatch is security-relevant because it can cause unintentional disclosure of user-provided content and violate deployment assumptions in restricted or privacy-sensitive environments.
User-supplied text is sent to an external TTS service without any warning, consent prompt, or visible disclosure in the script. This is dangerous because users may include secrets, personal data, or internal content, and the skill context specifically increases risk by advertising local/offline processing.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
"-ac", "1", "-ar", "48000",
"-application", "voip", str(output_path)
]
subprocess.run(cmd, check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
async def main():
parser = argparse.ArgumentParser(description="Smart Voice Generator for Telegram")
This markdown file includes a command that updates package indexes and installs system packages using sudo, which affects system state and may require elevated privileges. The surrounding text does not warn users that the command will modify their system or require administrator access.
The documentation fetches and executes a remote install script directly via curl piped to sh, which bypasses integrity verification and executes whatever the remote server returns. If the upstream source, transport, or DNS path is compromised, this becomes arbitrary code execution on the host.
sudo apt update && sudo apt install ffmpeg python3-pip -y
curl -LsSf https://astral.sh/uv/install.sh | sh
## 🚀 使用方法 (推荐)
The default voice is hard-coded to zh-CN-XiaoxiaoNeural, which imposes a specific language/locale when the user does not explicitly choose one. This can violate language/locale policy expectations because the tool selects a locale-specific output by default rather than prompting or using a neutral default.