关于Apache Struts2披露存在远程代码执行漏洞(S2-033)的安全公告

2016-06-03 16:10:18

安全公告编号:CNTA-2016-0023

近日,国家信息安全漏洞共享平台(CNVD)收录了Apache Struts2 S2-033远程代码执行漏洞(CNVD-2016-03754,对应CVE-2016-3087)。远程攻击者利用漏洞在启动动态方法且安装部署了REST插件的Struts 2服务器上远程执行指令。根据评估,该漏洞影响要小于或等同于S2-032漏洞的影响范围。

一、漏洞情况分析

Struts2是第二代基于Model-View-Controller(MVC)模型的java企业级web应用框架,并成为当时国内外较为流行的容器软件中间件。此前在4月底,官方厂商发布了修复S2-032远程代码执行漏洞的Struts 2.3.20.3,2.3.24.3,2.3.28.1相关版本,近日又发布了S2-033的安全升级公告,但提示的对应升级版本号与此前S2-032相同。

根据CNVD技术组成员单位——绿盟科技公司提供的分析情况,在官方提供的版本库中,删除了Struts 2.3.20.2和2.3.24.2版本。这两个版本是通过在DefaultActionMapper.java文件中加入了对method成员变量值的过滤,并针对“action:”滥用的问题禁止了绝大多数的特殊字符,这两个版本也可以防范针对S2-032漏洞的攻击。而最终修复S2-032\S2-033的版本则是直接将method方法引入了OGNL表达式(ObjectGraph Navigation Library),通过对OGNL表达式的过滤来修复漏洞。综合上述情况,CNVD认为官方发布S2-033的安全公告只是有针对性地对部署REST插件功能的情形进行补充,漏洞技术成因仍与S2-032相同。

CNVD对该漏洞的综合评级与S2-032相同,为“高危”。

二、漏洞影响范围

漏洞影响使用REST插件的Struts 2.3.20 - 2.3.28 (除2.3.20.3和2.3.24.3以外)版本。

三、漏洞修复建议

用户可禁用动态方法调用(DynamicMethod Invocation),修改Struts2的配置文件struts.xml,将struts.enable.DynamicMethodInvocation设置为“false”,关闭动态方法调用功能,来规避该漏洞的攻击威胁。

Apache Struts官方已发布了升级程序修复该漏洞,CNVD建议用户升级至struts 2.3.20.3,2.3.24.3,2.3.28.1版本。更新地址:https://cwiki.apache.org/confluence/display/WW/Migration+Guide

附:参考链接:

http://struts.apache.org/docs/s2-033.html

http://www.cnvd.org.cn/flaw/show/CNVD-2016-03754

http://blog.nsfocus.net/apache-struts2-vulnerability-technical-analysis-protection-scheme-s2-033/(绿盟科技公司分析结果)