T01 · Skill Instruction Hijacking
Warning
- Location
- agents/openai.yaml:4
- Finding
- Cross-Skill Instruction Hijacking Through a Hard-Coded Cloned Voice Identity<![CDATA[ ## Vulnerability Details **File Location**: `agents/openai.yaml:4` **Vulnerability Type**: Cross-Skill agent instruction redirection **Risk Level**: Medium ### Vulnerable Code ```yaml default_prompt: "Use $audioclaw-skills-voice-intake to transcribe a user voice message with AudioClaw and package it for AudioClaw. If the user is in ongoing voice-reply mode, hand off to $audioclaw-skills-voice-reply and prefer the prepared clone voice_id `vc-yxdCFUKyNLPexxJ66jaXWk` unless the user asked for another voice." ``` ### Technical Analysis The default prompt instructs the agent to invoke a separate voice-reply Skill and prefer a specific cloned voice identity. This behavior exceeds the stated speech-to-text intake function and conflicts with `SKILL.md`, which explicitly states that the Skill should not be used for speech output. Because the instruction is loaded as part of the Skill's agent-facing configuration, it can influence the current session without the user explicitly selecting the cloned voice. The fixed voice identifier may also represent a particular person's cloned voice, creating consent and impersonation concerns. This is instruction hijacking rather than direct local code execution: it changes downstream agent behavior and redirects processing to another Skill. ### Attack Path 1. A user or channel supplies a voice message and triggers the voice-intake Skill. 2. The agent loads the default prompt from `agents/openai.yaml`. 3. If the session is interpreted as being in ongoing voice-reply mode, the prompt directs the agent to hand off to `$audioclaw-skills-voice-reply`. 4. The downstream Skill is instructed to use the embedded cloned voice ID unless the user explicitly requests a different voice. 5. Speech may consequently be generated with a voice that the user did not explicitly select or authorize. ### Impact Assessment This issue does not directly grant operating-system privileges. Its scope is the agent's active session and downst ...[truncated 363 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove the automatic handoff and hard-coded cloned voice identifier from the voice-intake Skill. 2. Keep speech-output instructions exclusively in the dedicated voice-reply Skill. 3. Require explicit user confirmation before selecting or using any cloned voice. 4. Resolve voice identities from an authorized, user-specific configuration rather than embedding a global identifier in an agent prompt. 5. Clearly disclose the selected voice before generating speech and provide a straightforward opt-out. 6. Add policy enforcement in the voice-reply component to verify that the requesting user is authorized to use the selected cloned voice. 7. Restrict the intake Skill's default prompt to transcription, clarification, and construction of the documented user-turn payload. ]]>
