在用于对象序列化的流行 Java 库 XStream 中发现了一个高度严重的拒绝服务 (DoS) 漏洞。该漏洞被追踪为 CVE-2024-47072,CVSSv3 得分为 7.5,当使用 BinaryStreamDriver 时,会影响 1.4.20 及以下的所有 XStream 版本。利用此漏洞,攻击者可触发堆栈溢出错误,导致应用程序崩溃和服务中断。
CVE-2024-47072 源自 XStream BinaryStreamDriver 中反序列化过程中对字符串值 ID 的不安全处理。该驱动程序采用了一种将字符串值映射到 ID 的机制,以达到优化目的。然而,读取器实现中的一个缺陷允许恶意行为者在 ID 映射过程中制作输入数据,从而诱发无休止的递归循环。这种不受控制的递归会导致堆栈溢出,最终终止应用程序。
使用 XStream 1.4.20 及更早版本 BinaryStreamDriver 的应用程序,如果处理不受信任的输入或外部输入,很容易受到 DoS 攻击。Trail of Bits 的 Alexis Challande 发现并负责任地披露了该漏洞。
强烈建议立即升级到 XStream 1.4.21 版。该版本包含一个补丁,通过修正 BinaryStreamDriver 中存在缺陷的递归处理来解决该漏洞。
虽然升级到已打补丁的版本是最佳解决方案,但一个临时变通办法是在与 XStream 交互的客户端代码中实施错误处理机制来捕获 StackOverflowError。这种方法可以提供临时保障,同时促进受控关闭或恢复过程。但是,必须认识到这种解决方法并不能解决根本的漏洞问题,因此不应将其视为升级到已打补丁版本的替代方案。
发表评论
您还未登录,请先登录。
登录