CVE-2026-39888PraisonAI在1.5.115之前的版本中存在严重的沙箱逃逸漏洞。该漏洞源于`execute_code()`函数在沙箱模式下使用的AST属性黑名单机制不完整。攻击者可以利用缺失的帧遍历属性(如`__traceback__`等)绕过沙箱限制,获取真正的Python内置对象,进而调用`exec`函数执行任意代码,导致系统面临完全被控的风险。
漏洞位于PraisonAI的`praisonaiagents.tools.python_tools`模块中。当`execute_code()`以默认的`sandbox_mode="sandbox"`运行时,系统试图通过限制`__builtins__`和AST黑名单来隔离用户代码。然而,子进程包装器内的AST黑名单仅包含11个属性,明显少于直接执行路径中的30+个。关键在于,它遗漏了用于帧遍历的四个属性:`__traceback__`、`tb_frame`、`f_back`和`f_builtins`。攻击者可以捕获一个异常,并通过这些属性链(例如`exc_info.__traceback__.tb_frame.f_back.f_builtins`)访问到包装器帧的真实Python内置字典。由于`exec`函数并未被完全屏蔽,攻击者可以将其提取出来并在非受限变量名下调用,从而彻底绕过所有安全层,实现沙箱逃逸和任意代码执行。