CVE-2026-40158PraisonAI在4.5.128之前的版本中存在严重安全漏洞。其基于AST的Python沙箱机制未能正确处理动态属性解析,攻击者可利用`type.__getattribute__`绕过对`__subclasses__`等危险属性的检查。成功利用该漏洞可导致沙箱逃逸,在运行不受信任的代理代码时执行任意代码,对系统机密性、完整性和可用性造成严重影响。
该漏洞源于PraisonAI的`praisonaiagents/tools/python_tools.py`文件中的`_execute_code_direct`函数。该函数旨在通过解析抽象语法树(AST)来阻止访问危险的Python内置属性,如`__subclasses__`、`__globals__`和`__bases__`,以防止沙箱逃逸。然而,其过滤逻辑存在缺陷,仅检查了`ast.Attribute`节点,而忽略了通过内置方法`type.__getattribute__`进行的动态调用。攻击者可以将危险属性名作为字符串常量(`ast.Constant`)传递给`type.__getattribute__`函数。由于字符串常量不在AST属性节点的黑名单检查范围内,沙箱无法识别并拦截该调用。这使得攻击者能够成功获取危险属性并执行任意Python代码,完全绕过安全限制。