Executive brief
OpenClaw is a messaging gateway that integrates QQ Bot chat responses into a unified platform. The QQBot reply feature uses image dimension probing to optimize media display, but it improperly handled remote image URLs without SSRF (Server-Side Request Forgery) protections. An attacker could craft a malicious image URL in a reply that causes the gateway to make requests to internal services or cloud metadata endpoints, potentially leaking credentials or mapping internal networks.
Technical details
The vulnerability exists in the `getImageSizeFromUrl()` function in OpenClaw's QQBot extension (`extensions/qqbot/src/utils/image-size.ts`), which used a bare `fetch()` call to probe remote image dimensions for QQ markdown rendering. This function had no SSRF guards, allowing an attacker who could induce a reply containing a chosen URL to turn the gateway into a blind SSRF client against loopback (127.0.0.1), RFC1918 private ranges, link-local addresses, or cloud metadata endpoints (169.254.169.254). The fix replaces the raw fetch with `fetchRemoteMedia()` from the plugin SDK, which enforces a public-network-only SSRF policy with 65536-byte limits and zero redirects, blocking private/reserved/loopback/link-local/metadata IPs after DNS resolution. The vulnerability was fixed in version 2026.4.12 and later via PRs #63495 and #65788.
Affected products
- openclaw openclaw < 2026.4.12
Timeline
- 2026-04-17: disclosed
- 2026-04-12: patched: Fix included in version 2026.4.12 and later
References
- https://github.com/openclaw/openclaw/security/advisories/GHSA-2767-2q9v-9326
- https://github.com/openclaw/openclaw/pull/63495
- https://github.com/openclaw/openclaw/pull/65788
- https://github.com/openclaw/openclaw/commit/08ae021d1f42905a85a550813c0d95169b171a6c
- https://github.com/openclaw/openclaw/commit/08ae021d1f4f02e0ca5fd8a3b9659291c1ecf95a
- https://github.com/openclaw/openclaw/commit/ddb7a8dd80b8d5dd04aafa44ce7a4354b568bb2d