DEV Community
Apache HTTP/2 vulnerability CVE-2026-119618: find every h2 line, upgrade to 2.4.71, check the running process
The Apache HTTP/2 vulnerability CVE-2026-119618 is a critical mod_http2 flaw in Apache HTTP Server 2.4.55 through 2.4.70 that, according to the Apache advisory of 2026-11-11, can lead to remote code execution on a build that offers HTTP/2 (h2 or h2c). Upgrade to 2.4.71 or your distro's fixed httpd and mod_http2 packages, do a full restart, and confirm the process serving traffic loaded the new build. If you cannot upgrade today, remove h2 and h2c from every effective Protocols line. This guide is for Apache servers you own or maintain. CVE-2026-119618 (Apache advisory, 2026-11-11) Component mod_http2, assign_headers() in h2_request.c Affected httpd 2.4.55 through 2.4.70; mod_h2 (GitHub) 2.0.8 through 2.0.42 Fixed httpd 2.4.71, commit 824beab Workaround named none Am I affected? How do I check for the Apache HTTP/2 vulnerability? You are affected when three things hold for the running server: the httpd or mod_http2 build is in the range without a distro backport, http2_module is loaded, and an effective Protocols line offers h2 (HTTP/2 over TLS) or h2c (HTTP/2 over cleartext TCP). That line can sit in the main config, one , or a file pulled in by Include or IncludeOptional. Run the dumps the way the service runs httpd: same executable, same -f, -d and -D arguments, same environment. Read those from the unit first. On Debian, apachectl loads /etc/apache2/envvars for you; a bare apache2 -M does not. # how the service really starts httpd (RHEL: httpd instead of apache2)
systemctl cat apache2 | grep -E 'ExecStart|EnvironmentFile'
version, loaded modules and include tree, with the service's arguments added
apachectl -v
apachectl -M 2>/dev/null | grep http2_module
apachectl -t -D DUMP_INCLUDES
candidate Protocols lines in every included file
apachectl -t -D DUMP_INCLUDES 2>/dev/null | grep -oE '/[^ ]+$' | xargs grep -niE '^\s*protocols\s'
The grep finds candidates. A hit inside or only counts when that condition is true for this service, so read each hit in its scope. On packaged builds the module may not come from the httpd package. On RHEL, Rocky, Alma and Fedora, mod_http2 ships as its own mod_http2 package, so find the owner of the loaded .so and compare that revision with the distro advisory: rpm -qf /usr/lib64/httpd/modules/mod_http2.so # RHEL family: usually mod_http2-
rpm -q httpd mod_http2
dpkg -S mod_http2.so && dpkg-query -W apache2-bin # Debian, Ubuntu: compare with the DSA/USN
apk info --who-owns /usr/lib/apache2/mod_http2.so # Alpine: apache2-http2
Fix it now: how do I patch CVE-2026-119618? # Debian, Ubuntu
sudo apt-get update && sudo apt-get install --only-upgrade apache2 apache2-bin
RHEL, Rocky, Alma, Fedora: upgrade both packages
sudo dnf upgrade httpd mod_http2
Alpine
sudo apk upgrade apache2 apache2-http2
source build or mod_h2 from GitHub: build httpd 2.4.71, or mod_h2 newer than 2.0.42
For the official container image, pulling changes nothing that is already running. Pull, recreate the container the way your deployment does it, then check inside the replacement: docker pull httpd:2.4
recreate: docker compose up -d, a rollout, or docker run with your usual flags
docker exec "$container_name" httpd -v # want 2.4.71 or later
On a host, test the config and do a full stop and start. A graceful restart replaces the children but keeps the parent, which can keep the old binary mapped. sudo apachectl -t && sudo systemctl restart apache2 # httpd on RHEL
pid=$(systemctl show -p MainPID --value apache2)
ps -o lstart=,args= -p "$pid" # start time later than the package install
sudo ls -l /proc/"$pid"/exe # "(deleted)" = stale binary still running
sudo grep -E '.so.(deleted)' /proc/"$pid"/maps # stale modules
A (deleted) mapping means the process still runs files the package manager replaced. An empty result only means nothing stale is mapped. Whether the build is fixed comes from the package ...
Powered by Readybot.io*
External Link
Platform
You are about to visit:
https://example.comThis will open in a new tab. Make sure you trust this link.