一、情况分析
北京时间8月13日,Struts官方发布新的安全通告,公布了2个安全漏洞:S2-059(CVE-2019-0230)是一个潜在的远程代码执行漏洞,S2-060(CVE-2019-0233)是一个拒绝服务漏洞。
这2个漏洞均已在2019年11月份发布的Struts 2.5.22版本中修复,建议未升级的用户尽快升级进行防护。
通告链接:https://struts.apache.org/announce.html#a20200813
S2-059
该漏洞(CVE-2019-0230)源于Apache Struts的框架在被强制使用时,会对标签的属性进行二次求值,这可能导致远程代码执行。只有在Struts标签属性中强制使用OGNL表达式时,才能触发漏洞。
更多信息:https://cwiki.apache.org/confluence/display/ww/s2-059
S2-060
该漏洞(CVE-2019-0233)源于在上传文件时,攻击者可以通过一个特别的请求造成访问权限的错误,从而导致上传操作失败,造成拒绝服务攻击。
更多信息:https://cwiki.apache.org/confluence/display/ww/s2-060
二、影响范围
Struts 2.0.0 – Struts 2.5.20
三、处置建议
Struts官方已经发布了新版本修复了上述漏洞,请受影响的用户尽快升级进行防护。
若不方便升级的用户,可以参考Struts官方提供的缓解措施:
S2-059
将输入参数的值重新分配给某些Struts的标签属性时,请始终对其进行验证。
考虑激活Proactive OGNL Expression Injection Protection。
参考链接:https://cwiki.apache.org/confluence/display/ww/s2-059
S2-060
在struts-default.xml文件中,找到struts.excludedPackageNames常数,并将jave.io.以及java.nio.添加到其属性中。
参考链接:https://cwiki.apache.org/confluence/display/WW/S2-060