Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-41914

CVE-2026-41914: Openclaw Openclaw SSRF Vulnerability

CVE-2026-41914 is a server-side request forgery flaw in Openclaw Openclaw affecting QQ Bot media download paths. Attackers can bypass SSRF protections to access internal resources. This article covers technical details, affected versions, impact, and mitigation strategies.

Published:

CVE-2026-41914 Overview

OpenClaw before version 2026.4.8 contains a server-side request forgery (SSRF) vulnerability in QQ Bot media download paths that bypass SSRF protection mechanisms. Attackers can exploit unprotected media fetch endpoints to access internal resources and bypass allowlist policies, potentially exposing sensitive internal services and data.

Critical Impact

This SSRF vulnerability allows attackers to bypass security controls and access internal network resources through unprotected media fetch endpoints in the QQ Bot functionality.

Affected Products

  • OpenClaw versions prior to 2026.4.8
  • OpenClaw Node.js package (openclaw:openclaw)

Discovery Timeline

  • 2026-04-28 - CVE-2026-41914 published to NVD
  • 2026-04-30 - Last updated in NVD database

Technical Details for CVE-2026-41914

Vulnerability Analysis

This vulnerability affects OpenClaw's network request handling in the QQ Bot media fetch functionality. The issue stems from improper ordering of security checks within the fetch-guard.ts module, where DNS pinning was performed before determining whether a trusted environment proxy should be used. This created a window where SSRF protections could be bypassed when fetching media content through specific endpoints.

The vulnerability is classified under CWE-918 (Server-Side Request Forgery), which occurs when an application fetches remote resources without properly validating user-supplied URLs. In this case, the media download paths in the QQ Bot functionality did not adequately enforce allowlist policies, enabling attackers to craft requests that access internal network resources.

Root Cause

The root cause lies in the fetch-guard.ts module where the DNS pinning resolution was performed unconditionally before checking if the request should be dispatched through a trusted environment proxy. This ordering issue meant that even when a trusted proxy was configured (which would handle its own DNS resolution and security policies), the application would first attempt to resolve and pin the hostname, potentially bypassing intended security controls.

Attack Vector

An attacker with low-privilege access can exploit this vulnerability over the network by sending specially crafted requests to the QQ Bot media fetch endpoints. The attack requires no user interaction and can be used to:

  1. Access internal services that should not be externally accessible
  2. Bypass URL allowlist policies designed to restrict outbound requests
  3. Probe internal network infrastructure
  4. Potentially exfiltrate data from internal resources

The following patch demonstrates the fix applied to address this vulnerability:

typescript
     try {
       assertExplicitProxySupportsPinnedDns(parsedUrl, params.dispatcherPolicy, params.pinDns);
       await assertExplicitProxyAllowed(params.dispatcherPolicy, params.lookupFn, params.policy);
-      const pinned = await resolvePinnedHostnameWithPolicy(parsedUrl.hostname, {
-        lookupFn: params.lookupFn,
-        policy: params.policy,
-      });
       const canUseTrustedEnvProxy =
         mode === GUARDED_FETCH_MODE.TRUSTED_ENV_PROXY && hasProxyEnvConfigured();
       if (canUseTrustedEnvProxy) {
         dispatcher = createHttp1EnvHttpProxyAgent();
       } else if (params.pinDns === false) {
         dispatcher = createPolicyDispatcherWithoutPinnedDns(params.dispatcherPolicy);
       } else {
+        const pinned = await resolvePinnedHostnameWithPolicy(parsedUrl.hostname, {
+          lookupFn: params.lookupFn,
+          policy: params.policy,
+        });
         dispatcher = createPinnedDispatcher(pinned, params.dispatcherPolicy, params.policy);
       }

Source: GitHub Commit d7c3210

The fix moves the DNS pinning operation inside the conditional block, ensuring it only executes when neither a trusted environment proxy nor a non-pinned DNS dispatcher is being used.

Detection Methods for CVE-2026-41914

Indicators of Compromise

  • Unusual outbound requests from the OpenClaw application to internal IP ranges (e.g., 10.x.x.x, 172.16.x.x, 192.168.x.x)
  • HTTP requests to media fetch endpoints containing internal hostnames or localhost references
  • Anomalous DNS resolution patterns originating from the application server
  • Access attempts to cloud metadata endpoints (e.g., 169.254.169.254)

Detection Strategies

  • Monitor network traffic from OpenClaw instances for requests to internal or private IP addresses
  • Implement web application firewall (WAF) rules to detect SSRF patterns in media fetch requests
  • Review application logs for failed or unexpected URL fetch attempts
  • Configure IDS/IPS signatures to alert on SSRF attack patterns targeting QQ Bot endpoints

Monitoring Recommendations

  • Enable verbose logging for the fetch-guard.ts module to capture all outbound request attempts
  • Set up alerts for requests to non-public IP ranges from the OpenClaw application
  • Monitor for increased error rates in media download functionality
  • Track DNS query patterns from the application server for anomalies

How to Mitigate CVE-2026-41914

Immediate Actions Required

  • Upgrade OpenClaw to version 2026.4.8 or later immediately
  • Audit existing deployments for signs of exploitation
  • Review network access controls to limit outbound connections from OpenClaw instances
  • Implement network segmentation to restrict access to internal services

Patch Information

The vulnerability has been addressed in OpenClaw version 2026.4.8. The fix is available in commit d7c3210cd6f5fdfdc1beff4c9541673e814354d5. Organizations should upgrade to the patched version as soon as possible.

For detailed information, refer to:

Workarounds

  • Implement network-level egress filtering to block requests to internal IP ranges
  • Deploy a reverse proxy with SSRF protection in front of the OpenClaw application
  • Disable QQ Bot media fetch functionality if not required until patching is complete
  • Configure explicit allowlists for permitted external domains at the network level
bash
# Example iptables rules to block internal network access from OpenClaw
# Adjust the user/process context as needed for your deployment
iptables -A OUTPUT -d 10.0.0.0/8 -m owner --uid-owner openclaw -j DROP
iptables -A OUTPUT -d 172.16.0.0/12 -m owner --uid-owner openclaw -j DROP
iptables -A OUTPUT -d 192.168.0.0/16 -m owner --uid-owner openclaw -j DROP
iptables -A OUTPUT -d 169.254.169.254/32 -m owner --uid-owner openclaw -j DROP

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.