CVE Vulnerabilities

CVE-2020-9484

Deserialization of Untrusted Data

Published: May 20, 2020 | Modified: Nov 21, 2024
CVSS 3.x
7
HIGH
Source:
NVD
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS 2.x
4.4 MEDIUM
AV:L/AC:M/Au:N/C:P/I:P/A:P
RedHat/V2
RedHat/V3
7 IMPORTANT
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Ubuntu
LOW
root.io logo minimus.io logo echo.ai logo

When using Apache Tomcat versions 10.0.0-M1 to 10.0.0-M4, 9.0.0.M1 to 9.0.34, 8.5.0 to 8.5.54 and 7.0.0 to 7.0.103 if a) an attacker is able to control the contents and name of a file on the server; and b) the server is configured to use the PersistenceManager with a FileStore; and c) the PersistenceManager is configured with sessionAttributeValueClassNameFilter=null (the default unless a SecurityManager is used) or a sufficiently lax filter to allow the attacker provided object to be deserialized; and d) the attacker knows the relative file path from the storage location used by FileStore to the file the attacker has control over; then, using a specifically crafted request, the attacker will be able to trigger remote code execution via deserialization of the file under their control. Note that all of conditions a) to d) must be true for the attack to succeed.

Weakness

The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.

Affected Software

NameVendorStart VersionEnd Version
TomcatApache7.0.0 (including)7.0.108 (excluding)
TomcatApache8.5.0 (including)8.5.63 (excluding)
TomcatApache9.0.1 (including)9.0.43 (excluding)
TomcatApache9.0.0-milestone1 (including)9.0.0-milestone1 (including)
TomcatApache9.0.0-milestone10 (including)9.0.0-milestone10 (including)
TomcatApache9.0.0-milestone11 (including)9.0.0-milestone11 (including)
TomcatApache9.0.0-milestone12 (including)9.0.0-milestone12 (including)
TomcatApache9.0.0-milestone13 (including)9.0.0-milestone13 (including)
TomcatApache9.0.0-milestone14 (including)9.0.0-milestone14 (including)
TomcatApache9.0.0-milestone15 (including)9.0.0-milestone15 (including)
TomcatApache9.0.0-milestone16 (including)9.0.0-milestone16 (including)
TomcatApache9.0.0-milestone17 (including)9.0.0-milestone17 (including)
TomcatApache9.0.0-milestone18 (including)9.0.0-milestone18 (including)
TomcatApache9.0.0-milestone19 (including)9.0.0-milestone19 (including)
TomcatApache9.0.0-milestone2 (including)9.0.0-milestone2 (including)
TomcatApache9.0.0-milestone20 (including)9.0.0-milestone20 (including)
TomcatApache9.0.0-milestone21 (including)9.0.0-milestone21 (including)
TomcatApache9.0.0-milestone22 (including)9.0.0-milestone22 (including)
TomcatApache9.0.0-milestone23 (including)9.0.0-milestone23 (including)
TomcatApache9.0.0-milestone24 (including)9.0.0-milestone24 (including)
TomcatApache9.0.0-milestone25 (including)9.0.0-milestone25 (including)
TomcatApache9.0.0-milestone26 (including)9.0.0-milestone26 (including)
TomcatApache9.0.0-milestone27 (including)9.0.0-milestone27 (including)
TomcatApache9.0.0-milestone3 (including)9.0.0-milestone3 (including)
TomcatApache9.0.0-milestone4 (including)9.0.0-milestone4 (including)
TomcatApache9.0.0-milestone5 (including)9.0.0-milestone5 (including)
TomcatApache9.0.0-milestone6 (including)9.0.0-milestone6 (including)
TomcatApache9.0.0-milestone7 (including)9.0.0-milestone7 (including)
TomcatApache9.0.0-milestone8 (including)9.0.0-milestone8 (including)
TomcatApache9.0.0-milestone9 (including)9.0.0-milestone9 (including)
TomcatApache10.0.0-milestone1 (including)10.0.0-milestone1 (including)
TomcatApache10.0.0-milestone2 (including)10.0.0-milestone2 (including)
TomcatApache10.0.0-milestone3 (including)10.0.0-milestone3 (including)
TomcatApache10.0.0-milestone4 (including)10.0.0-milestone4 (including)
Red Hat Enterprise Linux 6RedHattomcat6-0:6.0.24-115.el6_10*
Red Hat Enterprise Linux 7RedHattomcat-0:7.0.76-12.el7_8*
Red Hat Fuse 7.11RedHat*
Red Hat Fuse 7.9RedHattomcat*
Red Hat JBoss Web Server 3.1RedHattomcat*
Red Hat JBoss Web Server 3 for RHEL 6RedHattomcat7-0:7.0.70-40.ep7.el6*
Red Hat JBoss Web Server 3 for RHEL 6RedHattomcat8-0:8.0.36-44.ep7.el6*
Red Hat JBoss Web Server 3 for RHEL 6RedHattomcat-native-0:1.2.23-22.redhat_22.ep7.el6*
Red Hat JBoss Web Server 3 for RHEL 7RedHattomcat7-0:7.0.70-40.ep7.el7*
Red Hat JBoss Web Server 3 for RHEL 7RedHattomcat8-0:8.0.36-44.ep7.el7*
Red Hat JBoss Web Server 3 for RHEL 7RedHattomcat-native-0:1.2.23-22.redhat_22.ep7.el7*
Red Hat JBoss Web Server 5.3 on RHEL 6RedHatjws5-tomcat-0:9.0.30-4.redhat_5.1.el6jws*
Red Hat JBoss Web Server 5.3 on RHEL 6RedHatjws5-tomcat-native-0:1.2.23-5.redhat_5.el6jws*
Red Hat JBoss Web Server 5.3 on RHEL 7RedHatjws5-tomcat-0:9.0.30-4.redhat_5.1.el7jws*
Red Hat JBoss Web Server 5.3 on RHEL 7RedHatjws5-tomcat-native-0:1.2.23-5.redhat_5.el7jws*
Red Hat JBoss Web Server 5.3 on RHEL 8RedHatjws5-tomcat-0:9.0.30-4.redhat_5.1.el8jws*
Red Hat JBoss Web Server 5.3 on RHEL 8RedHatjws5-tomcat-native-0:1.2.23-5.redhat_5.el8jws*
Red Hat JBoss Web Server (JWS) 5.3RedHattomcat*
Red Hat Runtimes Spring Boot 2.1.15RedHattomcat*
Tomcat7Ubuntubionic*
Tomcat7Ubuntuesm-apps/bionic*
Tomcat7Ubuntuesm-apps/xenial*
Tomcat7Ubuntuesm-infra-legacy/trusty*
Tomcat7Ubuntutrusty*
Tomcat7Ubuntutrusty/esm*
Tomcat7Ubuntuxenial*
Tomcat8Ubuntubionic*
Tomcat8Ubuntuesm-apps/bionic*
Tomcat8Ubuntuesm-infra/xenial*
Tomcat8Ubuntutrusty*
Tomcat8Ubuntuxenial*
Tomcat9Ubuntubionic*
Tomcat9Ubuntueoan*
Tomcat9Ubuntuesm-apps/bionic*
Tomcat9Ubuntuesm-apps/focal*
Tomcat9Ubuntufocal*
Tomcat9Ubuntutrusty*
Tomcat9Ubuntuupstream*

Potential Mitigations

  • Make fields transient to protect them from deserialization.
  • An attempt to serialize and then deserialize a class containing transient fields will result in NULLs where the transient data should be. This is an excellent way to prevent time, environment-based, or sensitive variables from being carried over and used improperly.

References