T05 · Unauthorized Access and Privilege Escalation
Warning
- Location
- SKILL.md:191
- Finding
- Privileged Owner Commands Lack Sender Authentication and Authorization## Vulnerability Details **File Location**: `SKILL.md`, lines 191–199 **Vulnerability Type**: Missing authorization for administrative commands **Risk Level**: Medium ### Vulnerable Code ```markdown ## Commands (for the business owner) - **"open tickets"** — List all unresolved customer queries - **"resolve ticket #[id]"** — Mark a ticket as resolved - **"message stats"** — Today's volume, categories breakdown, response rate - **"add template [category] [message]"** — Update an auto-response template - **"pause responder"** — Temporarily stop auto-responses (owner handles manually) - **"resume responder"** — Re-enable auto-responses - **"set fees [text]"** — Update the fees information used in price responses ``` ### Technical Analysis The Skill defines privacy-sensitive and state-changing administrative commands but does not instruct the agent to authenticate the sender or verify that the command arrived through a dedicated administrative channel. Matching natural-language command text is not an adequate authorization boundary because customer messages are untrusted input processed by the same responder. If these commands are recognized solely by their text, an arbitrary customer may be interpreted as the business owner. The available operations include reading unresolved tickets and message statistics, changing persistent response templates and pricing information, resolving tickets, and pausing or resuming the responder. The template-update operation is particularly sensitive because it may persist attacker-controlled content that is subsequently sent to other customers. The `open tickets` and `message stats` operations may expose customer or business information, depending on the details returned by the implementation. ### Attack Path 1. An attacker obtains the public WhatsApp number used by the responder. 2. The attacker submits a message containing an administrative phrase such as `open tickets`, `pause r ...[truncated 1317 chars]
- Remediation
- ## Remediation Suggestions 1. Route administrative commands through a dedicated owner-only channel that is separate from customer webhook processing. 2. Before executing any privileged command, normalize and verify the sender identifier against an explicit allowlist of authorized owner phone numbers or authenticated account IDs. 3. Treat `ownerPhone` and `escalateToPhone` as routing configuration only; do not assume that possession of a displayed phone number proves identity. 4. Reject administrative command phrases received through customer-facing message flows, even when their text exactly matches a supported command. 5. Apply command-specific authorization and least privilege. Read-only statistics, ticket access, template modification, and responder-state changes should be independently controlled. 6. Require explicit confirmation for high-impact operations such as pausing the responder, changing templates or fees, and resolving tickets. 7. Validate template categories, constrain template length and content, and prevent attacker-controlled links or deceptive instructions from being persisted without review. 8. Record an audit log containing the authenticated administrator identity, command, timestamp, affected object, and result. 9. Avoid returning customer phone numbers, full conversations, or other personal information unless the authenticated administrator specifically requires it. 10. Add negative tests proving that identical command text from a customer number is rejected and produces no state change or information disclosure.
