Apache Tomcat Session 反序列化代码执行漏洞(CVE-2021-25329)

一.  漏洞概述

Apache Tomcat 是由Apache软件基金会属下Jakarta项目开发的Servlet容器。在CVE-2021-25329 Apache Tomcat Session 反序列化代码执行漏洞中,由于官方在CVE-2020-9484漏洞修复上存在不足,攻击者可能可以构造恶意请求,绕过CVE-2020-9484补丁,造成反序列化代码执行漏洞。成功利用该漏洞需要同时满足下列四个条件:

1、攻击者能够控制服务器上文件的内容和名称

2、服务器PersistenceManager配置中使用了FileStore

3、服务器PersistenceManager配置中设置了sessionAttributeValueClassNameFilter为NULL,或者使用了其他较为宽松的过滤器,允许攻击者提供反序列化数据对象

4、攻击者知道使用的FileStore存储位置到可控文件的相对文件路径。

整体利用条件较为苛刻,实际危害相对较低,为彻底防止漏洞潜在风险,仍建议 Apache Tomcat用户修复漏洞。

二.  影响范围

受影响版本

Apache Tomcat 10.0.0-M1—10.0.0

Apache Tomcat 9.0.0.M1—9.0.41

Apache Tomcat 8.5.0—8.5.61

Apache Tomcat 7.0.0—7.0.107

不受影响版本

Apache Tomcat 10.x>=10.0.2

Apache Tomcat 9.x>=9.0.43

Apache Tomcat 8.x>=8.5.63

Apache Tomcat 7.x>=7.0.108

注:此问题已在Tomcat 10.0.1、9.0.42和8.5.62中修复,但这些版本未通过发行。

三.  漏洞检测

3.1  人工检测

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

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

二:查看conf/context.xml文件或具体项目的server.xml文件中,是否存在以下<Manager>节点

若当前版本在受影响范围内且在PersistenceManager配置中使用了FileStore,则可能存在安全风险。 

四.  漏洞防护

4.1  官方升级

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

版本号下载地址
Apache Tomcat 10.0.2https://tomcat.apache.org/download-10.cgi
Apache Tomcat 9.0.43https://tomcat.apache.org/download-90.cgi
Apache Tomcat 8.5.63https://tomcat.apache.org/download-80.cgi
Apache Tomcat 7.0.108https://tomcat.apache.org/download-70.cgi

4.2  其他防护措施

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

禁止使用Session持久化功能FileStore,或者单独配置sessionAttributeValueClassNameFilte的值来确保只有特定属性的对象可以被序列化与反序列化。

声明

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