CVE-2024-29370CVE-2024-29370是python-jose库中的一个拒绝服务漏洞,该库是Python中用于处理JSON Web Token (JWT)、JSON Web Signature (JWS)和JSON Web Encryption (JWE)的流行开源工具。漏洞存在于python-jose 3.3.0版本的jwe.decrypt功能中,攻击者可以构造具有极高压缩比的恶意JSON Web Encryption (JWE)令牌。当服务器处理这些恶意构造的JWE token时,会在解压缩过程中消耗大量内存和CPU资源,导致服务响应缓慢甚至完全不可用。这种攻击类似于传统的Zip炸弹攻击,但针对的是JWE令牌的压缩内容。攻击者无需任何认证即可发起攻击,且可以通过网络远程利用此漏洞。对于使用python-jose进行JWE令牌解密处理的Web应用和API服务构成严重威胁,可能导致应用程序崩溃或资源耗尽,影响正常用户的访问请求。
python-jose库的JWE解密功能在处理压缩的JWE内容时存在安全缺陷。JWE标准支持使用DEFLATE算法压缩明文内容以减少传输大小,攻击者利用这一特性构造恶意JWE token。恶意token的压缩内容经过精心构造,解压后会产生远超原始数据的巨大输出(压缩比可达数十万比一)。当调用jose.jwe.decrypt()函数处理此类token时,库会在内存中执行完整的解压缩操作,分配大量内存并消耗CPU时间。对于高压缩比炸弹,可能导致数GB甚至数十GB的内存分配,最终触发OutOfMemoryError或导致系统swap频繁,性能严重下降。攻击者可以通过向暴露JWE解密接口的API发送精心构造的请求来触发漏洞,无需任何身份验证即可实现DoS攻击。修复方案通常包括限制解压缩后的数据大小、对压缩内容进行预检查或限制解压算法的资源使用。