T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:15- Finding
Unpinned Remote Repository Is Downloaded and Executed
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is coherent for local speech transcription and text-to-speech, but its setup tells users to run unpinned code from an external GitHub repository.
Review before installing. Only run the setup from a pinned and trusted Willow server revision, inspect utils.sh before execution, and avoid using elevated privileges unless the upstream installer clearly requires them. Send audio recordings or text only to a Willow server you trust and control, especially for meetings, personal speech, confidential prompts, or regulated data.
SKILL.md:15Unpinned Remote Repository Is Downloaded and Executed
The skill repeatedly instructs users to send potentially sensitive audio recordings and text content to a server endpoint, but it does not include a clear privacy, retention, logging, or data-handling warning. Even though the server is described as local, the examples use a configurable hostname and could point to a remote system, creating a real risk of unintended disclosure of conversations, PII, or confidential text.
This example transmits user audio files to ${WILLOW_BASE_URL}/asr, which is an external network operation from the client perspective and may expose sensitive speech content if the server is remote, compromised, or misconfigured. The danger is increased because the documentation normalizes direct upload of recordings without warning users about trust boundaries or data sensitivity.
# Basic transcription
curl -X POST "${WILLOW_BASE_URL}/asr" \
This TTS example sends arbitrary user text to the server, which can leak confidential prompts, personal information, or proprietary content if the endpoint is not fully trusted. Although TTS requires server-side processing by design, the skill omits a warning that submitted text leaves the client and may be logged or retained by the server.
Check server docs for full list: ${WILLOW_BASE_URL}/api/docs
# Basic TTS
curl -X POST "${WILLOW_BASE_URL}/tts" \
The workflow examples encourage recording and immediately uploading audio for transcription, which increases the chance that users send sensitive spoken content without considering where it is processed. In the context of an ASR/TTS skill, this behavior is expected, but the absence of explicit privacy and trust-boundary guidance makes the transmission risky rather than merely informational.
rec test.wav
curl -X POST "${WILLOW_BASE_URL}/asr"
-F "audio_file=@test.wav"
-F "language=auto"