CVE-2026-33155DeepDiff 5.0.0至8.6.2之前的版本存在内存耗尽漏洞。该漏洞源于其Pickle反序列化器未限制被允许类的构造函数参数。攻击者可利用`bytes`或`list`类型的构造函数,通过40字节的恶意载荷强制分配超过10GB内存,从而导致应用程序崩溃。
该漏洞的核心在于DeepDiff实现的`_RestrictedUnpickler`未能完全防御不安全的反序列化操作。虽然它通过白名单机制限制了可被加载的类(如`builtins.bytes`),但并未校验这些类在实例化时接收的参数大小。Python的某些内置类型(如`list`、`bytes`、`range`)允许通过构造函数参数指定预分配的内存空间。攻击者可以构造一个特制的Pickle数据流,其中包含对`bytes(10000000000)`等操作的指令。当DeepDiff加载该数据时,由于缺乏参数校验,系统会尝试立即分配巨大的内存块,导致资源耗尽(OOM),最终使服务不可用。攻击者无需认证即可通过网络(AV:N)发起攻击。这种攻击方式极为高效,仅需极小的网络带宽即可造成严重的破坏,属于典型的拒绝服务攻击。