lessac_offline_voice_system
The skill claims 'fully offline' with 'no data leaves your machine,' but actually uses edge-tts which transmits audio/text to Microsoft cloud servers - a significant doc-to-code mismatch indicating potential data exfiltration.
SKILL.md explicitly states 'Fully offline: No internet connection required' and 'Privacy-focused: All processing happens locally' and 'No data leaves your machine'. However, the implementation uses 'edge-tts' which is Microsoft's cloud TTS service that sends audio text to Microsoft servers.
SKILL.md:7 Why this conclusion was reached
2/4 dimensions flagged1 undeclared or violating capabilities were inferred.
5 lower-risk artifacts were extracted and still need context.
The report includes 0 attack-chain steps and 2 severe findings.
3 dependency or supply-chain issues need attention.
What drove the risk score up
SKILL.md claims 'fully offline' and 'no data leaves your machine' but uses edge-tts which sends data to Microsoft cloud
edge-tts package makes HTTPS requests to Microsoft servers for TTS generation
pip install without version pinning for faster-whisper, edge-tts, soundfile
subprocess.run with shell=True in voice_handler.py
Most important evidence
False claim of offline operation
SKILL.md explicitly states 'Fully offline: No internet connection required' and 'Privacy-focused: All processing happens locally' and 'No data leaves your machine'. However, the implementation uses 'edge-tts' which is Microsoft's cloud TTS service that sends audio text to Microsoft servers.
SKILL.md:7 Audio data transmitted to Microsoft cloud
The edge-tts package (installed in install.sh:85) makes HTTPS requests to Microsoft servers to generate TTS audio. This means user-provided text and any processed audio is sent to external servers, contradicting the skill's privacy claims.
scripts/install.sh:85 Unpinned Python package versions
Python packages are installed without version constraints: 'pip install faster-whisper edge-tts soundfile'. This allows dependency substitution attacks.
scripts/install.sh:85 subprocess with shell=True
The voice_handler.py uses subprocess.run with shell=True for ffmpeg execution. While ffmpeg commands are typically static, shell=True introduces potential command injection risk if audio filenames are user-controlled.
scripts/voice_handler.py:39 Declared capability vs actual capability
install.sh:100 - Creates config files, copies scripts to $INSTALL_DIR SKILL.md claims offline, but edge-tts sends data to Microsoft servers voice_handler.py:39 - Uses subprocess for ffmpeg (documented CLI tool) Suspicious artifacts and egress
https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/high/en_US-lessac-high.onnx README.md:75
https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/high/en_US-lessac-high.onnx.json README.md:76
https://huggingface.co/rhasspy/piper-voices SKILL.md:165
https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/high/en_US-ryan-high.onnx references/voice_models.md:57
https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/ryan/high/en_US-ryan-high.onnx.json references/voice_models.md:58
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| faster-whisper | * | pip | No | Version not pinned |
| edge-tts | * | pip | No | Version not pinned - Microsoft cloud service |
| soundfile | * | pip | No | Version not pinned |
File composition
scripts/install.sh SKILL.md README.md references/voice_models.md scripts/voice_handler.py