【漏洞公告】S2-052:REST插件远程执行命令漏洞

千疮百孔的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

暂无

修复建议

  1. 升级Apache struts 2.5.13版本
  2. 如果系统没有使用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