安全漏洞预警通告—Struts2框架S2-056漏洞安全预警

来源:       发布时间:2018-03-28

1.1. Struts2框架

  Struts2是一个基于MVC(一种软件构件模式)设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2Struts的下一代产品,是在Struts1WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。虽然从Struts1Struts2有着太大的变化,但是相对于WebWorkStruts2的变化很小。 

1.2. 漏洞概述

  S2-056漏洞发生于Apache Struts2REST插件,当使用XStream组件对XML格式的数据包进行反序列化操作,且未对数据内容进行有效验证时,攻击者可通过提交恶意XML数据对应用进行远程DoS攻击。 

1.3. 影响范围

  受该漏洞影响的版本为Struts 2.1.1 - Struts 2.5.14.1,不受影响版本为Struts 2.5.16 

1.4. 解决建议

  Apache Struts官方在新版本Struts 2.5.16中针对S2-056漏洞进行了防护,建议应用Apache Struts2 REST插件的用户排查框架版本是否受漏洞影响,及时升级框架并替换XML解析器为Jackson XML处理类JacksonXmlHandler 

  1.登录到官网的下载页面,下载Apache Struts 2.5.16,并升级应用框架: 

    http://struts.apache.org/download.cgi 

  2.除Struts 2框架依赖包外,还需要引入Jackson组件的相关依赖包,如: 

<dependency> 

              <groupId>com.fasterxml.jackson.core</groupId> 

              <artifactId>jackson-core</artifactId> 

</dependency> 

<dependency> 

              <groupId>com.fasterxml.jackson.core</groupId> 

            <artifactId>jackson-databind</artifactId> 

</dependency> 

<dependency> 

              <groupId>com.fasterxml.jackson.dataformat</groupId> 

              <artifactId>jackson-dataformat-xml</artifactId> 

              <optional>true</optional> 

</dependency> 

  3. 在应用系统的struts.xml配置文件中配置xml解析器为Struts 2.5.16版本提供的JacksonXmlHandler类。示例如下: 

<bean name="myXml" type="org.apache.struts2.rest.handler.ContentTypeHandler" class=" org.apache.struts2.rest.handler.JacksonXmlHandler" /> 

  然后配置struts.properties文件中,使自定义的xml处理器覆盖框架默认解析器。示例如下: 

struts.rest.handlerOverride.xml=myXml 

       

1.5. 参考链接

  https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1327 

版权所有:朝阳区教育委员会 京ICP备05038995号
北京市朝阳区现代教育技术信息网络中心(宣教中心)