千疮百孔的Struts2应用又曝出存在新的高危远程代码执行漏洞。该漏洞由lgtm.com的安全研究员汇报,编号为CVE-2017-9805,漏洞危害程度为高危(Critical)。当用户使用带有XStream程序的Struts REST插件来处理XML payloads时,可能会遭到远程代码执行攻击。
漏洞编号
CVE-2017-9805
漏洞作者
Man Yue Mo <mmo at semmle dot com>
影响版本
Struts 2.1.2 – Struts 2.3.33, Struts 2.5 – Struts 2.5.12
漏洞等级
严重
漏洞简述
当启用 Struts REST的XStream handler去反序列化处理XML请求,可能造成远程代码执行漏洞。
漏洞描述
当启用 Struts REST的XStream handler去反序列化处理一个没有经过任何类型过滤的XStream的实例,可能导致在处理XML时造成远程代码执行漏洞。
向下兼容
由于Struts的某些默认限制,部分REST插件可能会停止工作。 此时请检查可能导致停止工作接口,这些接口分别是:
org.apache.struts2.rest.handler.AllowedClasses
org.apache.struts2.rest.handler.AllowedClassNames
org.apache.struts2.rest.handler.XStreamPermissionProvider
漏洞POC
暂无
修复建议
- 升级Apache struts 2.5.13版本
- 如果系统没有使用Struts REST插件,那么可以直接删除Struts REST插件(struts2-rest-plugin*.jar),或者在配置文件中加入如下代码,限制服务端文件的扩展名
<constant name=”struts.action.extension” value=”xhtml,,json” />
参考
https://cwiki.apache.org/confluence/display/WW/S2-052