一. 漏洞概述
S2-056漏洞发生于Apache Struts2的REST插件,当使用XStream组件对XML格式的数据包进行反序列化操作,且未对数据内容进行有效验证时,攻击者可通过提交恶意XML数据对应用进行远程DoS攻击。
官方通告如下:
https://cwiki.apache.org/confluence/display/WW/S2-056
二. 影响范围
受影响的版本
Struts 2.1.1 - Struts 2.5.14.1
不受影响的版本
Struts 2.5.16
三. 解决建议
Apache 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组件的相关依赖包,如:
com.fasterxml.jackson.core
jackson-core
com.fasterxml.jackson.core
jackson-databind
com.fasterxml.jackson.dataformat
jackson-dataformat-xml
true
3.在应用系统的struts.xml配置文件中配置xml解析器为Struts 2.5.16版本提供的JacksonXmlHandler类。示例如下:
然后配置struts.properties文件中,使自定义的xml处理器覆盖框架默认解析器。示例如下:
struts.rest.handlerOverride.xml=myXml