Struts2 REST插件漏洞处置手册

北京时间2017年12月1日下午,Struts官方公开了REST 插件的漏洞S2-054(CVE-2017-15707)和S2-055(CVE-2017-7525)。

漏洞概述

S2-054:该漏洞源于REST插件引用的一个过时的JSON-lib库,当请求中包含有特制的JSON payload,服务器端通过JSON-lib对数据解析时,可造成拒绝服务攻击。

S2-055:由于Struts2 框架引用的存在反序列化漏洞的Jackson组件,攻击者可在提交的json数据中嵌入恶意代码,服务器端通过Jackson组件对json数据解析时,会导致远程代码执行。

 

详情请参考如下链接:

https://cwiki.apache.org/confluence/display/WW/S2-054

https://cwiki.apache.org/confluence/display/WW/s2-055

影响范围

受影响的版本

Struts 2.5 – Struts 2.5.14

 

不受影响的版本

Struts 2.5.14.1

  1. 漏洞检测
    • 手工排查

S2-054

在项目中查找是否使用json-lib-2.4-jdk15.jar,如果使用了该jar包,说明存在风险。

S2-055

jackson-databind 组件被RedHat官方通告存在反序列化漏洞(CVE-2017-7525),相关信息科参考https://access.redhat.com/security/cve/CVE-2017-7525,Struts 2.5x版本中引用了存在漏洞的json-databind组件,可导致未授权用户可以执行任意代码,

可在项目中找到以下jackson相关的jar包文件,判断引用的组件版本是否受影响,

jackson-annotations

jackson-core

jackson-databind

如果上述jar包版本低于截图所示的2.9.2版本,则该系统存在远程代码执行的风险。

  1. 防护方案
    • 升级Struts2框架
  1. 升级Struts2框架可有效防护S2-054和S2-055漏洞。登录到官网下载页面,找到Struts 2.5.14.1,访问连接如下:

http://struts.apache.org/download.cgi#struts2514.1

  1. 点击下载依赖包struts-2.5.14.1-lib.zip,解压后进入lib目录。

         3.进入web应用的依赖包目录(web应用名称\WEB-INF\lib),不影响业务的前提下,在struts 2.5.14.1的lib目录中找到对应的jar包进行替换。

  • 临时解决方案

若您由于一些原因暂时不能升级Struts 2整体框架,可参考如下方案,对S2-054和S2-055漏洞进行临时防护。

参考官方的建议,针对S2-054漏洞,使用Jackson框架作为JSON ContentTypeHandler来替换默认的JSON-lib,可对该漏洞进行有效防护。但是由于Jackson存在S2-055反序列化漏洞,因此在替换JSON-lib后,还需更新Jackson版本。具体操作如下:

  1. 使用Jackson替换JSON-lib
  2. 在项目中添加Jackson依赖,打开pom.xml文件,在“<dependencies></dependencies>”标签中添加如下语句:

com.fasterxml.jackson.core
jackson-core
2.9.2


com.fasterxml.jackson.core
jackson-databind
2.9.2

其中2.9.2为最新的Jackson版本,该版本修复了S2-055漏洞。

  1. 设置Jackson Content Handler为默认Content Handler,参考下面的语句,在struts.xml找到相应的配置并进行修改:




 



参考链接如下:

http://struts.apache.org/plugins/rest/#use-jackson-framework-as-json-contenttypehancont

  1. 更新Jackson;
  2. 登录到官网的下载页面,找到Struts 2.5.14.1,访问连接如下:

http://struts.apache.org/download.cgi#struts2514.1

  1. 点击下载依赖包:struts-2.5.14.1-lib.zip

         3.将下载的依赖包解压后,找到以下jar包后,替换到项目中。
以Struts2 2.5.24为例,请替换以下jar包。

 width="531">jackson-annotations-2.9.0.jar

jackson-core-2.9.2.jar

jackson-databind-2.9.2.jar

以Struts2 2.5.24为例,请替换以下jar包。

jackson-annotations-2.8.0.jar -- jackson-annotations-2.9.0.jar

jackson-core-2.8.2.jar -- jackson-core-2.9.2.jar

jackson-databind-2.8.2.jar -- jackson-databind-2.9.2.jar

声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。

绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

 

关于绿盟科技

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

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

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

 

 

Spread the word. Share this post!

Meet The Author

Leave Comment