CVE-2016-8735 — Apache Tomcat Remote Code Execution Vulnerability

CVE-2016-8735

Apache Tomcat — JmxRemoteLifecycleListener Inherits Oracle JMX Deserialization Flaw (CVE-2016-3427); Unauthenticated RCE via Exposed JMX Ports; Patched Tomcat 7.0.73 / 8.0.38 / 8.5.6

What Is Apache Tomcat?

Apache Tomcat is the most widely deployed open-source Java web application server, running hundreds of thousands of enterprise Java applications. Tomcat hosts Java Servlet and JSP applications for enterprises, banks, government systems, and cloud platforms globally. As a critical middleware layer for enterprise Java, Tomcat security vulnerabilities have broad impact across the Java ecosystem. Tomcat is maintained by the Apache Software Foundation and is included in many commercial Java application server products.

Java Management Extensions (JMX) is the Java platform's standard management API, used to expose application metrics, configuration, and management operations to monitoring systems and management consoles. Tomcat's JMX implementation allows remote management of Tomcat server instances over RMI (Remote Method Invocation).

Overview

Actively Exploited. This vulnerability has been added to CISA's Known Exploited Vulnerabilities (KEV) Catalog on May 12, 2023. Federal agencies are required to apply mitigations per BOD 22-01.

CVE-2016-8735 is a remote code execution vulnerability in Apache Tomcat arising from Tomcat's JmxRemoteLifecycleListener not being updated to address the same deserialization issue fixed in Oracle Java SE's JMX implementation (CVE-2016-3427). When Tomcat is configured with JmxRemoteLifecycleListener and JMX ports are network-accessible, an unauthenticated attacker can exploit the Java JMX RMI deserialization path to execute arbitrary code on the Tomcat server. Apache patched CVE-2016-8735 across all active Tomcat branches in November 2016. CISA added it to the KEV catalog in May 2023.

Affected Versions

Apache Tomcat Status
6.0.0 to 6.0.47 Vulnerable (if JmxRemoteLifecycleListener configured)
7.0.0 to 7.0.72 Vulnerable (if JmxRemoteLifecycleListener configured)
8.0.0.RC1 to 8.0.37 Vulnerable (if JmxRemoteLifecycleListener configured)
8.5.0 to 8.5.4 Vulnerable (if JmxRemoteLifecycleListener configured)
9.0.0.M1 to 9.0.0.M11 Vulnerable (if JmxRemoteLifecycleListener configured)
6.0.48 Fixed
7.0.73 Fixed
8.0.38 Fixed
8.5.6 Fixed
9.0.0.M12 Fixed

Important: CVE-2016-8735 only affects Tomcat instances with JmxRemoteLifecycleListener configured in server.xml and with JMX ports (RMI) reachable by the attacker.

Technical Details

Root Cause: JmxRemoteLifecycleListener Inherits Java JMX Deserialization Flaw

CVE-2016-8735 is a deserialization vulnerability (CWE-502) that exists because Apache Tomcat's JmxRemoteLifecycleListener was not updated when Oracle fixed CVE-2016-3427 in the Java JMX implementation.

Background — Java JMX and deserialization: Java JMX uses Java RMI (Remote Method Invocation) for remote management connections. RMI communications use Java serialization to pass objects between the JMX client and server. Java deserialization is inherently dangerous when the deserializing code can load untrusted data: a malformed serialized object can exploit the deserialization process to execute arbitrary code on the server during the ObjectInputStream.readObject() call.

The CVE-2016-3427 / CVE-2016-8735 relationship:

  1. Oracle discovered and patched CVE-2016-3427 in Java SE's JMX implementation (April 2016 CPU) — addressing deserialization in the RMI registry component used by JMX
  2. Apache Tomcat's JmxRemoteLifecycleListener uses Java's JMX/RMI infrastructure but implements its own JMX endpoint registration
  3. The Tomcat listener was not updated to incorporate Oracle's fix — leaving Tomcat's JMX-over-RMI path vulnerable to the same deserialization issue even on patched JDKs
  4. An attacker connecting to Tomcat's JMX RMI port (typically 8086 or configured custom port) can send a malicious serialized Java object
  5. Tomcat deserializes the object, triggering code execution in the Java process with Tomcat's privileges

Exploitation requirements:

  • JmxRemoteLifecycleListener must be configured in Tomcat's server.xml (not enabled by default)
  • JMX RMI port must be network-accessible to the attacker
  • A Java deserialization exploit payload (e.g., via ysoserial) targeting a gadget chain present in Tomcat's classpath

Attack Characteristics

Attribute Detail
Attack Vector Network — Tomcat JMX RMI port
Authentication None required for RMI registry deserialization
Prerequisites JmxRemoteLifecycleListener configured; JMX port reachable
Exploit Java deserialization gadget chain (e.g., ysoserial payloads)
Impact Remote code execution as the Tomcat process user

Discovery

Identified by the Apache Tomcat security team during review of Oracle's CVE-2016-3427 patch for Java JMX; Apache confirmed that Tomcat's JmxRemoteLifecycleListener did not incorporate Oracle's fix and was independently vulnerable.

Exploitation Context

  • JMX as a recurring Java attack surface: Java JMX/RMI deserialization is a well-established exploitation path — tools like ysoserial provide ready-made exploit payloads for dozens of gadget chains present in common Java libraries (Apache Commons Collections, Spring, Groovy); CVE-2016-8735 is exploitable using the same deserialization payloads that targeted many Java applications in 2015–2017
  • JMX port exposure: Organizations frequently expose JMX management ports without authentication on internal networks or cloud infrastructure with broad security groups; JMX was historically used for monitoring without authentication requirements; port scans reveal many Tomcat instances with exposed JMX ports
  • Shodan exposure: Internet-facing Tomcat JMX RMI ports are scannable and exploitable; CVE-2016-8735 affects any internet-facing Tomcat with JmxRemoteLifecycleListener and an exposed JMX port — a configuration present in older enterprise deployments
  • Non-default but common configuration: While JmxRemoteLifecycleListener is not enabled by default, many enterprise Tomcat deployments enable it for operational monitoring; documentation examples showing JMX configuration led to widespread deployment of the vulnerable listener
  • CISA KEV (2023): Added May 2023, reflecting continued exploitation of Java deserialization via JMX against Tomcat servers

Remediation

CISA BOD 22-01 Deadline: June 2, 2023. Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
  1. Upgrade Apache Tomcat — update to a patched version: 6.0.48, 7.0.73, 8.0.38, 8.5.6, or 9.0.0.M12 (or any later release). The patch updates JmxRemoteLifecycleListener to incorporate Oracle's CVE-2016-3427 fix.

  2. Disable JmxRemoteLifecycleListener if not needed — if remote JMX management is not required, remove the JmxRemoteLifecycleListener from server.xml. This eliminates the attack surface entirely.

  3. Restrict JMX port access — if JMX must remain enabled, restrict the JMX RMI port to only authorized management system IP addresses via host firewall rules or network ACLs; JMX ports must never be internet-accessible.

  4. Enable JMX authentication and SSL — configure Tomcat JMX with com.sun.jndi.rmi.registry.registrySocket authentication and SSL; this prevents unauthenticated deserialization connections.

  5. Use serialization filters — Java 9+ supports JEP 290 serialization filters that whitelist allowed deserialization classes; configure jdk.serialFilter or Tomcat's equivalent to restrict JMX deserialization to expected types.

  6. Audit JMX exposure — scan all Tomcat instances in the environment for open JMX RMI ports: nmap -p 8086 <server-ip> or equivalent; any open JMX port should be treated as a critical finding requiring immediate remediation.

Key Details

PropertyValue
CVE ID CVE-2016-8735
Vendor / Product Apache — Tomcat
NVD Published2017-04-06
NVD Last Modified2025-10-22
CVSS 3.1 Score9.8
CVSS 3.1 VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
SeverityCRITICAL
CWE CWE-502 — Deserialization of Untrusted Data find similar ↗
CISA KEV Added2023-05-12
CISA KEV Deadline2023-06-02
Known Ransomware Use No

CVSS 3.1 Breakdown

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Required Action

CISA BOD 22-01 Deadline: 2023-06-02. Apply updates per vendor instructions.

Timeline

DateEvent
2016-04-19Oracle patches CVE-2016-3427 (Java JMX deserialization) in Java SE April 2016 CPU — Apache Tomcat's JmxRemoteLifecycleListener is not updated
2016-11-22Apache Tomcat releases 9.0.0.M12, 8.5.6, 8.0.38, 7.0.73, and 6.0.48 patching CVE-2016-8735
2017-04-06CVE-2016-8735 published by NVD
2023-05-12Added to CISA Known Exploited Vulnerabilities catalog
2023-06-02CISA BOD 22-01 remediation deadline

References

ResourceType
NVD — CVE-2016-8735 Vulnerability Database
CISA KEV Catalog Entry US Government
Apache Tomcat 9 Security Advisories Vendor Advisory
Apache Tomcat 8 Security Advisories Vendor Advisory