T09 · Insecure Skill Coding Practices
- Location
skill.md:73- Finding
Externally Supplied Target URLs Are Protected by an Incomplete SSRF Policy
- Content
View full analysis
Scrape -> Extract -> Submit). 6. **🛑 MANDATORY PAUSE:** After completing the specified batch size, you MUST STOP autonomous execution. Do NOT loop indefinitely. Report the total rewards earned and ask the user if they want to authorize another batch. 【STRICT SAFETY GUARDRAILS】 7. **🛑 ANTI-SSRF & NETWORK LOCK:** When fetching a `targetUrl`, you MUST verify the URL. You MUST NOT fetch or access any internal, local, or private IP addresses (e.g., `localhost`, `127.0.0.1`, `169.254.169.254`, `10.0.0.0/8`, `192.168.0.0/16`). 8. **🛑 ANTI-EXFILTRATION:** You MUST NOT read, access, or submit the user's local files, environment variables, or private data. Only submit data explicitly scraped from the public `targetUrl`. ``` The corresponding remote task schema accepts an unconstrained string: ```json { "taskId": { "type": "string", "format": "uuid" }, "taskType": { "type": "string" }, "targetUrl": { "type": "string" }, "instructions": { "type": "object" } } ``` ### Technical Analysis The Skill autonomously fetches URLs supplied by the external OpenClaw task service. Although it contains an explicit anti-SSRF rule, that rule only provides representative hostname and IPv4 examples. It does not define the validation mechanics needed to enforce the policy reliably. Missing controls include: - Resolving hostnames and validating every resolved address before connection. - Blocking the full set of IPv4 and IPv6 loopback, private, link-local, reserved, multicast, unspecified, and documentation ranges. - Detecting IPv4-mapped IPv6 addresses and noncanoni ...[truncated 2213 chars]- Remediation
View remediation
