关于Apache Struts 2 S2-032高危漏洞可被利用发起大规模攻击的安全公告

2016-04-26 19:13:14

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

4月26日,互联网上披露了Apache Struts 2 S2-032远程代码执行漏洞(CNVD-2016-02506,CVE-2016-3081 )的利用代码,根据CNVD初步测试,远程攻击者利用漏洞可在开启动态方法调用功能的Apache Struts 2服务器上执行任意代码,取得网站服务器控制权。

一、漏洞情况分析

Struts2是第二代基于Model-View-Controller(MVC)模型的java企业级web应用框架,并成为当时国内外较为流行的容器软件中间件。Struts 2的核心jar包-struts2-core中,存在一个default.properties的默认配置文件用于配置全局信息,当struts.enable.DynamicMethodInvocation= true,即开启动态方法调用。尽管在Struts2目前的安全策略中,对部分动态调用方法进行了特殊字符传递的限制,但在该漏洞中攻击者仍能通过通过OGNL表达式静态调用获取ognl.OgnlContext的DEFAULT_MEMBER_ACCESS属性并覆盖_memberAccess的方式进行绕过,进而可在受控制的服务器端执行任意代码。CNVD对该漏洞的综合评级为“高危”。

二、漏洞影响范围

漏洞影响Struts 2.3.20 -2.3.28 (除2.3.20.3和2.3.24.3以外)版本,同时攻击利用代码已经在互联网上快速传播。目前,对于默认开启动态方法调用功能的ApacheStruts2 服务器比例还需要进一步评估。根据国内民间漏洞报告平台的信息报送情况,目前已经出现涉及银行、保险行业单位以及大型互联网增值电信企业的信息系统受漏洞影响的案例报告。

三、漏洞修复建议

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。未能及时升级的用户也可通过如下参数设置关闭动态方法调用功能来规避该漏洞的攻击威胁:<constantname=“struts.enable.DynamicMethodInvocation”value=“false”/> (注:由于动态方法调用涉及部分通配符功能,此操作暂不能完全确保用户网站系统其他功能不受影响)。

附:参考链接:

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

http://seclab.dbappsecurity.com.cn/?p=924

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