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

一.  漏洞概述

3月1日,绿盟科技监测到Apache软件基金会发布安全通告,修复了一个通过会话持久性进行RCE的漏洞,此漏洞为CVE-2020-9484的补丁绕过,如果使用了Tomcat的session持久化功能,不安全的配置将导致攻击者可以发送恶意请求执行任意代码,成功利用此漏洞需要同时满足以下4个条件:

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

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

3)PersistenceManager中的sessionAttributeValueClassNameFilter被配置为“null”,或者过滤器不够严格,导致允许攻击者提供反序列化数据的对象;

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

参考链接:

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

二. 影响范围

受影响版本

  • 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 人工检测

3.1.1

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

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

3.1.2

查看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的值来确保只有特定属性的对象可以被序列化与反序列化。

声明

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

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

Spread the word. Share this post!

Meet The Author

Leave Comment