First published: Wed May 20 2020(Updated: )
A deserialization flaw was discovered in Apache Tomcat's use of a FileStore. An attacker can exploit the flaw if all of the following are true: * An attacker is able to control the contents and name of a file on the server. * The server is configured to use the PersistenceManager with a FileStore. * 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. * The attacker knows the relative file path from the storage location used by FileStore to the file the attacker has control over. If all these conditions are true, the attacker can use a specifically crafted request to trigger Remote Code Execution through deserialization of the file under their control. This flaw affects the following 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. Upstream commits: Tomcat 10.0: <a href="https://github.com/apache/tomcat/commit/bb33048e3f9b4f2b70e4da2e6c4e34ca89023b1b">https://github.com/apache/tomcat/commit/bb33048e3f9b4f2b70e4da2e6c4e34ca89023b1b</a> Tomcat 9.0: <a href="https://github.com/apache/tomcat/commit/3aa8f28db7efb311cdd1b6fe15a9cd3b167a2222">https://github.com/apache/tomcat/commit/3aa8f28db7efb311cdd1b6fe15a9cd3b167a2222</a> Tomcat 8.5: <a href="https://github.com/apache/tomcat/commit/ec08af18d0f9ddca3f2d800ef66fe7fd20afef2f">https://github.com/apache/tomcat/commit/ec08af18d0f9ddca3f2d800ef66fe7fd20afef2f</a> Tomcat 7.0: <a href="https://github.com/apache/tomcat/commit/53e30390943c18fca0c9e57dbcc14f1c623cfd06">https://github.com/apache/tomcat/commit/53e30390943c18fca0c9e57dbcc14f1c623cfd06</a>
Credit: security@apache.org
Affected Software | Affected Version | How to fix |
---|---|---|
redhat/tomcat6 | <0:6.0.24-115.el6_10 | 0:6.0.24-115.el6_10 |
redhat/tomcat | <0:7.0.76-12.el7_8 | 0:7.0.76-12.el7_8 |
redhat/tomcat7 | <0:7.0.70-40.ep7.el6 | 0:7.0.70-40.ep7.el6 |
redhat/tomcat8 | <0:8.0.36-44.ep7.el6 | 0:8.0.36-44.ep7.el6 |
redhat/tomcat-native | <0:1.2.23-22.redhat_22.ep7.el6 | 0:1.2.23-22.redhat_22.ep7.el6 |
redhat/tomcat7 | <0:7.0.70-40.ep7.el7 | 0:7.0.70-40.ep7.el7 |
redhat/tomcat8 | <0:8.0.36-44.ep7.el7 | 0:8.0.36-44.ep7.el7 |
redhat/tomcat-native | <0:1.2.23-22.redhat_22.ep7.el7 | 0:1.2.23-22.redhat_22.ep7.el7 |
redhat/jws5-tomcat | <0:9.0.30-4.redhat_5.1.el6 | 0:9.0.30-4.redhat_5.1.el6 |
redhat/jws5-tomcat-native | <0:1.2.23-5.redhat_5.el6 | 0:1.2.23-5.redhat_5.el6 |
redhat/jws5-tomcat | <0:9.0.30-4.redhat_5.1.el7 | 0:9.0.30-4.redhat_5.1.el7 |
redhat/jws5-tomcat-native | <0:1.2.23-5.redhat_5.el7 | 0:1.2.23-5.redhat_5.el7 |
redhat/jws5-tomcat | <0:9.0.30-4.redhat_5.1.el8 | 0:9.0.30-4.redhat_5.1.el8 |
redhat/jws5-tomcat-native | <0:1.2.23-5.redhat_5.el8 | 0:1.2.23-5.redhat_5.el8 |
redhat/tomcat | <10.0.0 | 10.0.0 |
redhat/tomcat | <9.0.35 | 9.0.35 |
redhat/tomcat | <8.5.55 | 8.5.55 |
redhat/tomcat | <7.0.104 | 7.0.104 |
maven/org.apache.tomcat:tomcat-catalina | >=7.0.0<7.0.104 | 7.0.104 |
maven/org.apache.tomcat:tomcat-catalina | >=8.0.0<8.5.55 | 8.5.55 |
maven/org.apache.tomcat:tomcat-catalina | >=9.0.0<9.0.35 | 9.0.35 |
maven/org.apache.tomcat:tomcat-catalina | >=10.0.0-M1<=10.0.0-M4 | 10.0.0-M5 |
IBM Data Risk Manager | <=2.0.6 | |
debian/tomcat9 | 9.0.43-2~deb11u10 9.0.43-2~deb11u11 9.0.70-2 9.0.95-1 | |
Apache Tomcat | >=7.0.0<7.0.108 | |
Apache Tomcat | >=8.5.0<8.5.63 | |
Apache Tomcat | >=9.0.1<9.0.43 | |
Apache Tomcat | =9.0.0-milestone1 | |
Apache Tomcat | =9.0.0-milestone10 | |
Apache Tomcat | =9.0.0-milestone11 | |
Apache Tomcat | =9.0.0-milestone12 | |
Apache Tomcat | =9.0.0-milestone13 | |
Apache Tomcat | =9.0.0-milestone14 | |
Apache Tomcat | =9.0.0-milestone15 | |
Apache Tomcat | =9.0.0-milestone16 | |
Apache Tomcat | =9.0.0-milestone17 | |
Apache Tomcat | =9.0.0-milestone18 | |
Apache Tomcat | =9.0.0-milestone19 | |
Apache Tomcat | =9.0.0-milestone2 | |
Apache Tomcat | =9.0.0-milestone20 | |
Apache Tomcat | =9.0.0-milestone21 | |
Apache Tomcat | =9.0.0-milestone22 | |
Apache Tomcat | =9.0.0-milestone23 | |
Apache Tomcat | =9.0.0-milestone24 | |
Apache Tomcat | =9.0.0-milestone25 | |
Apache Tomcat | =9.0.0-milestone26 | |
Apache Tomcat | =9.0.0-milestone27 | |
Apache Tomcat | =9.0.0-milestone3 | |
Apache Tomcat | =9.0.0-milestone4 | |
Apache Tomcat | =9.0.0-milestone5 | |
Apache Tomcat | =9.0.0-milestone6 | |
Apache Tomcat | =9.0.0-milestone7 | |
Apache Tomcat | =9.0.0-milestone8 | |
Apache Tomcat | =9.0.0-milestone9 | |
Apache Tomcat | =10.0.0-milestone1 | |
Apache Tomcat | =10.0.0-milestone2 | |
Apache Tomcat | =10.0.0-milestone3 | |
Apache Tomcat | =10.0.0-milestone4 | |
Debian | =8.0 | |
Debian | =9.0 | |
Debian | =10.0 | |
openSUSE | =15.1 | |
Fedora | =31 | |
Fedora | =32 | |
Ubuntu | =16.04 | |
Ubuntu | =20.04 | |
Oracle Agile Engineering Data Management | =6.2.1.0 | |
Oracle Agile PLM | =9.3.3 | |
Oracle Agile PLM | =9.3.5 | |
Oracle Agile PLM | =9.3.6 | |
oracle communications Cloud native core binding support function | =1.10.0 | |
oracle communications Cloud native core policy | =1.14.0 | |
Oracle Communications Diameter Signaling Router | >=8.0.0.0<=8.4.0.5 | |
oracle communications element manager | >=8.2.0<=8.2.2 | |
Oracle Communications Instant Messaging Server | =10.0.1.4.0 | |
oracle communications session report manager | >=8.2.0<=8.2.2 | |
oracle communications session route manager | >=8.2.0<=8.2.2 | |
Oracle Database | =12.2.0.1 | |
Oracle Database | =19c | |
Oracle Database | =21c | |
Oracle Fusion Middleware Platform | =12.2.1.3.0 | |
Oracle Fusion Middleware Platform | =12.2.1.4.0 | |
Oracle Hospitality Guest Access | =4.2.0 | |
Oracle Hospitality Guest Access | =4.2.1 | |
oracle instantis enterprisetrack | >=17.1<=17.3 | |
Oracle Managed File Transfer | =12.2.1.3.0 | |
Oracle Managed File Transfer | =12.2.1.4.0 | |
MySQL Enterprise Monitor | <=8.0.21 | |
Oracle Retail Order Broker | =15.0 | |
oracle siebel apps - marketing | <=21.9 | |
Oracle Siebel User Interface Framework | <=20.12 | |
Oracle Transportation Management | =6.3.7 | |
Oracle Workload Manager | =12.2.0.1 | |
Oracle Workload Manager | =18c | |
Oracle Workload Manager | =19c | |
Trellix ePolicy Orchestrator | =5.9.0 | |
Trellix ePolicy Orchestrator | =5.9.1 | |
Trellix ePolicy Orchestrator | =5.10.0 | |
Trellix ePolicy Orchestrator | =5.10.0-update_1 | |
Trellix ePolicy Orchestrator | =5.10.0-update_2 | |
Trellix ePolicy Orchestrator | =5.10.0-update_3 |
Users may configure the PersistenceManager with an appropriate value for sessionAttributeValueClassNameFilter to ensure that only application provided attributes are serialized and deserialized. For more details about the configuration, refer to the Apache Tomcat 9 Configuration Reference https://tomcat.apache.org/tomcat-9.0-doc/config/manager.html.
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.
(Appears in the following advisories)
CVE-2020-9484 is rated as important due to a deserialization vulnerability that can be exploited by attackers.
To address CVE-2020-9484, upgrade to Apache Tomcat versions 7.0.104, 8.5.55, 9.0.35, or 10.0.0.
CVE-2020-9484 affects Apache Tomcat versions prior to 7.0.104, 8.5.55, 9.0.35, and 10.0.0.
Exploiting CVE-2020-9484 can allow an attacker to execute arbitrary code on the server.
A workaround for CVE-2020-9484 is to reconfigure the server to avoid using a PersistenceManager with a FileStore.