T09 · Insecure Skill Coding Practices
- Location
SKILL.md:311- Finding
Shell Command Injection Through OpenClaw Message Parameters
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill has a coherent image-generation-and-messaging purpose, but it grants broad messaging and command authority with insufficient safeguards around sending and unsafe example code.
Review this skill before installing. It is not clearly malicious, but it can generate images through a third-party provider and send them to real messaging channels. Only use it in an environment where OpenClaw sending is scoped to approved channels, require explicit confirmation before dispatch, and avoid using the TypeScript exec example unless it is rewritten to pass arguments without a shell.
SKILL.md:311Shell Command Injection Through OpenClaw Message Parameters
The trigger phrases are broad enough to activate on ordinary conversational requests like 'what are you doing?' or 'send me a pic', which can cause the agent to initiate image generation and downstream message delivery without sufficiently explicit user intent. In this skill, activation is especially sensitive because it chains external API use and cross-platform message sending, increasing the chance of unintended disclosure or spam.
The skill description does not clearly warn that user-provided context, generated image data, and destination/channel metadata will be transmitted to third-party services and messaging platforms. That omission can mislead users about where their content is going and undermines informed consent, particularly because the workflow involves both an external image-editing provider and outbound distribution.
This code sends user-influenced prompt content and the reference image URL to an external service, which is a real data egress path. In context, the transmission is part of the skill's intended function, but it remains security-relevant because users may not realize their requests are being sent off-platform to a third party for processing.
--arg prompt "$PROMPT" \
'{image_url: $image_url, prompt: $prompt, num_images: 1, output_format: "jpeg"}')
curl -X POST "https://fal.run/xai/grok-imagine-image/edit" \
-H "Authorization: Key $FAL_KEY" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD"
This is another concrete outbound transmission of user-derived content to fal.run for image editing, creating the same external data exposure risk in the complete script example. Because the skill later forwards the resulting image to messaging channels, this egress becomes more dangerous in context by enabling a full generate-and-distribute pipeline from loosely validated input.
--arg prompt "$EDIT_PROMPT" \
'{image_url: $image_url, prompt: $prompt, num_images: 1, output_format: "jpeg"}')
RESPONSE=$(curl -s -X POST "https://fal.run/xai/grok-imagine-image/edit" \
-H "Authorization: Key $FAL_KEY" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD")
No suspicious patterns detected.