Apache Struts2 插件高危漏洞最全应急响应攻略

2017-09-08 15:41
来源: 360企业安全

近日,有国外安全研究人员发现 Struts2 框架的 REST 插件存在远程代码执行漏洞,此漏洞编号为:CVE-2017-9805。

REST 是为 Struts2 框架提供 Restful 支持的非默认插件。该插件利用 XStream Handler 对来自客户端的 XML 数据转换时,将会触发针对于 XStream 的反序列化漏洞,从而造成远程代码执行。

360安全监测与响应中心将持续关注该事件进展,并第一时间为您更新该事件信息。

漏洞描述

漏洞存在于非默认的插件中,首先确认应用是否使用了REST插件,如果没有使用,则不受此次漏洞影响。

如果 WEB 应用的 WEB-INF/lib 目录下存在以“struts2-rest-plugin” 开头的jar文件,且文件名不是“struts2-rest-plugin-2.5.13.jar”或者 “struts2-rest-plugin-2.3.34.jar”,则有可能存在漏洞。

目前漏洞相关的技术细节和利用代码已经公开,漏洞极有可能被积极利用获取对用户系统的控制,需要引起高度注意。

风险等级

某厂商安全监测与响应中心风险评级为:高

预警等级:蓝色预警(一般网络安全事件)

影响范围

官方提供的受影响的 Struts 2 框架版本为:Struts 2.5 - Struts 2.5.12,但经过核实,发现 Struts 2.3.X 的版本也受此漏洞影响。

处置手段

1. 如果程序中包含REST插件但是并没有真正用到它,请删除REST插件。

2. 如果应用目前正在使用Struts 2.5系列,则将 Struts主体框架以及 REST 插件升级至最新的 Struts 2.5.13。如果正在使用 Struts 2.3系列,则将 Struts 主体框架以及 REST 插件升级至最新的 Struts 2.3.34。

3. 或者在 struts.xml 中添加如下配置:

<constant name="struts.action.extension" value="xhtml,,json" />

以禁止 REST 插件处理 XML 请求,注意如果应用本身依赖于 XML 请求,禁用掉会导致应用无法正常工作。

注意事项

如果选择将 Struts2框架升级到 Struts 2.5.13 或者 Struts 2.3.34,有可能造成某些 REST actions工作不正常,此时请开发人员参考新版本 Struts2 框架引入的新的接口来解决此问题:

org.apache.struts2.rest.handler.AllowedClasses

org.apache.struts2.rest.handler.AllowedClassNames

org.apache.struts2.rest.handler.XStreamPermissionProvider