Apache Struts2 作为世界上最流行的 Java Web 服务器框架之一,3 月 7 日带来了本年度第一个高危漏洞——CVE编号 CVE-2017-5638 。其原因是由于 Apache Struts2 的 Jakarta Multipart parser 插件存在远程代码执行漏洞,攻击者可以在使用该插件上传文件时,修改 HTTP 请求头中的 Content-Type 值来触发该漏洞,导致远程执行代码。
Struts 作为一个“世界级”开源架构,它的一个高危漏洞危害有多大,下面两张图可以让大家对这个漏洞的影响范围有一个直观认识。
【全球互联网上开放的Apache Struts分布】
【中国互联网上开放的Apache Struts分布】
雷锋网从绿盟科技了解到,从 3 月 7 日漏洞曝出到 3 月 9 日不到 36 个小时的时间里,大量用户第一时间通过绿盟云的 Structs2 紧急漏洞检测服务对自己的网站进行检测,共计 22000 余次。
通过对这些数据进行分析,可以看到:
1、从检测数据来看,教育行业受Struts2漏洞影响最多,其次是政府、金融、互联网、通信等行业。
绿盟科技威胁情报中心( NTI ) 通过对检测出漏洞的页面逐一访问,去掉一些无法访问的页面后,按照行业进行了分类,其中,教育行业数量最多占23%,其次是政府占19%,金融占17%,互联网占10%,通信行业占3%以及其他行业领域占27%。
2、从地域来看,北、上、广、沿海城市等经济发达地区成为 Struts2 漏洞高发区,与此同时修复情况也最及时。
从检测页面的地域分布上看,北京最积极占22%,其次是广东9.8%,浙江8.2%,上海7.8%,福建4.9%。从最终的检测结果来看,这也符合“多检多得”的排序,北京检出漏洞页面数量最多占23.6%(符合首都政治教育中心的定位),广东13.7%,浙江10.4%,上海7.9%,福建7.3%。
3、从应对漏洞积极性来说,金融、政府、教育位列前三甲。
雷锋网了解到,应对本次 Struts2 漏洞,金融行业应急反应最为迅速,在漏洞爆发后采取行动也是最迅速的,无论是自行升级漏洞软件还是联系厂商升级防护设备都走在其他行业前列,很多金融行业站点在几个小时之内再次扫描时已经将漏洞修补完成。
官方已经发布版本更新,尽快升级到不受影响的版本(Struts 2.3.32或Struts 2.5.10.1),建议在升级前做好数据备份。
Struts 2.3.32 下载地址:https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.3.32
Struts 2.5.10.1下载地址:
https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.10.1
2. 临时修复方案
在用户不便进行升级的情况下,作为临时的解决方案,用户可以进行以下操作来规避风险:
在WEB-INF/classes目录下的struts.xml 中的struts 标签下添加<constant name=”struts.custom.i18n.resources” value=”global” />;在WEB-INF/classes/ 目录下添加 global.properties,文件内容如下:
struts.messages.upload.error.InvalidContentTypeException=1。
配置过滤器过滤Content-Type的内容,在web应用的web.xml中配置过滤器,在过滤器中对Content-Type内容的合法性进行检测:
对于没有网络防护设备的企业,可以使用专业厂商的防护设备进行防护;或者使用专业安全厂商的针对性安全服务对已有业务进行漏洞排查和修复。正在使用安全防护设备的企业,目前各大安全厂商都已经推出针对该漏洞的紧急升级包,请及时升级已有防护设备的防护规则和检测规则。
雷锋网注:该文数据和图表均由绿盟科技提供。