XStream 二进制流驱动导致的堆栈溢出拒绝服务漏洞(CVE-2024-47072)

admin 2024年11月10日15:28:23评论31 views字数 1224阅读4分4秒阅读模式

XStream 二进制流驱动导致的堆栈溢出拒绝服务漏洞(CVE-2024-47072)

XStream 是一个流行的 Java 序列化库,广泛用于将对象转换为 XML 或 JSON 格式,以及从这些格式反序列化对象。XStream 提供了一个优化的二进制序列化格式,通过 BinaryStreamDriver 实现高效的数据流处理。这个格式采用 ID 来去重字符串值,优化数据的存储与传输。

01 漏洞描述

漏洞类型:XStream二进制流驱动导致的堆栈溢出拒绝服务漏洞(CVE-2024-47072)

简述:XStream 中的 BinaryStreamDriver 存在堆栈溢出漏洞,攻击者可以通过提供恶意构造的二进制输入流来触发此漏洞。在二进制数据反序列化(unmarshalling)过程中,XStream 在读取数据流时会进行递归操作。如果输入数据经过特意操控,可以导致无限递归,最终引发堆栈溢出错误,导致应用程序崩溃。
XStream 的 BinaryStreamDriver 在序列化时会为字符串值生成 ID,并在反序列化时读取这些 ID 来恢复原始数据。反序列化过程中,当读取到映射令牌时,XStream 会进行简单的一次性递归处理。如果输入数据被特意修改,可能会导致递归进入死循环,最终引发堆栈溢出,造成服务中断。
官方POC示例:
final byte[] byteArray = new byte[36000];for (int i = 0; i < byteArray.length / 4; i++) {      byteArray[i * 4] = 10;      byteArray[i * 4 + 1] = -127;      byteArray[i * 4 + 2] = 0;      byteArray[i * 4 + 3] = 0;}XStream xstream = new XStream(new BinaryStreamDriver());xstream.fromXML(new ByteArrayInputStream(byteArray));

XStream 二进制流驱动导致的堆栈溢出拒绝服务漏洞(CVE-2024-47072)

02 漏洞影响版本

  • 所有使用 XStream 版本 1.4.20 及以下,并且配置了 BinaryStreamDriver 的版本都受到此漏洞影响。

  • 该漏洞的攻击者可以利用精心构造的二进制数据流,导致目标应用程序发生堆栈溢出,触发拒绝服务(DoS)攻击

03 漏洞修复方案

1. 升级 XStream:最有效的修复方案是升级 XStream 到修复此漏洞的版本(1.4.21 或更高版本),从而避免使用存在漏洞的 BinaryStreamDriver。
2. 捕获异常: 如果无法立刻升级,可以在调用 XStream 反序列化方法时,通过捕获 StackOverflowError 来应对潜在的崩溃问题,但这并非一种理想的长期解决方案。
3. 禁用 BinaryStreamDriver: 如果使用该驱动是非必需的,考虑禁用或替换为其他更加安全的序列化驱动。

04 参考链接

https://x-stream.github.io/CVE-2024-47072.html

END

XStream 二进制流驱动导致的堆栈溢出拒绝服务漏洞(CVE-2024-47072)

XStream 二进制流驱动导致的堆栈溢出拒绝服务漏洞(CVE-2024-47072)

原文始发于微信公众号(锋刃科技):XStream 二进制流驱动导致的堆栈溢出拒绝服务漏洞(CVE-2024-47072)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月10日15:28:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XStream 二进制流驱动导致的堆栈溢出拒绝服务漏洞(CVE-2024-47072)https://cn-sec.com/archives/3379494.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息