本文为绿盟科技马宇静投稿。
Apache Struts2 作为世界上最流行的 Java Web 服务器框架之一,3 月 7 日带来了本年度第一个高危漏洞——CVE 编号 CVE-2017-5638。其原因是由于 Apache Struts2 的 Jakarta Multipart parser 插件存在远程代码执行漏洞,攻击者可以在使用该插件上传文件时,修改 HTTP 请求头中的 Content-Type 值来触发该漏洞,导致远程执行代码。
Struts 作为一个“世界级”开源架构,它的一个高危漏洞危害有多大,下面两张图可以让大家对这个漏洞的影响范围有一个直观认识。
全球互联网上开放的 Apache Struts 分布
中国互联网上开放的 Apache Struts 分布
数据来源:绿盟科技威胁情报中心 NTI
检测与修复方案
如果您的设备已经检测出存在 Struts2 漏洞,根据您的具体情况有以下三种解决方式:
1.官方解决方案
官方已经发布版本更新,尽快升级到不受影响的版本(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 内容的合法性进行检测:
3.技术解决方案
对于没有网络防护设备的企业,可以使用专业厂商的防护设备进行防护;或者使用专业安全厂商的针对性安全服务对已有业务进行漏洞排查和修复。正在使用安全防护设备的企业,目前各大安全厂商都已经推出针对该漏洞的紧急升级包,请及时升级已有防护设备的防护规则和检测规则。
评论