Jackson框架Java反序列化远程代码执行漏洞技术分析与防护方案

北京时间4月15日,Jackson框架被发现存在一个反序列化代码执行漏洞。该漏洞存在于Jackson框架下的enableDefaultTyping方法,通过该漏洞,攻击者可以远程在服务器主机上越权执行任意代码,从而取得该网站服务器的控制权。

Jackson是一个开源的Java序列化与反序列化工具,可以将java对象序列化为xml或json格式的字符串,或者反序列化回对应的对象,由于其使用简单,速度较快,且不依靠除JDK外的其他库,被众多用户所使用。Jackson官方已经发布补丁修复了该开源组件。

相关地址:

http://www.cnvd.org.cn/flaw/show/CNVD-2017-04483

https://github.com/FasterXML/jackson-databind/issues/1599

受影响的版本

  • Jackson Version 2.7.* < 2.7.10
  • Jackson Version 2.8.* < 2.8.9

不受影响的版本

  • Jackson Version 2.7.10
  • Jackson Version 2.8.9

注:

截止到该报告发布时,官方还没有正式发布上述新版本,请用户持续关注并在新版本发布时及时更新升级。

漏洞分析

漏洞简介

Jackson框架enableDefaultTyping方法存在Java反序列化代码执行漏洞,攻击者利用漏洞可在服务器主机上执行任意代码或系统指令,取得网站服务器的控制权。目前,供应商发布了安全公告及相关补丁信息,修复了此漏洞。

漏洞分析

补丁分析:

在这个补丁中,项目作者根据NotSoSerial(https://github.com/kantega/notsoserial)这个项目做了一些黑名单处理,将几个通用的反序列利用库加入到了黑名单。再看它的test目录的补丁文件,是有一个测试用例,这个测试示例的代码应该是漏洞作者提交给该项目的,从这个示例中就可以看出poc的端倪。

在测试用例中引用了com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl,同时它会包含outputProperties,transletName,transletBytecodes这三个字段。后续没有特别说明的话jdk版本都是jdk1.7.0_05。

Jackson data-bind的反序列化处理流程如下:

在反序列化outputProperties的时候会调用newTransformer,在newTransformer中调用newInstance实例化一个对象。这个对象就可以是攻击者构造的有害代码。

分析完反序列化的流程之后我们来构造下poc:

在Test类中调用了Runtime.getRuntime().exec(“calc”)来弹出计算机,编译完之后得到test.class,这就是攻击者的有害代码。

在testIssue1599这个类中,首先是读取前面生成的Test.class的内容,然后enableDefaultType,最后调用readValue来达到执行poc的目的。效果如下:

官方解决方案

  • Jackson官方即将发布新版本修复该漏洞,请使用受影响版本组件的用户尽快更新Jackson的jar包升级到不受影响的版本。

请参考链接:

https://github.com/FasterXML/jackson-databind/issues/1599

  • 由于官方还没有正式发布不受影响的新版本,用户可以手动修改7.*,2.8.*以及master分支的代码来防护该漏洞:

具体操作请参考链接:

https://github.com/FasterXML/jackson-databind/commit/fd8dec2c7fab8b4b4bd60502a0f1d63ec23c24da

技术防护方案

产品类

  • 使用绿盟科技防护类产品(IPS/IDS/NF/WAF)进行防护:

入侵防护系统(IPS)

http://update.nsfocus.com/update/listIps

入侵检测系统(IDS)

http://update.nsfocus.com/update/listIds

下一代防火墙系统(NF)

http://update.nsfocus.com/update/listNf

Web应用防护系统(WAF)

http://update.nsfocus.com/update/wafIndex

通过上述链接,升级至最新版本即可进行防护!

服务类

绿盟科技提供专业的安全技术服务,全方位的保障客户应用系统安全,避免受此漏洞影响。

  • 短期服务:我们可以提供应急服务,服务内容包括对客户应用系统有针对性的提供修复建议,保障客户系统的安全升级。
  • 中长期服务:结合绿盟科技检测与防护产品,提供7*24的安全运营服务,在客户应用系统遭到安全威胁时第一时间通知客户,并定期进行安全检测,针对安全风险提供专业的解决方案。

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

如果您需要了解更多内容,可以
加入QQ群:570982169
直接询问:010-68438880

Spread the word. Share this post!

Meet The Author

Leave Comment