CVE-2020-11996 Overview
CVE-2020-11996 is a Denial of Service (DoS) vulnerability affecting Apache Tomcat's HTTP/2 protocol implementation. A specially crafted sequence of HTTP/2 requests can trigger excessive CPU utilization for several seconds. When attackers send a sufficient number of such malicious requests across concurrent HTTP/2 connections, the server can become completely unresponsive, effectively denying service to legitimate users.
This vulnerability poses a significant risk to organizations relying on Apache Tomcat for web application hosting, particularly those with HTTP/2 enabled in production environments. The network-accessible nature of this vulnerability allows remote attackers to launch DoS attacks without requiring authentication.
Critical Impact
Remote attackers can render Apache Tomcat servers unresponsive by sending crafted HTTP/2 request sequences, causing service disruption for all users without requiring authentication.
Affected Products
- Apache Tomcat 10.0.0-M1 to 10.0.0-M5
- Apache Tomcat 9.0.0.M1 to 9.0.35
- Apache Tomcat 8.5.0 to 8.5.55
- Canonical Ubuntu Linux 20.04 LTS
- Oracle MySQL Enterprise Monitor
- Oracle Siebel UI Framework
- Oracle Workload Manager (12.2.0.1, 18c, 19c)
- openSUSE Leap 15.1 and 15.2
- Debian Linux 9.0 and 10.0
- NetApp OnCommand System Manager (3.0, 3.1.3)
Discovery Timeline
- June 26, 2020 - CVE-2020-11996 published to NVD
- November 21, 2024 - Last updated in NVD database
Technical Details for CVE-2020-11996
Vulnerability Analysis
This vulnerability exists in Apache Tomcat's HTTP/2 request handling implementation. The HTTP/2 protocol supports multiplexing multiple requests over a single TCP connection, which introduces complexity in stream management. The vulnerability allows an attacker to craft specific sequences of HTTP/2 requests that trigger inefficient processing patterns within Tomcat's HTTP/2 connector.
When the server processes these maliciously crafted request sequences, it enters a state of high CPU consumption that persists for several seconds per attack iteration. The resource exhaustion occurs because the HTTP/2 implementation fails to properly handle certain edge cases in request stream processing. By maintaining multiple concurrent HTTP/2 connections and continuously sending these crafted request sequences, an attacker can sustain the CPU exhaustion state, eventually rendering the server unable to process legitimate requests.
Root Cause
The root cause lies in improper resource management within Tomcat's HTTP/2 protocol handler. The implementation does not adequately limit or efficiently handle certain patterns of HTTP/2 request sequences, leading to algorithmic complexity issues. When specific request sequences are processed, the server expends disproportionate CPU resources relative to the minimal effort required by the attacker, creating an asymmetric DoS condition.
Attack Vector
The attack is network-based and requires no authentication or user interaction. An attacker can exploit this vulnerability by:
- Establishing multiple concurrent HTTP/2 connections to the target Tomcat server
- Crafting specific sequences of HTTP/2 requests designed to trigger the inefficient processing path
- Continuously sending these request sequences across all established connections
- Maintaining the attack to exhaust server CPU resources and cause unresponsiveness
The attack leverages HTTP/2's multiplexing capabilities and the server's inability to efficiently handle malformed or specially crafted request streams. Since HTTP/2 is commonly enabled on internet-facing web servers, this vulnerability presents a significant exposure for publicly accessible Tomcat deployments.
Detection Methods for CVE-2020-11996
Indicators of Compromise
- Unusual spikes in CPU utilization on Tomcat server processes without corresponding increase in legitimate traffic
- High volume of HTTP/2 connections from single or few source IP addresses
- Server unresponsiveness or significantly degraded response times correlating with HTTP/2 traffic patterns
- Log entries indicating HTTP/2 stream processing errors or timeouts
Detection Strategies
- Monitor for abnormal CPU utilization patterns on servers running vulnerable Tomcat versions with HTTP/2 enabled
- Implement network traffic analysis to identify anomalous HTTP/2 request patterns or connection volumes
- Deploy intrusion detection rules to flag high-frequency HTTP/2 request sequences from individual sources
- Configure alerting on Tomcat thread pool exhaustion or request processing timeouts
Monitoring Recommendations
- Establish baseline metrics for normal HTTP/2 connection counts and CPU utilization patterns
- Implement real-time monitoring of Tomcat's HTTP/2 connector performance metrics
- Set up automated alerts for CPU utilization exceeding normal operational thresholds
- Monitor HTTP/2 connection establishment rates and flag suspicious traffic patterns
How to Mitigate CVE-2020-11996
Immediate Actions Required
- Upgrade Apache Tomcat to patched versions: 10.0.0-M6 or later, 9.0.36 or later, or 8.5.56 or later
- If immediate patching is not possible, consider disabling HTTP/2 support temporarily by removing the HTTP/2 upgrade protocol from the Connector configuration
- Implement rate limiting on HTTP/2 connections at the load balancer or reverse proxy level
- Review and restrict network access to Tomcat servers where possible
Patch Information
Apache has released security patches addressing this vulnerability. Organizations should upgrade to the following versions or later:
- Apache Tomcat 10.x: Upgrade to version 10.0.0-M6 or later
- Apache Tomcat 9.x: Upgrade to version 9.0.36 or later
- Apache Tomcat 8.5.x: Upgrade to version 8.5.56 or later
Additional patches are available from downstream vendors:
- Debian Security Advisory
- Ubuntu Security Notice
- openSUSE Security Announcement
- NetApp Security Advisory
- Oracle Security Alert - October 2020
Workarounds
- Disable HTTP/2 protocol support in Tomcat's server.xml configuration if not strictly required
- Deploy a reverse proxy or web application firewall (WAF) in front of Tomcat to filter malicious HTTP/2 traffic
- Implement connection rate limiting to prevent rapid establishment of multiple concurrent HTTP/2 sessions
- Configure operating system-level CPU resource limits for the Tomcat process to prevent complete system resource exhaustion
# Disable HTTP/2 in Tomcat server.xml
# Remove or comment out the UpgradeProtocol for HTTP/2 from your Connector:
#
# Before (vulnerable):
# <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
# maxThreads="150" SSLEnabled="true">
# <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
# ...
# </Connector>
#
# After (mitigated - HTTP/2 disabled):
# <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
# maxThreads="150" SSLEnabled="true">
# <!-- HTTP/2 disabled as mitigation for CVE-2020-11996 -->
# ...
# </Connector>
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

