xstream 反序列化漏洞
  • cnnvd编号:未知
  • 危害等级: 高危 
  • cve编号:cve-2020-26258、cve-2020-26259
  • 漏洞类型: 反序列化
  • 威胁类型:未知
  • 厂       商:未知
  • 漏洞来源:深信服
  • 发布时间:2020-12-15
  • 更新时间:2021-01-14

漏洞简介

1、xstream 组件介绍

xstream是java类库,用来将对象序列化成xml(json)或反序列化为对象。xstream在运行时使用java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。xstream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。在缺省情况下,xstream不需要配置映射关系,对象和字段将映射为同名xml元素。但是当对象和字段名与xml中的元素名不同时,xstream支持指定别名。xstream支持以方法调用的方式,或是java标注的方式指定别名。xstream在进行数据类型转换时,使用系统缺省的类型转换器。同时,也支持用户自定义的类型转换器。

2、漏洞描述

xstream官方在2020年12月份发布的最新安全补丁中披露,存在一个反序列化漏洞。xstream处理的流包含类型信息,用来重新创建以前写入的对象,因此可以基于这些类型信息创建新的实例。攻击者可以操纵处理后的输入流并替换成注入对象,从而删除服务器端的指定文件(cve-2020-26259)。运行xstream的服务在处理反序列化数据时,攻击者构造特定的 xml/json 请求,可以造成服务端请求伪造(cve-2020-26258)。

3、漏洞复现

搭建xstream 1.4.14环境,成功复现漏洞如下:

任意文件删除cve-2020-26259

服务端请求伪造cve-2020-26258

漏洞公示

暂无

参考网站


受影响实体

目前受影响的xstream版本:

xstream <=  1.4.14

补丁

1、临时修复建议

对于使用1.4.14版本的用户,在声明xstream对象之后,可以额外添加下面两行代码:

    xstream.denytypes(new string[]{ "jdk.nashorn.internal.objects.nativestring" });xstream.denytypesbyregexp(new string[]{ ".*\\.readallstream\\$filestream" });

    对于使用1.4.13版本的用户,在声明xstream对象之后,可以额外添加下面三行代码:

      xstream.denytypes(new string[]{ "javax.imageio.imageio$containsfilter", "jdk.nashorn.internal.objects.nativestring" });xstream.denytypes(new class[]{ java.lang.processbuilder.class });xstream.denytypesbyregexp(new string[]{ ".*\\.readallstream\\$filestream" });

      对于使用1.4.7-1.4.12版本的用户,在声明xstream对象之后,可以额外添加下面三行代码:

        xstream.denytypes(new string[]{ "javax.imageio.imageio$containsfilter", "jdk.nashorn.internal.objects.nativestring" });xstream.denytypes(new class[]{ java.lang.processbuilder.class, java.beans.eventhandler.class, java.lang.processbuilder.class, java.lang.void.class, void.class });xstream.denytypesbyregexp(new string[]{ ".*\\$lazyiterator", "javax\\.crypto\\..*", ".*\\.readallstream\\$filestream" });

        对于使用1.4.6及以下版本的用户,在声明xstream对象之后,可以额外添加如下代码:

          xstream.registerconverter(new converter() {  public boolean canconvert(class type) {    return type != null && (type == java.beans.eventhandler.class || type == java.lang.processbuilder.class        || type.getname().equals("javax.imageio.imageio$containsfilter") || type.getname().equals("jdk.nashorn.internal.objects.nativestring")        || type == java.lang.void.class || void.class || proxy.isproxy(type)        || type.getname().startswith("javax.crypto.") || type.getname().endswith("$lazyiterator") || type.getname().endswith(".readallstream$filestream"));  }

          public object unmarshal(hierarchicalstreamreader reader, unmarshallingcontext context) { throw new conversionexception("unsupported type due to security reasons."); }

          public void marshal(object source, hierarchicalstreamwriter writer, marshallingcontext context) { throw new conversionexception("unsupported type due to security reasons."); }}, xstream.priority_low);

          2 、官方正规网赌十大娱乐棋牌的解决方案

          目前厂商已发布升级补丁修复漏洞,请受影响用户及时更新官方补丁。官方链接如下:

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

          3、深信服正规网赌十大娱乐棋牌的解决方案

          深信服下一代防火墙】可轻松防御此漏洞, 建议部署深信服下一代防火墙的用户更新至最新的安全防护规则,可轻松抵御此高危风险。

          深信服云盾】已第一时间从云端自动更新防护规则,云盾用户无需操作,即可轻松、快速防御此高危风险。
          深信服安全感知平台】可检测利用该漏洞的攻击,实时告警,并可联动【深信服下一代防火墙等产品】实现对攻击者ip的封堵。
          深信服安全运营服务】深信服云端安全专家提供7*24小时持续的安全运营服务。对存在漏洞的用户,检查并更新了客户防护设备的策略,确保客户防护设备可以防御此漏洞风险。