Apache Tomcat条件竞争代码执行漏洞(CVE-2024-50379)

一、漏洞概述

近日,绿盟科技CERT监测到Apache发布安全公告,修复了Apache Tomcat条件竞争代码执行漏洞(CVE-2024-50379)。由于Windows文件系统与Tomcat在路径大小写区分处理上的不一致,当启用了默认servlet的写入功能(设置readonly=false且允许PUT方法),未经身份验证的攻击者可以构造特殊路径绕过Tomcat的路径校验机制,通过条件竞争不断发送请求上传包含恶意JSP代码的文件触发Tomcat对其解析和执行,从而实现远程代码执行。CVSS评分9.8,目前已有PoC公开,请相关用户尽快采取措施进行防护。
Apache Tomcat是一个开源的Java应用服务器,由 Apache 软件基金会开发和维护,广泛用于各种Web应用开发与部署场景中。
参考链接:

https://www.mail-archive.com/announce@apache.org/msg09703.html

 

二、影响范围

受影响版本

  • 11.0.0-M1 <= Apache Tomcat <= 11.0.1
  • 10.1.0-M1 <= Apache Tomcat <= 10.1.33
  • 9.0.0.M1 <= Apache Tomcat <= 9.0.97

注:仅影响在Windows系统下启用PUT请求方法,并将readonly初始化参数设置为非默认值false。

 

不受影响版本

  • Apache Tomcat >= 11.0.2
  • Apache Tomcat >= 10.1.34
  • Apache Tomcat >= 9.0.98

三、漏洞检测

  • 人工检测

一:从Apache Tomcat官网下载的安装包名称中会包含Tomcat的版本号,如果用户解压后没有更改Tomcat的目录名称,可以通过查看文件夹名称来确定当前使用的版本。

如果解压后的Tomcat目录名称被修改过,或者通过Windows Service Installer方式安装,可使用软件自带的version模块来获取当前的版本。也可以进入Tomcat安装目录的bin目录,运行version.bat(Linux运行version.sh)后,可查看当前的软件版本号。

二、如果该版本在受影响的范围内,再检查conf\web.xml文件中是否开启了PUT方法。打开web.xml文件,如果org.apache.catalina.servlets.DefaultServlet处readonly设置成了false,则说明存在漏洞风险。

四、漏洞防护

  • 官方升级

目前官方已发布新版本修复了该漏洞,请受影响的用户尽快升级版本进行防护,下载链接:

https://tomcat.apache.org/download-11.cgi

https://tomcat.apache.org/download-10.cgi

https://tomcat.apache.org/download-90.cgi

  • 临时防护措施

若相关用户暂时无法进行升级操作,也可使用下列措施进行临时缓解:

1、在不影响业务的前提下,相关用户可将conf/web.xml文件中的readonly参数设置为true或进行注释

2、禁用PUT方法并重启Tomcat服务使配置生效。

声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。

绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

Spread the word. Share this post!

Meet The Author