一、漏洞概述
2022年4月13日,绿盟科技CERT监测到Struts官方发布安全通告,修复了一个远程代码执行漏洞S2-062(CVE-2021-31805)。该漏洞为S2-061的修复不完全,当开发人员使用了 %{…} 语法进行强制OGNL解析时,仍有一些特殊的TAG属性可被二次解析;攻击者可构造恶意的OGNL表达式触发漏洞,从而实现远程代码执行。
Apache Struts是用于创建Java Web应用程序的开源框架,应用非常广泛。该漏洞已在Struts 2.5.30版本中修复,建议相关用户尽快升级版本进行防护。
参考链接:https://cwiki.apache.org/confluence/display/WW/S2-062
二、影响范围
受影响版本
- 2.0.0 <= Apache Struts <= 2.5.29
不受影响版本
- Apache Struts >= 2.5.30
三、 漏洞检测
3.1 人工检测
使用maven打包的项目可通过pom.xml查看当前使用的struts2版本:
也可通过查看lib中的核心包查看struts版本
若当前版本在受影响范围内,则可能存在安全风险。
四、漏洞防护
4.1 官方升级
目前官方已发布新版本修复了此漏洞,请受影响的用户尽快更新进行防护,下载链接:https://struts.apache.org/download.cgi#struts-ga
4.2 其他防护措施
若相关用户暂时无法进行升级操作,可使用以下措施进行临时缓解:
- 将输入参数的值重新分配给某些Struts的标签属性时,始终对其进行验证,不要在值以外的标签属性中使用%{…} 语法引用用户可修改的输入。
- 开启ONGL表达式注入保护
参阅官方指南:
声明
本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。
绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。