Apache 2.4.71 fixes CVE-2026-119618, a critical mod_http2 flaw that can let an unauthenticated attacker run code where HTTP/2 is on. Where each fix stands, a one-minute check, and how to switch HTTP/2 off until your patch lands.
On November 11, 2026, the Apache Software Foundation released Apache HTTP Server 2.4.71. Its main fix is CVE-2026-119618, a race condition in mod_http2, the module that lets Apache speak HTTP/2. Apache rates it critical. Someone who can open an HTTP/2 connection to the server, with no account and no help from a user, can corrupt the server's memory and, according to the advisories, run code inside the Apache process. Versions 2.4.55 through 2.4.70 are affected, along with releases 2.0.8 through 2.0.42 of the standalone mod_h2 module.
The flaw only matters where HTTP/2 is switched on, and in every default installation we tested it is off until someone turns it on. Where it is on, one configuration change closes the hole until a fixed package arrives. This article covers where each fix stands on November 12, how to tell in a minute whether a server is exposed, how to switch HTTP/2 off safely, and how to patch.
Where the Fix Stands on November 12
| Platform | Status on November 12 | What to do now |
|---|---|---|
| Apache HTTP Server, upstream | Fixed in 2.4.71, released November 11 | Upgrade |
| Official httpd Docker image | 2.4.71 tags published November 12 | Pull and redeploy |
| Red Hat Enterprise Linux 10 | Fixed in mod_http2 2.0.29-5.el10_3.1, RHSA-2026:98978 | Update mod_http2 |
| Red Hat Enterprise Linux 9 | Fixed in mod_http2 2.0.26-7.el9_9.1, RHSA-2026:98981 | Update mod_http2 |
| Red Hat Enterprise Linux 8 and older | Not affected | Nothing |
| AlmaLinux 9 and 10 | No fixed mod_http2 in the repositories yet | Check HTTP/2, switch it off if on |
| Debian 13 trixie | Vulnerable, newest package 2.4.69-1~deb13u1 | Check HTTP/2, switch it off if on |
| Debian 12 bookworm | Vulnerable, newest package 2.4.68-1~deb12u1 | Check HTTP/2, switch it off if on |
| Ubuntu 26.04 and 24.04 LTS | No update yet, newest packages from November 9 | Check HTTP/2, switch it off if on |
| Ubuntu 22.04 LTS | No update yet, and its mod_http2 is 2.0.42 | Check HTTP/2, switch it off if on |
| cPanel EasyApache 4 | Moved to 2.4.70 on November 11, still affected | Check HTTP/2, switch it off if on |
| mod_h2 built from GitHub | No fixed release yet, newest is 2.0.42 | Switch HTTP/2 off |
We confirmed the Debian, Ubuntu and AlmaLinux rows by installing Apache in fresh containers on the morning of November 12 and reading what the package manager offered. Debian has fixed the package only in unstable, as 2.4.71-1. The last apache2 update for every supported Ubuntu release was published on November 9, two days before the disclosure. Red Hat shipped its errata on the day of the release.
Ubuntu 22.04 needs a second look. Its package is Apache 2.4.52, which sits below the affected range, and a version check alone would call it safe. Canonical has backported newer HTTP/2 code into that package over the years, though, and the module inside reports itself as mod_http2 2.0.42, which is inside the affected range of the module. Treat 22.04 as exposed wherever HTTP/2 is on, until Canonical says otherwise.
What Goes Wrong
HTTP/2 lets a browser send many requests at once over a single connection. mod_http2 handles those requests on several threads, so one connection can have a worker thread busy on each request while the connection's own thread keeps reading new ones.
The bug sits in assign_headers(), the function that copies a request's HTTP/2 headers into the structure Apache's request handling works with. In one case, a request that carries a Content-Type header but whose body has already ended, Apache adds Content-Length 0. It wrote that value into the header table shared with the connection's thread, not into the request's own copy. Red Hat describes the result as a worker thread writing into memory owned by the connection thread through a shared allocator with no lock. When two threads change the same structure at the same moment, the heap is corrupted, and the advisories say that corruption can be turned into code execution.
That code runs with the rights of the web server user, www-data on Debian and Ubuntu and apache on Red Hat systems, not as root. It is still serious, since the web server user can read the site's code, its configuration files and any database passwords stored in them.
The fix is a single line in modules/http2/h2_request.c. Apache now writes that Content-Length into the request's own header table.
How Serious It Is
Apache rates CVE-2026-119618 critical. The National Vulnerability Database received the record on November 11 and has not scored it yet. Red Hat gives it a CVSS 3.1 score of 9.8, because the attack needs only network access, no login and no user action.
Red Hat lowers its own rating to Important for Red Hat Enterprise Linux 9 and 10. The mod_http2 builds there give every HTTP/2 stream its own allocator, which makes the race much harder to exploit. The flaw is still present in those builds, and they are patched. Red Hat Enterprise Linux 8 and older carry a mod_http2 older than 2.0.8, which does not contain the affected code.
On exploitation the sources differ, so here is what each one says. Red Hat's statement says public research has shown a reliable exploit against a default-configured server with mod_http2 enabled. Wiz wrote on November 11 that no exploit was available and that it had seen no attacks in the wild. The flaw was not in CISA's catalogue of known exploited vulnerabilities on the morning of November 12. Two separate teams found the bug, Anthropic on October 26 and Anthony Weems and Simon Scannell of Google Cloud Vulnerability Research on November 3. Now that the fix is public, the patch itself points to the faulty code, so it is sensible to act this week and not wait for a public exploit.
Is Your Server Exposed
Two things have to be true. The Apache version has to fall in the affected range, and the server has to actually offer HTTP/2. That means mod_http2 is loaded and h2 or h2c is listed in a Protocols directive. Red Hat states that servers serving only HTTP/1.1 are not affected.
The defaults are friendly here. In the official httpd Docker image, the LoadModule line for mod_http2 is commented out. On Debian and Ubuntu the module is installed but not enabled. Its own configuration file contains Protocols h2 h2c http/1.1, so the moment someone runs a2enmod http2, every site on the server offers HTTP/2 over TLS and h2c over plain HTTP. On AlmaLinux 9 and 10, which follow Red Hat Enterprise Linux, the module is loaded by default, but no Protocols line exists anywhere in the configuration, and Apache's built-in default is http/1.1 only. On cPanel, HTTP/2 comes from the optional ea-apache24-mod_http2 package, which cannot be installed together with the prefork or ITK MPM.
In practice, plenty of servers have HTTP/2 turned on, because hosting guides and tuning checklists recommend it. Check on the server itself.
# The Apache version (apache2 -v on Debian and Ubuntu, httpd -v on Red Hat)
apachectl -v
# Is mod_http2 loaded? Any output means yes
apachectl -M 2>/dev/null | grep -i http2
# Where is HTTP/2 offered? Look for h2 or h2c
grep -rni "^\s*Protocols" /etc/apache2 /etc/httpd 2>/dev/null
A Protocols line inside a VirtualHost overrides the global one, so read every line the grep returns, not just the first.
From the outside, curl shows what the server negotiates. Run it against Apache itself. If a CDN or proxy sits in front, the first command tests the proxy, so use the second form from the server.
curl -sI --http2 https://example.com/ | head -1
# "HTTP/2 200" means HTTP/2 was negotiated, "HTTP/1.1 200 OK" means it was not
curl -sI --http2 --resolve example.com:443:127.0.0.1 https://example.com/ | head -1
# h2c on plain HTTP
curl -sI --http2-prior-knowledge http://127.0.0.1/ | head -1
Behind a CDN or a Load Balancer
The attack needs an HTTP/2 connection to Apache itself. If Cloudflare, a load balancer or another proxy takes the visitor's connection and talks HTTP/1.1 to Apache, the visitor's HTTP/2 never reaches mod_http2. Two things undo that protection. One is a proxy set to speak HTTP/2 to the origin, such as Cloudflare's HTTP/2 to Origin setting or an AWS target group with the HTTP2 protocol version. The other is an Apache port that the internet can reach directly, around the proxy. Check both before you decide a server can wait.
Switch HTTP/2 Off Until the Patch Arrives
Browsers negotiate the protocol on every connection and fall back to HTTP/1.1 on their own, so switching HTTP/2 off does not break a site. Pages with many small files load somewhat slower. If a CDN serves your visitors, they keep HTTP/2 from the CDN anyway.
On Debian and Ubuntu, disable the module and reload.
sudo a2dismod http2
sudo apachectl configtest && sudo systemctl reload apache2
On any system, the alternative is to set the protocol list explicitly in the main configuration and remove h2 and h2c from every VirtualHost that lists them.
Protocols http/1.1
On cPanel, remove mod_http2 in WHM under EasyApache 4 and provision the profile. Then run the curl checks again. Each should now print HTTP/1.1.
Turning HTTP/2 off does nothing for the two smaller fixes in 2.4.71, covered below. It does take away the path to the critical one.
Patch
On Red Hat Enterprise Linux 9 and 10 the fix is already in the repositories. Update the module and restart Apache, since a restart loads the new module.
sudo dnf update mod_http2
sudo systemctl restart httpd
rpm -q mod_http2
AlmaLinux and Rocky Linux rebuild these errata and publish their own. Run the same update once dnf offers a mod_http2 newer than the one installed.
On Debian and Ubuntu, wait for the Debian Security Advisory or Ubuntu Security Notice that names CVE-2026-119618, then upgrade the apache2 packages and restart.
sudo apt update
sudo apt install --only-upgrade apache2 apache2-bin
sudo systemctl restart apache2
dpkg -l apache2-bin
Compare the installed version with the one in the advisory. Distributions backport fixes into their own version numbers, so a patched Debian or Ubuntu package will not say 2.4.71.
For containers built on the official image, pull httpd:2.4.71 or rebuild anything that starts FROM httpd:2.4, then redeploy. Images that install apache2 from Debian or Ubuntu need the distribution fix first. Servers built from source can move to the 2.4.71 tarball. Once a server is patched and the version is confirmed, HTTP/2 can go back on.
The Other Two Fixes in 2.4.71
CVE-2026-106023 is rated important. It is a NULL pointer dereference in mod_md, the module that obtains certificates from Let's Encrypt and other ACME providers inside Apache through MDomain directives. It triggers during request processing and crashes an Apache child process. It affects 2.4.30 through 2.4.70, and only servers that load mod_md.
CVE-2026-109163 is rated low. It is a one-byte stack buffer overwrite in mod_vhost_alias, a follow-up to CVE-2026-63292, and it affects only 2.4.69 and 2.4.70.
Neither depends on HTTP/2, so both are reasons to take the 2.4.71 update even on servers that never offered HTTP/2.
What This Means for Your Team
List every server that runs Apache, including the ones behind a CDN and the ones inside containers. For each, record the version and whether HTTP/2 is offered. Patch Red Hat Enterprise Linux 9 and 10 today. On Debian, Ubuntu, AlmaLinux and cPanel, switch HTTP/2 off wherever it is on, and set a reminder to install the distribution fix as soon as its advisory appears. Ubuntu 22.04 belongs on that list too, despite its older version number. Re-enable HTTP/2 only after the patched package is confirmed on the server.
Sources
- Apache HTTP Server 2.4 vulnerabilities, CVE-2026-119618
- NVD entry for CVE-2026-119618
- CVE record for CVE-2026-119618
- Red Hat CVE page for CVE-2026-119618
- Debian security tracker, CVE-2026-119618
- apache2 package publishing history on Launchpad
- The fix commit in Apache httpd
- Wiz, CVE-2026-119618 overview
- Apache mod_http2 documentation
- Apache Protocols directive
- cPanel EasyApache 4 change log
- CISA Known Exploited Vulnerabilities catalog
Frequently asked questions
Which Apache versions are affected by CVE-2026-119618?
CVE-2026-119618 affects Apache HTTP Server 2.4.55 through 2.4.70 and the standalone mod_h2 module from 2.0.8 through 2.0.42. Apache fixed it in 2.4.71, released on November 11, 2026. A server is only exposed when mod_http2 is loaded and h2 or h2c is listed in a Protocols directive, so servers that serve only HTTP/1.1 are not affected.
Is Apache vulnerable to CVE-2026-119618 if HTTP/2 is not enabled?
No. The flaw is in mod_http2 and is reached only over an HTTP/2 connection, so an Apache server that offers only HTTP/1.1 is not affected, as Red Hat states in its advisory. On Debian and Ubuntu the module is off by default, and on AlmaLinux it is loaded but no Protocols line enables h2. Check the server before assuming either way.
How do I check whether Apache has HTTP/2 enabled?
Run apachectl -M 2>/dev/null | grep -i http2 to see whether mod_http2 is loaded, then search the configuration for Protocols lines with grep -rni Protocols /etc/apache2 /etc/httpd. A line that lists h2 or h2c means HTTP/2 is offered. From outside, curl -sI --http2 against the server prints HTTP/2 200 when HTTP/2 is negotiated and HTTP/1.1 when it is not.
How do I disable HTTP/2 in Apache until CVE-2026-119618 is patched?
On Debian and Ubuntu, run sudo a2dismod http2, then sudo apachectl configtest, and reload Apache. On any system, set Protocols http/1.1 in the main configuration and remove h2 and h2c from every VirtualHost that lists them, since a VirtualHost line overrides the global one. Browsers fall back to HTTP/1.1 on their own, so sites keep working.
Is there a fixed Apache package for Debian and Ubuntu?
Not on the morning of November 12, 2026. Debian 12 and 13 are listed as vulnerable, with the fix only in Debian unstable as apache2 2.4.71-1, and the last apache2 update for supported Ubuntu releases was published on November 9, before the disclosure. Until the Debian or Ubuntu advisory that names CVE-2026-119618 appears, switch HTTP/2 off on servers that have it on.
Is Ubuntu 22.04 affected by CVE-2026-119618 even though it runs Apache 2.4.52?
Treat it as affected wherever HTTP/2 is on. Ubuntu 22.04 ships Apache 2.4.52, below the affected range, but Canonical has backported newer HTTP/2 code into the package, and its module reports itself as mod_http2 2.0.42, inside the affected module range. A check on the Apache version number alone would wrongly mark it safe.
Are Red Hat Enterprise Linux and AlmaLinux affected by CVE-2026-119618?
Red Hat Enterprise Linux 9 and 10 are affected and were fixed on November 11, 2026, in mod_http2 2.0.26-7.el9_9.1 (RHSA-2026:98981) and 2.0.29-5.el10_3.1 (RHSA-2026:98978). Red Hat rates them Important, because their mod_http2 gives each stream its own allocator. Red Hat Enterprise Linux 8 and older are not affected. AlmaLinux had not published fixed packages on the morning of November 12.
Is CVE-2026-119618 being exploited in the wild?
Wiz reported no attacks in the wild on November 11, 2026, and the flaw was not in CISA's catalogue of known exploited vulnerabilities on November 12. Red Hat's advisory says public research has shown a reliable exploit against a default-configured server with mod_http2 enabled. Because the fix is public, it is sensible to patch or switch HTTP/2 off this week.
Read how we handle it in Cybersecurity.
Related Articles
The APT Flaw in Debian and Ubuntu and How to Close It
Fixed APT packages for Debian and Ubuntu shipped on November 4 and close CVE-2026-109518, a flaw that let someone on the network path swap a package during an upgrade. Here is who is exposed, how to check a server, and how to install the fix safely.
SecurityLinux TCP Remote Root Flaw CVE-2026-98432 and How to Block It
A 9.8 Linux kernel flaw in the TCP handshake is fixed upstream, in Debian, RHEL and Amazon Linux, while Ubuntu's LTS kernels are still on the way. One tested firewall rule closes the gap until they land. Here is how to check your servers, apply it and remove it after the patch.
SecurityHow to Give Applications AWS Credentials Without Storing Any
Every long-lived access key in your account is a copy waiting to leak, and no amount of rotation discipline fixes that. The alternative is to have no key at all, because each place an application normally needs credentials already has a mechanism that hands it fresh ones on demand. This walks through instance profiles on EC2, task roles on ECS, EKS Pod Identity and IRSA on Kubernetes, and OIDC federation for a CI pipeline, with the trust policy shape for each. It also covers the one condition in the CI trust policy that decides whether the whole thing is secure or theatre.