综述
近日,Apache Tomcat发布通告称修复了一个源于持久化Session的远程代码执行漏洞(CVE-2020-9484)。要利用该漏洞,攻击者需要同时满足以下4个条件:
- 攻击者可以控制服务器上的文件名/文件内容;
- 服务器上配置使用了PersistenceManager的FileStore;
- PersistenceManager配置了sessionAttributeValueClassNameFilter值为“NULL”或者其他宽松的过滤器,使得攻击者可以提供反序列化对象;
- 攻击者知道FileStore使用的存储位置到可控文件的相对路径。
攻击者在同时满足以上4个条件时,可以发送一个恶意构造的请求,来造成反序列化代码执行漏洞。
受影响产品版本
- Apache Tomcat 10.x < 10.0.0-M5
- Apache Tomcat 9.x < 9.0.35
- Apache Tomcat 8.x < 8.5.55
- Apache Tomcat 7.x < 7.0.104
不受影响产品版本
- Apache Tomcat 10.x >= 10.0.0-M5
- Apache Tomcat 9.x >= 9.0.35
- Apache Tomcat 8.x >= 8.5.55
- Apache Tomcat 7.x >= 7.0.104
漏洞检测
一:从Apache Tomcat官网下载的安装包名称中会包含Tomcat的版本号,如果用户解压后没有更改Tomcat的目录名称,可以通过查看文件夹名称来确定当前使用的版本。
如果解压后的Tomcat目录名称被修改过,或者通过Windows Service Installer方式安装,可使用软件自带的version模块来获取当前的版本。也可以进入Tomcat安装目录的bin目录,运行version.bat(Linux运行version.sh)后,可查看当前的软件版本号。
二:查看conf/context.xml文件或具体项目的server.xml文件中,是否存在以下<Manager>节点
若当前版本在受影响范围内且在PersistenceManager配置中使用了FileStore,则可能存在安全风险。
漏洞防护
目前官方已在最新版本中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:
版本号 | 下载地址 |
Apache Tomcat 10.0.0-M5 | https://tomcat.apache.org/download-10.cgi |
Apache Tomcat 9.0.35 | https://tomcat.apache.org/download-90.cgi |
Apache Tomcat 8.5.55 | https://tomcat.apache.org/download-80.cgi |
Apache Tomcat 7.0.104 | https://tomcat.apache.org/download-70.cgi |
其他防护措施:
Apache Tomcat官方已经发布新版本修复上述漏洞,建议受影响用户尽快升级进行防护。不方便升级的用户,还可以暂时禁用FileStore功能,或者单独配置sessionAttributeValueClassNameFilte的值来确保只有特定属性的对象可以被序列化/反序列化。
参考链接: