T09 · Insecure Skill Coding Practices
- Location
SKILL.md:584- Finding
Incomplete Confirmation Controls for Destructive API Operations
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 584-602 and 646-647
Vulnerability Type: Incomplete authorization and confirmation safeguards
Risk Level: MediumRelevant Code:
bash # List all dumps curl -X POST ".../event-dump/list.json?platform=openclaw" -H "X-API-KEY: $UNIONE_API_KEY" \ -H "Content-Type: application/json" -d '{}' # Delete a dump curl -X POST ".../event-dump/delete.json?platform=openclaw" -H "X-API-KEY: $UNIONE_API_KEY" \ -H "Content-Type: application/json" -d '{"dump_id": "dump-id"}'bash # List tags curl -X POST ".../tag/list.json?platform=openclaw" -H "X-API-KEY: $UNIONE_API_KEY" \ -H "Content-Type: application/json" -d '{}' # Delete tag curl -X POST ".../tag/delete.json?platform=openclaw" -H "X-API-KEY: $UNIONE_API_KEY" \ -H "Content-Type: application/json" -d '{"tag_id": 123}'The confirmation policy is narrower than the available destructive operations:
text 3. Never send an email without explicit user confirmation. Always show the recipient, subject, and body summary before executing `email/send.json`. Wait for the user to approve. This applies to every send — including test emails and retries with new content. 4. Never modify or delete templates, webhooks, or suppressions without explicit user confirmation. Show what will be changed and wait for approval.Technical Analysis
The Skill documents authenticated deletion endpoints for event dumps and tags, but its mandatory confirmation policy only covers sending email and modifying or deleting templates, webhooks, or suppressions. Event-dump deletion and tag deletion are not included.
Because an AI agent uses these instructions as its operational policy, the omission can cause it to interpret those deletion operations as not requiring explicit approval. This is also inconsistent with the broader claim in
README.mdthat the agent asks for confirmation before modifying ...[truncated 1306 chars]- Remediation
View remediation
Remediation Suggestions
- Require explicit user confirmation before every state-changing API operation, including all create, update, set, subscribe, and delete endpoints.
- Enumerate event-dump deletion and tag deletion explicitly in the policy rather than relying on ambiguous general language.
- Before confirmation, display the exact endpoint, resource identifier, resource type, and expected effect.
- Resolve and display the target resource before deletion when possible, so the user confirms a human-readable name rather than only an identifier.
- Separate read-only operations from state-changing operations in the Skill instructions and apply a common confirmation gate to the latter.
- Update the README security claim so it precisely matches the implemented confirmation policy.
- Continue recommending narrowly scoped API keys to limit the impact of accidental or unauthorized operations.
