IPBUF安全漏洞报告
English
CVE-2026-40153 CVSS 7.4 高危

CVE-2026-40153 PraisonAI环境变量泄露漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-40153
漏洞类型
环境变量泄露
CVSS评分
7.4 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
PraisonAIAgents

相关标签

信息泄露环境变量泄露逻辑漏洞PraisonAIAgentsCVE-2026-40153

漏洞概述

PraisonAIAgents是一个多代理团队系统。在1.5.128版本之前,`shell_tools.py`文件中的`execute_command`函数存在一个安全漏洞。尽管该函数在执行时使用了`shell=False`参数以确保安全,但在第64行手动调用了`os.path.expandvars()`对所有命令参数进行处理,重新实现了Shell级别的环境变量扩展。这一设计缺陷导致攻击者可以利用环境变量(如数据库凭证、API密钥、云访问密钥)进行秘密窃取。此外,其审批系统向审查人员显示的是未扩展的`$VAR`引用,导致实际执行的命令与显示的命令不一致,从而欺骗审批人员。该漏洞已在1.5.128版本中修复。

技术细节

该漏洞的核心在于PraisonAIAgents在处理命令执行时的逻辑错误。开发者为了避免Shell注入攻击,在调用子进程时设置了`shell=False`。然而,代码在将参数传递给子进程之前,手动调用了`os.path.expandvars()`函数。该函数会解析字符串中的环境变量引用(如`$SECRET`或`$HOME`)并将其替换为实际值。攻击者可以向系统提交包含特殊构造参数的命令,例如`echo $DATABASE_PASSWORD`。在审批界面,系统显示的是原始的`$DATABASE_PASSWORD`,审查人员可能认为这只是一个无害的字符串。然而,当命令实际执行时,`os.path.expandvars()`已将其替换为真实的数据库密码,导致敏感信息被输出到日志或返回给攻击者。这种“显示与执行不一致”的机制极大地增加了检测难度,属于典型的逻辑绕过漏洞。

攻击链分析

STEP 1
侦察
攻击者识别目标系统使用了PraisonAIAgents且版本低于1.5.128。
STEP 2
构造载荷
攻击者构造包含环境变量引用的命令参数,例如`cat $GITHUB_TOKEN`或`echo $AWS_KEY`。
STEP 3
提交审批
攻击者将恶意命令提交给系统审批。由于审批界面显示未展开的变量名(如`$AWS_KEY`),审查人员误以为该命令是安全的。
STEP 4
执行与泄露
系统在后台执行命令时,通过`os.path.expandvars`将变量替换为真实的敏感值,导致机密信息被泄露给攻击者。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-40153 # This demonstrates the environment variable expansion vulnerability. import os def vulnerable_execute_command(command_args): # Simulates the vulnerable code in shell_tools.py line 64 # It expands environment variables regardless of shell=False expanded_args = [os.path.expandvars(arg) for arg in command_args] # Log what the reviewer sees vs what executes print(f"[Reviewer View] Command: {' '.join(command_args)}") print(f"[Execution View] Command: {' '.join(expanded_args)}") # In the real scenario, this would execute: subprocess.run(expanded_args, shell=False) return expanded_args # Setup: Assume a sensitive secret exists in the environment os.environ['DATABASE_URL'] = 'postgres://admin:[email protected]:5432/mydb' os.environ['API_KEY'] = 'sk-1234567890abcdef' # Attack Scenario: Attacker requests to echo a variable # The reviewer sees "echo $API_KEY" and thinks it's just text. malicious_input = ["echo", "The", "key", "is:", "$API_KEY"] print("--- Testing Vulnerability ---") vulnerable_execute_command(malicious_input)

影响范围

PraisonAIAgents < 1.5.128

防御指南

临时缓解措施
在无法立即升级的情况下,建议管理员暂停使用命令执行功能,或对所有包含美元符号($)的命令请求进行人工复核,确认其意图。同时,检查系统日志中是否有已发生的敏感信息泄露事件。

参考链接

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