山石网科关于Struts2远程代码执行漏洞(CVE-2017-5638)的声明
3月7日,国家信息安全漏洞共享平台(CNVD)收录并披露了Apache Struts2 S2-045远程代码执行漏洞(CNVD-2017-02474,对应CVE-2017-5638),远程攻击者利用该漏洞可直接取得网站服务器控制权。截止发稿,互联网上已经出现多个利用该漏洞的POC。山石网科在此提醒广大客户尽快针对该漏洞进行修补,或者升级您的安全防护措施。
Struts2是Apache项目下的一个web框架,帮助Java开发者利用J2EE来开发Web相关应用。作为网站开发的底层通用模板,Struts2在大型互联网企业、政府、金融机构等行业有着广泛的应用。来自国家信息安全漏洞共享平台(CNVD)的抽样统计显示,互联网上采用Apache Struts2框架的网站受本次漏洞影响的比例高达60.1%。
关于Struts2漏洞的具体信息及修补方案:
* 漏洞编号 *
CVE-2017-5638
* 漏洞等级 *
高
* 漏洞名称 *
S2-045:Struts2远程执行代码漏洞
* 漏洞描述 *
基于Jakarta Multipart的解析器在执行文件上传时,存在可能的远程代码执行,恶意用户可通过修改HTTP请求头中的Content-Type值,构造恶意请求来触发该漏洞,进而执行任意系统命令。
* 影响版本 *
Struts 2.3.5 – Struts 2.3.31 Struts 2.5 – Struts 2.5.10
* 修补及防护方案 *
1、升级到Struts 2.3.32或Struts 2.5.10.1,官方升级地址:
https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.3.32
https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.10.1
2、Struts2默认使用Jakarta的Common-FileUpload框架来上传文件,可以删除commons-fileupload-x.x.x.jar文件,但这样操作会导致网站上传功能无法正常使用。
、您可以使用Jakarta之外的其他文件解析器,例如cos或pell。您需要修改struts.multipart.parser或(struts.multipart.hander)常量的值为cos/pell,并在classpath中增加相应上传组件的类库。
4、升级您的安全防护产品,例如WAF和NIPS,以确保其已经具备针对该漏洞的防护能力。山石网科全系安全产品不受S2-045漏洞的影响;部署山石网科Web应用防火墙、NIPS、NGFW后,可以有效阻断利用该漏洞的攻击行为。
山石网科Web应用防火墙具有针对Content-Type内容合法性的检测功能,如果您启用了该规则,非法的字段会触发HTTP协议异常告警,进而被拦截。同时,山石网科的安全事件响应团队第一时间开发出针对S2-045漏洞的精准防护规则,并已在现网验证能够有效阻断基于S2-045漏洞的攻击行为。已经部署山石网科Web应用防火墙产品的客户可以执行规则库在线升级,或联系本地的山石网科技术支持人员,为您执行升级操作。
下图是山石网科Web应用防火墙的威胁分析界面截图,可以看到,通过匹配HTTP协议异常特征和最新的Web框架漏洞攻击特征,可以准确检测到S2-045漏洞利用行为并精确阻断。采用最新的规则库,可以检测到漏洞利用行为并精确阻断。
同时,山石网科NIPS和下一代防火墙的规则库也已经升级,用户对NIPS和下一代防火墙的特征库进行升级之后,可以有效防御针对S2-045漏洞的攻击行为。
山石网科Web应用防火墙采用多种尖端技术,如双安全引擎等,有效抵御诸如SQL注入、跨站脚本攻击(XSS)、挂马木马以及恶意扫描等常见的Web攻击。该防火墙还具备敏感信息防泄露、网页防篡改和应用层分布式拒绝服务(DDoS)防护等功能,能够最大限度地确保网站的运行安全。
除了上述安全防护功能外,山石网科Web应用防火墙还支持Web应用加速、应用负载均衡、Bypass和HA等高级功能。这些功能为Web应用提供了全面的防护解决方案,有助于提高网站的稳定性和安全性。