背景介绍
近期,TencentOS 安全团队监控到 Apache Tomcat 组件存在远程代码执行漏洞(CVE-2025-24813)。监控到漏洞情报后,安全团队第一时间对漏洞进行分析和修复。
Apache Tomcat 是一个开源的 Java Web 应用服务器,它实现了 Java Servlet 和 JavaServer Pages (JSP) 规范。Tomcat 支持多种功能,包括 HTTP/HTTPS 服务、AJP 连接器、以及对 Servlet 和 JSP 的支持,使其成为开发和部署 Java Web 应用程序的理想选择。
若您已使用 Apache Tomcat 软件,建议您及时开展风险自查,如受影响,请及时根据 TencentOS 为用户提供的漏洞修复解决方案进行防护,确保您的系统安全。
漏洞详解
攻击者利用 Apache Tomcat 处理部分 PUT 请求时的逻辑缺陷,构造特殊的 HTTP PUT 请求将路径分隔符替换为“.”,上传恶意序列化文件至默认会话存储目录,且目标系统同时启用 DefaultServlet 写入功能(默认禁用)、开启 partial PUT(默认启用)、使用文件会话持久化默认路径且存在反序列化漏洞库(如 Commons-Collections 3.x),则可触发远程代码执行(RCE),导致服务器被完全控制、敏感数据泄露(如安全配置文件凭据)或业务中断。
受影响自查指南
自查系统是否安装 Apache Tomcat,若未安装,则漏洞不涉及。
[root@tencentos] sudo rpm -qa | grep tomcat
受影响组件版本:
11.0.0-M1 <= Apache Tomcat <= 11.0.2
10.1.0-M1 <= Apache Tomcat <= 10.1.34
9.0.0.M1 <= Apache Tomcat <= 9.0.98
修复方案
若您的版本在受影响范围内,TencentOS yum 源已在第一时间将合入了官方漏洞补丁的包推送至系统仓库,您可通过升级相关应用至安全版本,以修复漏洞。
修复指引:
1. 执行如下命令,安装修复后的 tomcat 包。
[root@tencentos] sudo yum clean all[root@tencentos] sudo yum makecache[root@tencentos] sudo yum update -y tomcat
2. 执行如下命令,确认已成功安装了修复后的 tomcat 包。
[root@tencentos] sudo rpm -q tomcat
具体版本如下:
TencentOS Server V4 :tomcat-9.0.86-8.tl4.1.noarch
TencentOS Server V3 :tomcat-9.0.87-1.tl3.3.noarch
注意:
此步骤可能造成业务中断,请挑选合适时间尽快执行!
3. 执行如下命令,重启 tomcat 服务。
[root@tencentos] sudo systemctl restart tomcat
规避措施
如果您使用的 Apache Tomcat 是老版本,或者不方便升级到最新版本的 Apache Tomcat 时,可使用如下方式进行规避:
1. 排查
/etc/tomcat/web.xml 文件,设置 DefaultServlet 的 readonly 为 true,若无此配置则无需处置。2. 排查
/etc/tomcat/web.xml 文件,设置 DefaultServlet 的 allowPartialPut 为 false,若无此配置需要手动添加。3. tomcat 的文件会话持久化开启状态下,在
context.xml 文件中修改默认的会话存储位置。打开
/etc/tomcat/context.xml 文件,有如下配置代表开启文件会话持久化。<Context\\><Manager className\\="org.apache.catalina.session.PersistentManager"\\><Store className="org.apache.catalina.session.FileStore"directory="xxx" /></Manager\\></Context\\>
会话存储位置由 directory 参数控制,默认值为:<TOMCAT_HOME>/work/Catalina/localhost/<your-app>。
如果 directory 参数提供的值与默认值不同,则不受漏洞影响。
如果 directory 参数没有提供,需添加参数并指定路径,路径不能为默认值。
如果 directory 参数值与默认值相同,需要修改路径。
4. 以上缓解措施执行完成后需要重启 tomcat 服务生效。
注意:
此步骤可能造成业务中断,请挑选合适时间尽快执行!
sudo systemctl restart tomcat