CVE-2026-32640SimpleEval是一个轻量级的Python表达式求值库,广泛应用于需要动态计算表达式的Python项目中。该库旨在为应用程序提供安全的表达式计算能力,通过沙箱机制限制可执行的操作和访问的资源。然而,在1.0.5之前的版本中,存在严重的安全漏洞,攻击者可以利用对象属性的间接访问机制突破沙箱限制,访问本应被禁止的危险模块和函数。该漏洞的CVSS评分高达9.8,属于严重级别,对使用该库的应用系统构成重大安全威胁。攻击者可以通过精心构造的表达式,利用传递给SimpleEval的对象中包含的危险属性,实现任意代码执行。一旦攻击成功,攻击者可以在服务器上执行任意系统命令,窃取敏感数据、植入后门或完全控制受影响的系统。由于该漏洞利用简单且无需认证,建议所有使用SimpleEval的用户立即升级到修复版本。
SimpleEval在1.0.5之前的版本中,对象属性访问的过滤机制存在缺陷。攻击者可以通过以下方式绕过沙箱限制:1) 利用传递给SimpleEval的names字典中的对象,这些对象可能包含对危险模块的引用(如os模块);2) 通过链式属性访问(如obj.__class__.__init__.__globals__)获取全局命名空间;3) 将危险函数作为回调传递给看似安全的内置函数(如map、filter)来间接调用。该漏洞的核心问题在于SimpleEval的ast walker没有正确限制对特殊属性(如__globals__、__builtins__、__class__)的访问。攻击者可以构建表达式如:''().__class__.__bases__[0].__subclasses__()来遍历Python的对象层级结构,最终访问到包含危险函数的类。另一种利用方式是通过传入包含os模块的对象,然后使用该对象的属性访问机制执行系统命令。建议的修复方案是在属性访问时增加严格的白名单验证,禁用对所有双下划线开头的特殊属性的访问,并限制可导入的模块范围。