Apache Tomcat: HTTP/2 header handling DoS
Description
Denial of Service due to improper input validation vulnerability for HTTP/2 requests in Apache Tomcat. When processing an HTTP/2 request, if the request exceeded any of the configured limits for headers, the associated HTTP/2 stream was not reset until after all of the headers had been processed.This issue affects Apache Tomcat: from 11.0.0-M1 through 11.0.0-M16, from 10.1.0-M1 through 10.1.18, from 9.0.0-M1 through 9.0.85, from 8.5.0 through 8.5.98. Other, older, EOL versions may also be affected.
Users are recommended to upgrade to version 11.0.0-M17, 10.1.19, 9.0.86 or 8.5.99 which fix the issue.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Apache Tomcat fails to promptly reset HTTP/2 streams that exceed header limits, allowing an attacker to cause a denial of service by sending oversized headers.
Root
Cause
CVE-2024-24549 is a denial of service vulnerability in Apache Tomcat's HTTP/2 header processing. The root cause is improper input validation: when an HTTP/2 request exceeds any of the configured limits for headers, the associated stream is not reset until after all headers have been processed [1][2]. The validation that should trigger a reset is delayed until the onHeadersComplete method, rather than being performed as soon as the limit is exceeded. This means an attacker can send a request with a large number of headers that surpass the server's limits, and the server will continue processing the entire header block before resetting the stream [4].
Exploitation
An unauthenticated remote attacker can exploit this vulnerability by sending crafted HTTP/2 requests that contain excessive headers. No special privileges or network position beyond the ability to reach the Tomcat server are required. The attack is straightforward: the attacker simply sends a request that exceeds any of the configured header limits (e.g., maximum number of headers, maximum header size). The vulnerability affects all versions of Tomcat 8.5.x up to 8.5.98, 9.0.x up to 9.0.85, 10.1.x up to 10.1.18, and 11.0.x up to 11.0.0-M16 [1][2].
Impact
A successful exploit leads to a denial of service. Because the server consumes resources (CPU, memory) to process the entire header block before resetting the stream, an attacker can cause resource exhaustion by sending multiple such requests. This can degrade performance or crash the Tomcat server, affecting availability for legitimate users. The vulnerability is rated as important severity [2].
Mitigation
Apache has released fixed versions: 11.0.0-M17, 10.1.19, 9.0.86, and 8.5.99 [1][2]. The fix moves the header validation earlier in the processing pipeline, so that streams exceeding limits are reset promptly without processing all headers [4]. Users are strongly recommended to upgrade to these versions. Older, end-of-life versions may also be affected and should be upgraded to a supported release.
AI Insight generated on May 20, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
org.apache.tomcat:tomcat-coyoteMaven | >= 11.0.0-M1, < 11.0.0-M17 | 11.0.0-M17 |
org.apache.tomcat:tomcat-coyoteMaven | >= 10.1.0-M1, < 10.1.19 | 10.1.19 |
org.apache.tomcat:tomcat-coyoteMaven | >= 9.0.0-M1, < 9.0.86 | 9.0.86 |
org.apache.tomcat:tomcat-coyoteMaven | >= 8.5.0, < 8.5.99 | 8.5.99 |
org.apache.tomcat.embed:tomcat-embed-coreMaven | >= 8.5.0, < 8.5.99 | 8.5.99 |
org.apache.tomcat.embed:tomcat-embed-coreMaven | >= 9.0.0-M1, < 9.0.86 | 9.0.86 |
org.apache.tomcat.embed:tomcat-embed-coreMaven | >= 10.1.0-M1, < 10.1.19 | 10.1.19 |
org.apache.tomcat.embed:tomcat-embed-coreMaven | >= 11.0.0-M1, < 11.0.0-M17 | 11.0.0-M17 |
Affected products
119- osv-coords118 versionspkg:apk/chainguard/spark-3.5.0-compatpkg:apk/chainguard/spark-3.5.0-compat-minimalpkg:apk/chainguard/tomcat-9pkg:apk/chainguard/tomcat-9-openjdk-11pkg:apk/chainguard/tomcat-9-openjdk-17pkg:apk/chainguard/tomcat-9-openjdk-21pkg:apk/chainguard/tomcat-9-openjdk-8pkg:apk/wolfi/tomcat-9pkg:apk/wolfi/tomcat-9-openjdk-11pkg:apk/wolfi/tomcat-9-openjdk-17pkg:apk/wolfi/tomcat-9-openjdk-21pkg:apk/wolfi/tomcat-9-openjdk-8pkg:bitnami/tomcatpkg:maven/org.apache.tomcat.embed/tomcat-embed-corepkg:maven/org.apache.tomcat/tomcat-coyotepkg:rpm/almalinux/tomcatpkg:rpm/almalinux/tomcat-admin-webappspkg:rpm/almalinux/tomcat-docs-webapppkg:rpm/almalinux/tomcat-el-3.0-apipkg:rpm/almalinux/tomcat-jsp-2.3-apipkg:rpm/almalinux/tomcat-libpkg:rpm/almalinux/tomcat-servlet-4.0-apipkg:rpm/almalinux/tomcat-webappspkg:rpm/opensuse/apache-commons-daemon&distro=openSUSE%20Leap%2015.5pkg:rpm/opensuse/apache-commons-dbcp&distro=openSUSE%20Leap%2015.5pkg:rpm/opensuse/apache-commons-pool2&distro=openSUSE%20Leap%2015.5pkg:rpm/opensuse/geronimo-specs&distro=openSUSE%20Leap%2015.5pkg:rpm/opensuse/jakarta-taglibs-standard&distro=openSUSE%20Leap%2015.5pkg:rpm/opensuse/tomcat10&distro=openSUSE%20Leap%2015.5pkg:rpm/opensuse/tomcat10&distro=openSUSE%20Tumbleweedpkg:rpm/opensuse/tomcat&distro=openSUSE%20Leap%2015.5pkg:rpm/opensuse/tomcat&distro=openSUSE%20Tumbleweedpkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Enterprise%20Storage%207.1pkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP2-LTSSpkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP3-LTSSpkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-ESPOSpkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-LTSSpkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Web%20and%20Scripting%2015%20SP5pkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP2-LTSSpkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP3-LTSSpkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP4-LTSSpkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP2pkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP3pkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP4pkg:rpm/suse/apache-commons-daemon&distro=SUSE%20Manager%20Server%204.3pkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Enterprise%20Storage%207.1pkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP2-LTSSpkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP3-LTSSpkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-ESPOSpkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-LTSSpkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Web%20and%20Scripting%2015%20SP5pkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP2-LTSSpkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP3-LTSSpkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP4-LTSSpkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP2pkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP3pkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP4pkg:rpm/suse/apache-commons-dbcp&distro=SUSE%20Manager%20Server%204.3pkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Enterprise%20Storage%207.1pkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP2-LTSSpkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP3-LTSSpkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-ESPOSpkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-LTSSpkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Web%20and%20Scripting%2015%20SP5pkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP2-LTSSpkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP3-LTSSpkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP4-LTSSpkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP2pkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP3pkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP4pkg:rpm/suse/apache-commons-pool2&distro=SUSE%20Manager%20Server%204.3pkg:rpm/suse/geronimo-specs&distro=SUSE%20Enterprise%20Storage%207.1pkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP2-LTSSpkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP3-LTSSpkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-ESPOSpkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-LTSSpkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Development%20Tools%2015%20SP5pkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Package%20Hub%2015%20SP5pkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Web%20and%20Scripting%2015%20SP5pkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP2-LTSSpkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP3-LTSSpkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP4-LTSSpkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP2pkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP3pkg:rpm/suse/geronimo-specs&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP4pkg:rpm/suse/geronimo-specs&distro=SUSE%20Manager%20Server%204.3pkg:rpm/suse/geronimo-specs&distro=SUSE%20Manager%20Server%20Module%204.3pkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Enterprise%20Storage%207.1pkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP2-LTSSpkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP3-LTSSpkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-ESPOSpkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-LTSSpkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Web%20and%20Scripting%2015%20SP5pkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP2-LTSSpkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP3-LTSSpkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP4-LTSSpkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP2pkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP3pkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP4pkg:rpm/suse/jakarta-taglibs-standard&distro=SUSE%20Manager%20Server%204.3pkg:rpm/suse/tomcat10&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Web%20and%20Scripting%2015%20SP5pkg:rpm/suse/tomcat&distro=SUSE%20Enterprise%20Storage%207.1pkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP2-LTSSpkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP3-LTSSpkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-ESPOSpkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20High%20Performance%20Computing%2015%20SP4-LTSSpkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Web%20and%20Scripting%2015%20SP5pkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP5pkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%2012%20SP5-LTSSpkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP2-LTSSpkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP3-LTSSpkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP4-LTSSpkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2012%20SP5pkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP2pkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP3pkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP4pkg:rpm/suse/tomcat&distro=SUSE%20Linux%20Enterprise%20Server%20LTSS%20Extended%20Security%2012%20SP5pkg:rpm/suse/tomcat&distro=SUSE%20Manager%20Server%204.3
< 3.5.0-r4+ 117 more
- (no CPE)range: < 3.5.0-r4
- (no CPE)range: < 3.5.0-r4
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: < 9.0.86-r0
- (no CPE)range: >= 8.5.0, < 8.5.99
- (no CPE)range: >= 8.5.0, < 8.5.99
- (no CPE)range: >= 11.0.0-M1, < 11.0.0-M17
- (no CPE)range: < 1:9.0.87-1.el9_4.1
- (no CPE)range: < 1:9.0.87-1.el9_4.1
- (no CPE)range: < 1:9.0.87-1.el9_4.1
- (no CPE)range: < 1:9.0.87-1.el9_4.1
- (no CPE)range: < 1:9.0.87-1.el9_4.1
- (no CPE)range: < 1:9.0.87-1.el9_4.1
- (no CPE)range: < 1:9.0.87-1.el9_4.1
- (no CPE)range: < 1:9.0.87-1.el9_4.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 10.1.20-150200.5.22.2
- (no CPE)range: < 10.1.20-1.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-1.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 1.3.4-150200.11.14.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.1.1-150200.10.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 2.4.2-150200.11.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.2-150200.15.8.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 1.1.1-150000.4.10.1
- (no CPE)range: < 10.1.20-150200.5.22.2
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.36-3.124.1
- (no CPE)range: < 9.0.115-3.160.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.36-3.124.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.87-150200.65.1
- (no CPE)range: < 9.0.115-3.160.1
- (no CPE)range: < 9.0.87-150200.65.1
- Apache Software Foundation/Apache Tomcatv5Range: 11.0.0-M1
Patches
4d07c82194edbReport HTTP/2 header parsing errors earlier
2 files changed · +11 −5
java/org/apache/coyote/http2/Http2Parser.java+6 −5 modified@@ -283,6 +283,9 @@ protected void readHeadersFrame(int streamId, int flags, int payloadSize, ByteBu swallowPayload(streamId, FrameType.HEADERS.getId(), padLength, true, buffer); + // Validate the headers so far + hpackDecoder.getHeaderEmitter().validateHeaders(); + if (Flags.isEndOfHeaders(flags)) { onHeadersComplete(streamId); } else { @@ -446,6 +449,9 @@ protected void readContinuationFrame(int streamId, int flags, int payloadSize, B readHeaderPayload(streamId, payloadSize, buffer); + // Validate the headers so far + hpackDecoder.getHeaderEmitter().validateHeaders(); + if (endOfHeaders) { headersCurrentStream = -1; onHeadersComplete(streamId); @@ -637,11 +643,6 @@ protected void onHeadersComplete(int streamId) throws Http2Exception { Http2Error.COMPRESSION_ERROR); } - // Delay validation (and triggering any exception) until this point - // since all the headers still have to be read if a StreamException is - // going to be thrown. - hpackDecoder.getHeaderEmitter().validateHeaders(); - synchronized (output) { output.headersEnd(streamId, headersEndStream);
webapps/docs/changelog.xml+5 −0 modified@@ -171,6 +171,11 @@ <code>Content-Type</code> value to improve performance by reducing repeated <code>byte[]</code> to <code>String</code> conversions. (markt) </fix> + <fix> + Improve error reporting to HTTP/2 clients for header processing errors + by reporting problems at the end of the frame where the error was + detected rather than at the end of the headers. (markt) + </fix> </changelog> </subsection> <subsection name="Jasper">
8e03be9f2698Report HTTP/2 header parsing errors earlier
2 files changed · +11 −5
java/org/apache/coyote/http2/Http2Parser.java+6 −5 modified@@ -283,6 +283,9 @@ protected void readHeadersFrame(int streamId, int flags, int payloadSize, ByteBu swallowPayload(streamId, FrameType.HEADERS.getId(), padLength, true, buffer); + // Validate the headers so far + hpackDecoder.getHeaderEmitter().validateHeaders(); + if (Flags.isEndOfHeaders(flags)) { onHeadersComplete(streamId); } else { @@ -446,6 +449,9 @@ protected void readContinuationFrame(int streamId, int flags, int payloadSize, B readHeaderPayload(streamId, payloadSize, buffer); + // Validate the headers so far + hpackDecoder.getHeaderEmitter().validateHeaders(); + if (endOfHeaders) { headersCurrentStream = -1; onHeadersComplete(streamId); @@ -637,11 +643,6 @@ protected void onHeadersComplete(int streamId) throws Http2Exception { Http2Error.COMPRESSION_ERROR); } - // Delay validation (and triggering any exception) until this point - // since all the headers still have to be read if a StreamException is - // going to be thrown. - hpackDecoder.getHeaderEmitter().validateHeaders(); - synchronized (output) { output.headersEnd(streamId, headersEndStream);
webapps/docs/changelog.xml+5 −0 modified@@ -171,6 +171,11 @@ <code>Content-Type</code> value to improve performance by reducing repeated <code>byte[]</code> to <code>String</code> conversions. (markt) </fix> + <fix> + Improve error reporting to HTTP/2 clients for header processing errors + by reporting problems at the end of the frame where the error was + detected rather than at the end of the headers. (markt) + </fix> </changelog> </subsection> <subsection name="Jasper">
810f49d5ff6dReport HTTP/2 header parsing errors earlier
2 files changed · +11 −5
java/org/apache/coyote/http2/Http2Parser.java+6 −5 modified@@ -266,6 +266,9 @@ protected void readHeadersFrame(int streamId, int flags, int payloadSize, ByteBu swallowPayload(streamId, FrameType.HEADERS.getId(), padLength, true, buffer); + // Validate the headers so far + hpackDecoder.getHeaderEmitter().validateHeaders(); + if (Flags.isEndOfHeaders(flags)) { onHeadersComplete(streamId); } else { @@ -429,6 +432,9 @@ protected void readContinuationFrame(int streamId, int flags, int payloadSize, B readHeaderPayload(streamId, payloadSize, buffer); + // Validate the headers so far + hpackDecoder.getHeaderEmitter().validateHeaders(); + if (endOfHeaders) { headersCurrentStream = -1; onHeadersComplete(streamId); @@ -620,11 +626,6 @@ protected void onHeadersComplete(int streamId) throws Http2Exception { Http2Error.COMPRESSION_ERROR); } - // Delay validation (and triggering any exception) until this point - // since all the headers still have to be read if a StreamException is - // going to be thrown. - hpackDecoder.getHeaderEmitter().validateHeaders(); - synchronized (output) { output.headersEnd(streamId, headersEndStream);
webapps/docs/changelog.xml+5 −0 modified@@ -182,6 +182,11 @@ <code>Content-Type</code> value to improve performance by reducing repeated <code>byte[]</code> to <code>String</code> conversions. (markt) </fix> + <fix> + Improve error reporting to HTTP/2 clients for header processing errors + by reporting problems at the end of the frame where the error was + detected rather than at the end of the headers. (markt) + </fix> </changelog> </subsection> <subsection name="Jasper">
0cac540a8822Report HTTP/2 header parsing errors earlier
2 files changed · +11 −5
java/org/apache/coyote/http2/Http2Parser.java+6 −5 modified@@ -265,6 +265,9 @@ private void readHeadersFrame(int streamId, int flags, int payloadSize) throws H swallowPayload(streamId, FrameType.HEADERS.getId(), padLength, true); + // Validate the headers so far + hpackDecoder.getHeaderEmitter().validateHeaders(); + if (Flags.isEndOfHeaders(flags)) { onHeadersComplete(streamId); } else { @@ -405,6 +408,9 @@ private void readContinuationFrame(int streamId, int flags, int payloadSize) thr readHeaderPayload(streamId, payloadSize); + // Validate the headers so far + hpackDecoder.getHeaderEmitter().validateHeaders(); + if (endOfHeaders) { headersCurrentStream = -1; onHeadersComplete(streamId); @@ -576,11 +582,6 @@ private void onHeadersComplete(int streamId) throws Http2Exception { Http2Error.COMPRESSION_ERROR); } - // Delay validation (and triggering any exception) until this point - // since all the headers still have to be read if a StreamException is - // going to be thrown. - hpackDecoder.getHeaderEmitter().validateHeaders(); - output.headersEnd(streamId, headersEndStream); if (headersEndStream) {
webapps/docs/changelog.xml+5 −0 modified@@ -165,6 +165,11 @@ <code>Content-Type</code> value to improve performance by reducing repeated <code>byte[]</code> to <code>String</code> conversions. (markt) </fix> + <fix> + Improve error reporting to HTTP/2 clients for header processing errors + by reporting problems at the end of the frame where the error was + detected rather than at the end of the headers. (markt) + </fix> </changelog> </subsection> <subsection name="Jasper">
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
12- github.com/advisories/GHSA-7w75-32cg-r6g2ghsaADVISORY
- lists.apache.org/thread/4c50rmomhbbsdgfjsgwlb51xdwfjdcvgghsavendor-advisoryWEB
- nvd.nist.gov/vuln/detail/CVE-2024-24549ghsaADVISORY
- www.openwall.com/lists/oss-security/2024/03/13/3ghsaWEB
- github.com/apache/tomcat/commit/0cac540a882220231ba7a82330483cbd5f6b1f96ghsaWEB
- github.com/apache/tomcat/commit/810f49d5ff6d64b704af85d5b8d0aab9ec3c83f5ghsaWEB
- github.com/apache/tomcat/commit/8e03be9f2698f2da9027d40b9e9c0c9429b74dc0ghsaWEB
- github.com/apache/tomcat/commit/d07c82194edb69d99b438828fe2cbfadbb207843ghsaWEB
- lists.debian.org/debian-lts-announce/2024/04/msg00001.htmlghsaWEB
- lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/3UWIS5MMGYDZBLJYT674ZI5AWFHDZ46BghsaWEB
- lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/736G4GPZWS2DSQO5WKXO3G6OMZKFEK55ghsaWEB
- security.netapp.com/advisory/ntap-20240402-0002ghsaWEB
News mentions
0No linked articles in our index yet.