T01 · Skill Instruction Hijacking
Error
- Location
- SKILL.md:14
- Finding
- Destructive shutdown can be triggered by broad, unauthenticated chat keywords<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:14-25, 55-70` **Vulnerability Type**: Unauthenticated destructive command invocation **Risk Level**: High ### Vulnerable Code ```yaml trigger_keywords: - kill - KILL - dead - deadclaw - stop everything - emergency stop - "🔴" - status - restore ``` ```text ### Method 1: Message Trigger The user sends a trigger word to any connected OpenClaw channel (Telegram, WhatsApp, Discord, Slack, or any other connected channel). The following words activate DeadClaw: - `kill` or `KILL` - `dead` - `stop everything` - `emergency stop` - `deadclaw` - `🔴` When a trigger word is detected: 1. Execute `scripts/kill.sh` from the DeadClaw skill directory 2. Capture the output (process count, containers stopped, cron jobs paused, timestamp) 3. Send confirmation back to the **same channel** the trigger came from: ``` ### Technical Analysis The Skill instructs the agent to execute a destructive shutdown script when it encounters common words such as `kill`, `dead`, or a red-circle emoji in any connected channel. It does not require: - An authenticated administrator identity - A sender or channel allowlist - Exact command framing - A confirmation challenge - A nonce or replay protection - Separation between untrusted message content and authorized control commands The invoked script terminates matching processes, stops Docker containers, kills active sessions, and modifies scheduled-task state. Consequently, accepting broadly matched channel messages as authorization violates the principle that destructive actions must be tied to a strongly authenticated control plane. The same design is present in the packaged copy at `deadclaw/SKILL.md:50-67`. ### Attack Path 1. An attacker joins or compromises a Telegram, Discord, Slack, WhatsApp, or other channel connected to OpenClaw. 2. The attacker sends `kill`, `dead`, `deadclaw`, or `🔴`. 3. The agent matches the Skill trigger without verifying th ...[truncated 1043 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace ordinary-language triggers with an unambiguous administrative command, such as `/deadclaw kill <nonce>`. 2. Enforce a strict allowlist of administrator user IDs and authorized private channels before invoking any script. 3. Require a second confirmation step that summarizes the processes, containers, and scheduled tasks that will be affected. 4. Use short-lived signed requests or challenge-response authentication for phone and WebChat activation. 5. Reject commands extracted from quoted, forwarded, generated, or embedded content. 6. Rate-limit destructive requests and record authenticated actor identity, channel identity, and request ID. 7. Maintain a separately secured emergency endpoint if confirmation-free operation is required. 8. Apply the same authorization controls to `restore` because recovery starts executable workloads and scheduled tasks. ]]>
