Client Area →
Hosting Insights

nginx Security Updates 2026: All 21 CVEs and the Version to Run

SA

Shehab Ahmed

Systems Engineer, TOSHOST · Oct 6, 2026 · 10 min read

nginx Security Updates 2026: All 21 CVEs and the Version to Run
Keep your site up when it is attacked See DDoS-protected plans →

If you run nginx, 2026 has been a busy year for patching. nginx.org lists 21 security advisories carrying 2026 CVE numbers, fixed across seven releases between February and September. The newest fix shipped on September 15, 2026 in nginx 1.31.6 (mainline) and 1.30.5 (stable). If your server still reports anything older, at least one fix is missing.

This guide puts every one of those fixes in one place: which release closed which CVE, which configuration you need to be exposed, the commands to check your version and update, and one trap that catches people after they patch. Everything below comes from nginx's own advisory list and release notes, linked at the end.

Short version:

  • Check with nginx -v. You have every fix listed here on 1.31.6 or later (mainline) or 1.30.5 or later (stable).
  • The 1.28 branch and older only received the fixes up to March 2026. nginx.org lists the later fixes for 1.30.x and 1.31.x only, so move to one of those.
  • Most of these flaws need a specific feature in your config (rewrite with captures, map with regex, HTTP/3, SSI, WebDAV and so on). That tells you how urgent each one is for you, but it is not a reason to skip the upgrade.
  • After you upgrade, confirm the running worker processes use the new binary. A package upgrade does not always replace a process that is already running.

The versions you need

Release dateMainlineStableCVEs fixed
September 15, 20261.31.61.30.5CVE-2026-90439
July 15, 20261.31.31.30.4CVE-2026-42533, CVE-2026-60005, CVE-2026-56434
June 17, 20261.31.21.30.3CVE-2026-42530 (mainline only), CVE-2026-42055, CVE-2026-48142
May 22, 20261.31.11.30.2CVE-2026-9256
May 13, 20261.31.01.30.1CVE-2026-42926, CVE-2026-42945, CVE-2026-42946, CVE-2026-42934, CVE-2026-40460, CVE-2026-40701
March 24, 20261.29.71.28.3CVE-2026-27654, CVE-2026-27784, CVE-2026-32647, CVE-2026-27651, CVE-2026-28753, CVE-2026-28755
February 4, 20261.29.51.28.2CVE-2026-1642

The target is the top row. Each release includes all earlier fixes, so 1.31.6 or 1.30.5 covers the whole table. (CVE-2026-42530 only ever affected mainline 1.31.0 and 1.31.1, so it was fixed in 1.31.2 and has no stable fix.) Releases 1.31.4 (August 19) and 1.31.5 (September 2) carry no security fixes, which means a server on 1.31.4 or 1.31.5 is missing the September fix.

The newest fix: CVE-2026-90439 (HTTP/3)

The September 15 release fixes a heap buffer overflow in a worker process that can occur "under certain configurations when using HTTP/3 with OpenSSL 3.5.0 and earlier", according to the nginx release notes. nginx.org labels it medium and lists nginx 1.29.2 through 1.31.5 as vulnerable.

You are in the exposed group if two things are true: nginx is built against OpenSSL 3.5.0 or earlier, and you serve HTTP/3 (a listen ... quic line). Check both:

nginx -V 2>&1 | grep -E "nginx version|built with OpenSSL"
nginx -T 2>/dev/null | grep -nE "quic|http3"

If the second command prints nothing, you do not serve HTTP/3 and this particular flaw does not apply to your configuration. Upgrade anyway, because the same release train carries the other fixes.

All 21 advisories, with what you need to be exposed

The "Exposed when" column paraphrases the release notes. nginx's own severity label is in the last column; where the release note mentions possible code execution, we say so, because the label alone understates it.

CVEComponentExposed whennginx severity
CVE-2026-90439HTTP/3HTTP/3 with OpenSSL 3.5.0 and earlier; heap overflow in a workerMedium
CVE-2026-42533map + regexA map variable used in a string after a regex capture, or a non-cacheable variable in a string; heap overflowMajor
CVE-2026-60005slice moduleUnnamed regex captures with slice or background cache update; memory disclosure or worker crashMedium
CVE-2026-56434SSI moduleServer-side includes processing a crafted proxied backend response; use-after-freeMedium
CVE-2026-42530HTTP/3HTTP/3 on 1.31.0 or 1.31.1 only; crafted QUIC session; use-after-freeMajor
CVE-2026-42055proxy to HTTP/2 or gRPCignore_invalid_headers off plus large large_client_header_buffers, proxying to an HTTP/2 or gRPC backend; heap overflowMedium
CVE-2026-48142charset modulecharset_map decoding from UTF-8; limited memory disclosure or crashLow
CVE-2026-9256rewrite moduleOverlapping captures in rewrite rules; heap overflow, "potentially resulting in arbitrary code execution"Medium
CVE-2026-42945rewrite moduleA crafted request handled by the rewrite module; heap overflow, "potentially resulting in arbitrary code execution"Medium
CVE-2026-42926proxy moduleproxy_set_body to an HTTP/2 backend; data injectionMedium
CVE-2026-42946SCGI / uWSGICrafted backend response; memory disclosure or crashMedium
CVE-2026-42934charset modulecharset_map decoding from UTF-8; limited memory disclosure or crashLow
CVE-2026-40460HTTP/3QUIC connection migration; client address spoofingMedium
CVE-2026-40701OCSP resolverssl_ocsp in use; use-after-free while processing a DNS responseMedium
CVE-2026-27654WebDAVCOPY or MOVE in a location with alias; path can leave the document rootMedium
CVE-2026-27784mp4 moduleCrafted mp4 file on 32-bit platformsMedium
CVE-2026-32647mp4 moduleCrafted mp4 fileMedium
CVE-2026-27651mail proxyCRAM-MD5 or APOP with authentication retry enabled; worker crashLow
CVE-2026-28753mail proxyPTR DNS records used to inject data into auth_http requests and the XCLIENT commandMedium
CVE-2026-28755stream + OCSPTLS handshake can succeed although OCSP rejected the client certificateMedium
CVE-2026-1642SSL upstreamAn attacker can inject plain text into a response from an SSL backendMedium

The two flaws nginx rates major are CVE-2026-42533 (a map and regex pattern that is common in real configurations) and CVE-2026-42530 (HTTP/3 on two early 1.31 releases only). The two rewrite-module flaws deserve attention too: rewrite rules with captures exist on almost every WordPress and framework vhost, and the release notes say code execution is possible.

Find out what you actually use

One command lists the features from the table that appear in your effective configuration, including every included file:

nginx -T 2>/dev/null | grep -nE "^\s*(rewrite|map|slice|ssi|charset_map|ssl_ocsp|proxy_set_body|dav_methods|mp4|grpc_pass|mail|stream)\b|quic|http3"

Treat the output as a to-do list for reading, not as a verdict. A rewrite line is not automatically vulnerable, and an empty result does not make an old version safe, because configuration changes later. The reliable answer is the version.

Check your version and update

First, what you have:

nginx -v

Then update through the same channel you installed from.

nginx.org packages on Debian or Ubuntu:

sudo apt update
sudo apt install --only-upgrade nginx
sudo nginx -t

nginx.org packages on RHEL, Rocky or AlmaLinux:

sudo dnf upgrade nginx
sudo nginx -t

Distribution packages need a different check. Distributions often keep an older version number and copy the security fix into it, so nginx -v can look out of date on a patched machine. Read the package changelog instead:

# Debian / Ubuntu
apt changelog nginx | grep -i "CVE-2026" | head -30
# RHEL family
rpm -q --changelog nginx | grep -i "CVE-2026" | head -30

If the CVEs from the table are not mentioned and the distribution has no update for you, switch to the nginx.org repository for the 1.30 stable branch, which is a normal supported path.

The trap after patching: the old binary is still running

Installing a new package puts a new file on disk. It does not change the worker processes that were already started from the old file. Some packages upgrade the running binary for you and some do not, so verify:

ls -l /proc/$(cat /run/nginx.pid)/exe

If the output ends in (deleted), the master process is still running the old, replaced binary. Restart nginx during a quiet moment (sudo systemctl restart nginx) after nginx -t passes. A plain reload re-reads configuration but is not the step that guarantees a new binary, so do not rely on it alone. Then run nginx -v and the /proc check once more.

Is any of this being exploited?

The nginx advisories and release notes we read do not say that any of these flaws are exploited in the wild, and we did not find a statement either way in them. That is the absence of a claim, not a clean bill of health. Check the US CISA Known Exploited Vulnerabilities catalog for the CVE numbers above before you decide how fast to move, and patch the two major ones first.

Whatever the answer is today, internet-facing web servers are scanned constantly. A server that is months behind on the web server itself is exactly what automated scanners are built to find.

Make the next one boring

  • Pick one branch and stay on it. Use the 1.30.x stable branch unless you need a mainline feature, and follow its point releases (every point release from 1.30.1 to 1.30.5 carried security fixes this year).
  • Turn off what you do not use. Several flaws above only matter if a module is in play. Do not enable HTTP/3, WebDAV, SSI or mp4 streaming on a vhost that does not need them.
  • Test before you restart. nginx -t catches configuration errors; keep the previous package version available in case you need to roll back.
  • Put the checks on a schedule. A weekly job that prints nginx -v and the pending security updates is the difference between knowing and finding out from a scan.
  • Keep off-server backups and test a restore, so a bad day is a rebuild and not a crisis.

If you would rather not own patching

Keeping a web server current is routine work, and it is easy to let slip when it is nobody's job. On a TOSHOST Managed VPS, our engineers apply OS and security updates, monitor the server around the clock and keep off-site backups, so a release like 1.31.6 is handled for you. If you already have a server and want it checked, our team can review the version, the modules in use and the exposure above and tell you what to change.

See Managed VPS plans

Already worried that something got in before you patched? Our security and malware cleanup services cover a single hacked site up to a whole server.

Sources

Last updated October 7, 2026. Version numbers and dates are taken from the nginx.org pages above as of that date; if nginx publishes a newer release, that page is the authority.

Frequently asked questions

What is the latest safe nginx version in 2026?

As of October 7, 2026, nginx 1.31.6 on the mainline branch and 1.30.5 on the stable branch, both released on September 15, 2026. Either one includes every security fix listed on nginx.org for 2026.

How many nginx vulnerabilities were fixed in 2026?

nginx.org lists 21 advisories with 2026 CVE numbers, fixed across releases from February 4 to September 15, 2026. The two it rates major are CVE-2026-42533 and CVE-2026-42530.

Is nginx 1.31.4 or 1.31.5 vulnerable?

Both are missing the September fix for CVE-2026-90439, which affects 1.29.2 through 1.31.5. It only matters if you serve HTTP/3 and nginx is built with OpenSSL 3.5.0 or earlier, but upgrading to 1.31.6 is the simple answer.

How do I check my nginx version?

Run nginx -v for the version, or nginx -V to also see the OpenSSL it was built with. On distribution packages, read the package changelog for the CVE numbers, because the fix may be backported into an older-looking version number.

Do I have to restart nginx after upgrading?

Verify that the running process uses the new binary: run ls -l /proc/$(cat /run/nginx.pid)/exe. If the path ends in (deleted), restart nginx after nginx -t passes. A reload alone is not a reliable way to switch binaries.

Which nginx flaws are the most serious?

nginx labels CVE-2026-42533 (map with regex) and CVE-2026-42530 (HTTP/3 use-after-free on 1.31.0 and 1.31.1) as major. The two rewrite module flaws, CVE-2026-9256 and CVE-2026-42945, are labelled medium, but the release notes say they could potentially lead to arbitrary code execution.

Does Toshost patch nginx for me?

On a Toshost Managed VPS our engineers apply operating system and security updates and monitor the server, so you do not have to track releases yourself. Unmanaged servers are yours to patch.

Keep your site up when it is attacked

Always-on DDoS mitigation, hardened by default, with engineers on call 24/7.