安全漏洞预警通告—Struts2框架S2-056漏洞安全预警
来源: 发布时间:2018-03-28
1.1. Struts2框架
Struts2是一个基于MVC(一种软件构件模式)设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2的变化很小。
1.2. 漏洞概述
S2-056漏洞发生于Apache Struts2的REST插件,当使用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