CVE-2026-40153PraisonAIAgents是一个多代理团队系统。在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()`已将其替换为真实的数据库密码,导致敏感信息被输出到日志或返回给攻击者。这种“显示与执行不一致”的机制极大地增加了检测难度,属于典型的逻辑绕过漏洞。