CVE-2026-34938PraisonAI是一个多代理团队系统。在1.5.90版本之前,praisonai-agents组件中的execute_code()函数存在安全漏洞。该函数旨在三层沙箱环境中运行攻击者控制的Python代码。然而,攻击者可以通过向_safe_getattr包装器传递一个重写了startswith()方法的str子类来完全绕过沙箱限制。成功利用此漏洞可导致在主机上执行任意操作系统命令。该问题已在1.5.90版本中修复。
该漏洞的核心在于针对Python沙箱机制的绕过技术。PraisonAI在praisonai-agents中实现了一个三层沙箱,试图安全地执行不可信的Python代码。沙箱的防护逻辑依赖于_safe_getattr包装器,该包装器通常使用字符串的startswith()方法来检查属性名称是否以特定前缀(如双下划线__)开头,以此阻止访问危险属性或魔术方法。由于Python允许动态重写内置类型的方法,攻击者可以构造一个继承自str的子类,并覆盖其startswith()方法,使其返回欺骗性的值(例如总是返回False)。当这个特制的字符串对象被传递给沙箱的检查函数时,沙箱误判其为安全对象,从而允许攻击者突破限制,访问并执行Python内置危险函数(如os.system),最终实现在宿主机上执行任意OS命令。