XStream是一个Java对象和XML相互转换的工具,用来将对象序列化成XML(JSON)或将XML反序列化为对象,并提供所有的基础类型、数组、集合等类型直接转换的支持。

近日,奇安信CERT监测到XStream中存在拒绝服务漏洞(CVE-2022-41966),XStream在将XML反序列化为对象时存在堆栈溢出,未经身份验证的远程攻击者通过操纵输入流,使XStream在递归散列计算时触发堆栈溢出,导致拒绝服务。目前,此漏洞技术细节与POC已公开。鉴于此漏洞影响范围较大,建议客户尽快做好自查,及时更新至最新版本。

漏洞名称

XStream 拒绝服务漏洞(CVE-2022-41966)

公开时间

2022-12-28

更新时间

2022-12-28

CVE编号

CVE-2022-41966

其他编号

QVD-2022-47322

威胁类型

拒绝服务

技术类型

不受控的资源消耗

厂商

XStream

产品

XStream

风险等级

奇安信CERT风险评级

风险等级

高危

蓝色(一般事件)

现时威胁状态

POC状态

EXP状态

在野利用状态

技术细节状态

已公开

未发现

未发现

已公开

漏洞描述

XStream中存在拒绝服务漏洞。XStream(com.thoughtworks.xstream:xstream)在将XML反序列化为对象时存在堆栈溢出,未经身份验证的远程攻击者通过操纵输入流来替换或注入对象,使XStream在递归散列计算时触发堆栈溢出,导致拒绝服务。

影响版本

XStream < 1.4.20

不受影响版本

XStream >= 1.4.20

其他受影响组件

奇安信CERT已成功复现XStream 拒绝服务漏洞(CVE-2022-41966),截图如下:

威胁评估

漏洞名称

XStream 拒绝服务漏洞

CVE编号

CVE-2022-41966

其他编号

QVD-2022-47322

CVSS 3.1评级

高危

CVSS 3.1分数

8.2

CVSS向量

访问途径(AV

攻击复杂度(AC

网络

所需权限(PR

用户交互(UI

不需要

不需要

影响范围(S

机密性影响(C

不改变

完整性影响(I

可用性影响(A

危害描述

XStream中存在堆栈溢出,未经身份验证的远程攻击者通过操纵输入流来替换或注入对象,使XStream在递归散列计算时触发堆栈溢出,消耗系统的内存和 CPU资源,导致拒绝服务。

处置建议

1、安全更新

目前XStream官方已发布安全版本修复该漏洞,建议受影响用户尽快更新至对应的安全版本。

https://x-stream.github.io/download.html

2、缓解措施

  • 在调用XStream的代码中捕获StackOverflowError 异常,如:

  • 如果对象图不引用任何元素,可以设置为NO_REFERENCE模式:

    XStream xstream =new XStream();xstream.setMode(XStream.NO_REFERENCES);

    • 如果对象图既不包含Hashtable、HashMap也不包含 HashSet(或它其他变种),那么可以使用安全框架来拒绝使用这些类型:

      XStream xstream = new XStream();xstream.denyTypes(new Class[]{java.util.HashMap.class, java.util.HashSet.class, java.util.Hashtable.class, java.util.LinkedHashMap.class, java.util.LinkedHashSet.class});

      • 可更新反序列化时 java.util.Map和java.util.Set的默认实现:

        xstream.addDefaultImplementation(java.util.TreeMap.class,java.util.Map.class);xstream.addDefaultImplementation(java.util.TreeSet.class,java.util.Set.class);

        参考资料

        [1]https://x-stream.github.io/CVE-2022-41966.html

        声明:本文来自奇安信 CERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。