IPBUF安全漏洞报告
English
CVE-2026-34937 CVSS 7.8 高危

CVE-2026-34937 PraisonAI 命令注入漏洞

披露日期: 2026-04-03

漏洞信息

漏洞编号
CVE-2026-34937
漏洞类型
操作系统命令注入
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
PraisonAI

相关标签

命令注入RCEPraisonAICVE-2026-34937OS Command Injection

漏洞概述

PraisonAI在1.5.90之前的版本中存在严重的安全漏洞。当`run_python()`函数处理用户输入时,由于转义逻辑不完善,未能过滤`$()`和反引号等Shell特殊字符。攻击者可利用此缺陷,在Python代码执行前注入并执行任意操作系统命令,从而完全控制受影响的系统。

技术细节

该漏洞源于PraisonAI的`run_python()`函数使用了不安全的命令构造方式。它将用户控制的代码直接拼接到`python3 -c "<code>"`字符串中,并使用`subprocess.run(..., shell=True)`执行。尽管代码中存在针对反斜杠和双引号的转义处理,但这不足以防御Shell注入。攻击者可以利用Shell的命令替换特性(如`$(command)`或反引号`` `command` ``),在双引号字符串内插入恶意指令。由于设置了`shell=True`,操作系统Shell会先解析这些命令替换并执行,随后才调用Python解释器。这种机制允许攻击者在Python沙箱启动前就逃逸并执行任意系统命令,导致主机被完全控制。

攻击链分析

STEP 1
步骤1:侦察
攻击者确认目标运行的是PraisonAI 1.5.90之前的版本。
STEP 2
步骤2:构造Payload
攻击者构造包含命令替换语法的恶意输入,例如 $(whoami) 或 `touch /tmp/pwned`。
STEP 3
步骤3:提交输入
攻击者将恶意输入传递给PraisonAI的run_python()函数。
STEP 4
步骤4:命令执行
应用程序使用shell=True拼接并执行命令,Shell解析器优先执行攻击者注入的命令。
STEP 5
步骤5:获取权限
攻击者成功在系统上执行任意代码,获得当前用户的控制权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept for CVE-2026-34937 # The vulnerability is triggered by passing shell command substitution syntax to run_python() # Example payload that executes 'id' command via $() payload = '";$(id);#"' # In a real scenario, this payload is sent to the vulnerable application. # The application constructs: python3 -c "";$(id);#"" # Because shell=True is used, the shell executes $(id) before invoking python. print(f"Injecting payload: {payload}") # Result: OS command 'id' is executed with the privileges of the application.

影响范围

PraisonAI < 1.5.90

防御指南

临时缓解措施
建议用户立即将PraisonAI更新至1.5.90或更高版本。如果无法立即升级,应严格限制对`run_python()`功能的访问权限,或通过WAF等安全设备拦截包含`$()`、反引号等特殊字符的请求,从根本上杜绝命令注入风险。

参考链接

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