NGINXSecurityDevOpsKubernetesVulnerabilities

NGINX Critical Vulnerabilities: What to Patch and How to Check

person
LaunchBoosts Research Desk·AI-assisted research
8 min read

Researched and drafted with AI assistance from the 7 public sources listed at the end of this article, then published after automated editorial checks. Spotted an error? Tell us at support@launchboosts.com.

NGINX Critical Vulnerabilities: What to Patch and How to Check — LaunchBoosts

On October 14, 2026, F5 released NGINX Open Source 1.30.6 (stable) and 1.31.7 (mainline). They fix five core vulnerabilities, and F5 scores three of them as critical heap-overflow or use-after-free bugs. Each one needs a specific, non-default configuration to trigger, so the first thing to find out is whether your nginx.conf uses alias with rewrite, regex captures in map, AIO with SSI, HTTP/3 or TLS session ticket rotation. If any of those apply, upgrade today. If none do, upgrade anyway at your next maintenance window, because the September HTTP/3 fix and these new ones are now bundled in the same releases.

The guide covers what was fixed, why the severity ratings conflict, how to check your own configuration in a few minutes, and what to do about Kubernetes ingress, distro packages and containers.

What F5 fixed on October 14

According to the nginx.org release announcement, the two releases fix five issues in the core server. The 1.31.7 changelog explains how each one is triggered:

CVE What goes wrong Trigger condition Vulnerable versions
CVE-2026-15176 Heap buffer overflow in a worker process alias directive, where the URI was changed by rewrite and then mapped to a file path 0.1.29–1.31.6
CVE-2026-93479 Heap buffer overflow while evaluating string expressions with variables (document root calculation, request logging; http and stream) Regex map capture references used prematurely, or certain non-cacheable variable expressions 1.30.0–1.30.5, 1.31.2–1.31.6
CVE-2026-97205 Use-after-free Asynchronous file I/O (AIO) plus SSI pages with include virtual 0.8.11–1.31.6
CVE-2026-95101 Part of an unknown HTTP/3 frame treated as request body, so client_max_body_size can be bypassed or data injected into the proxied request HTTP/3 enabled 1.25.0–1.31.6
CVE-2026-97629 One TLS session ticket key left uninitialized, which can allow session forgery Automatic session ticket key rotation (shared ssl_session_cache without explicit key files) 1.23.2–1.31.6

The version ranges come from the nginx security advisories page. For each CVE, versions 1.30.6+ and 1.31.7+ are not vulnerable.

F5 also released njs 1.0.2 on the same day. It fixes a memory exhaustion bug when parsing malformed XML (CVE-2026-101025) and inconsistent XML attribute values that affect signed XML validation (CVE-2026-101019). If you use njs's XML module for SAML or other signed documents, the second one is more important to you than the headline CVEs.

The full F5 advisory is larger

F5's out-of-band notice covers more than the core server. A Health-ISAC bulletin summarising the advisory counts 11 vulnerabilities: 3 critical, 6 high and 2 medium. Besides the core and njs bugs, it lists:

  • Two NGINX Ingress Controller external-auth bypasses (CVE-2026-94197 and CVE-2026-104939), both CVSS 8.7.
  • Two NGINX Gateway Fabric issues. One concerns authentication filter realm fields (CVE-2026-91184, 8.7). The other involves Gateway CRDs and NGINX Agent gRPC connections and, per the bulletin, may expose TLS private keys across namespaces (CVE-2026-96615, 6.5).

BleepingComputer lists the affected product families as NGINX Plus, NGINX Open Source, NGINX Ingress Controller, NGINX Gateway Fabric and NGINX Instance Manager.

Critical or medium? Why the ratings disagree

The two ratings conflict, and it affects how fast you should act. The nginx.org advisories page rates all five core issues as "medium." F5 gives the three memory-corruption bugs (CVE-2026-15176, CVE-2026-93479, CVE-2026-97205) a CVSS v4.0 score of 9.2, which is critical, as eSecurity Planet and the Health-ISAC bulletin both report.

The two ratings measure different things:

  • The medium rating reflects reachability. Each bug needs a specific directive combination that most default installs don't have.
  • The critical rating reflects impact once the bug is reachable. BleepingComputer quotes F5 as saying an unauthenticated remote attacker could crash worker processes and potentially "execute code on systems with Address Space Layout Randomization (ASLR) disabled or when the attacker can bypass ASLR."

In practice: if your config matches a trigger condition, treat the issue as critical. If it doesn't, treat it as routine but overdue. Most production NGINX fleets are large and old enough that somebody has used alias and rewrite together somewhere.

Exploitation status

As of October 20, 2026, F5 had not flagged any of these issues as exploited in the wild, according to BleepingComputer, and eSecurity Planet found no confirmed public exploitation either. Attackers do target F5 products, though. The same BleepingComputer report notes that CISA has flagged eight F5 vulnerabilities as actively exploited since November 2021, and that F5 disclosed in October 2025 that state-backed attackers had stolen BIG-IP source code. Patches that ship out of band usually get reverse-engineered within days.

How to check whether you're exposed

You can audit a server in about five minutes. Run the steps on every host or image that runs NGINX, including the reverse proxy someone set up two years ago and forgot about.

  1. Get the version and build flags. nginx -V 2>&1 | head -n 3 If the version is below 1.30.6 (stable) or 1.31.7 (mainline) and the binary comes from nginx.org or a vendor image, you need to upgrade. Distro packages work differently; see the next section.

  2. Dump the effective configuration, including every included file: nginx -T > /tmp/nginx-full.conf

  3. Search for the trigger directives: grep -nE '\b(alias|rewrite|map|aio|ssi|include virtual|quic|http3|ssl_session_cache|ssl_session_ticket)' /tmp/nginx-full.conf

  4. Read the matches against the table above:

    • alias and rewrite in the same location path, especially with $request_filename, matches CVE-2026-15176.
    • A map block with a regex key whose captures ($1, $2) are referenced outside the block that matched them matches CVE-2026-93479 (1.30.x/1.31.2+ only).
    • aio on or aio threads in a server where ssi on serves pages containing SSI include virtual commands matches CVE-2026-97205.
    • listen ... quic or http3 on matches CVE-2026-95101.
    • ssl_session_cache shared:... with session tickets enabled (the default) and no ssl_session_ticket_key files matches CVE-2026-97629.
  5. Don't forget the stream module. CVE-2026-93479 also affects variable evaluation in stream {} blocks, so check TCP/UDP proxies too.

Workarounds if you can't patch today

BleepingComputer and eSecurity Planet both report F5's interim mitigations. These buy you time but are not a fix:

CVE Interim mitigation Trade-off
CVE-2026-15176 Avoid alias in affected locations (use root where you can) and stop using $request_filename there Path layout may need changes; test file serving carefully
CVE-2026-93479 Use named captures (for example (?'name'...)) instead of $1-style captures, and only reference them inside the block that matched Config edits across many maps
CVE-2026-97205 Disable AIO or SSI Disabling AIO can hurt large-file throughput; disabling SSI breaks pages that rely on it
CVE-2026-95101 Disable HTTP/3 if you don't need it Clients fall back to HTTP/2 over TCP
CVE-2026-97629 Review TLS ticket settings, e.g. set ssl_session_tickets off; or supply explicit ssl_session_ticket_key files Slightly more full handshakes, or you take on key rotation yourself

eSecurity Planet also recommends making sure backend application servers only accept connections from your proxies. That limits the damage from the HTTP/3 body-injection bug and is good practice anyway. Run nginx -t before every reload and watch error logs for unexpected worker exits (worker process ... exited on signal). A sudden rise in those is the most likely sign that someone is probing the memory bugs.

Kubernetes, distro packages and containers

NGINX Ingress Controller and Gateway Fabric

The NGINX Ingress Controller release notes show version 5.7.0, released October 14, 2026. It updates the bundled NGINX OSS to 1.31.7 and NGINX Plus to 37.2.0.1, and it includes security fixes for the external-auth bypasses CVE-2026-94197 (crafted X-Forwarded headers) and CVE-2026-104939. If you use ExternalAuth policies, upgrade the controller rather than just rebuilding the data-plane image.

This is F5's controller (nginx/kubernetes-ingress). The community kubernetes/ingress-nginx project is a separate codebase with its own advisories, so check which one your cluster runs before acting. For NGINX Gateway Fabric, follow F5's product advisory. The Health-ISAC summary doesn't give fixed versions, and we couldn't verify them independently.

Distro packages

If you installed NGINX from Debian, Ubuntu, RHEL, Alpine or similar, nginx -v may still report an older upstream version after you patch, because distributions often backport fixes without changing the version number. eSecurity Planet specifically advises checking for backported patches. Search your distro's security tracker for the five CVE IDs and compare the fixed package version with dpkg -l nginx or rpm -q nginx. If your distro hasn't shipped a fix yet, switching to the official nginx.org repository is the quickest route.

Container images

Rebuild your images; don't just restart pods. Pull the base image fresh, rebuild, and confirm with docker run --rm your-image:tag nginx -v. Pin to a tag at or above 1.30.6 or 1.31.7 so a stale build cache can't put an old binary back.

Why this keeps happening, and what to change

The October batch is part of a pattern. The nginx advisories page lists 26 entries with 2026 CVE IDs. These include a September 15 HTTP/3 buffer overflow (CVE-2026-90439, fixed in 1.30.5/1.31.6) and two issues rated "major" earlier in the year: a map/regex buffer overflow (CVE-2026-42533) and an HTTP/3 use-after-free (CVE-2026-42530). Several of these bugs sit in code paths that are more than a decade old. CVE-2026-15176 reaches back to 0.1.29, which suggests auditors and fuzzers, many of them now AI-assisted, are working through mature C codebases more thoroughly than before.

For small teams this has practical consequences:

  • Expect NGINX releases roughly monthly. Automate upgrades through Renovate or Dependabot on your Dockerfiles, or with unattended upgrades from the nginx.org repo, so a security release doesn't need a person to remember it.
  • Disable features you don't use. HTTP/3, SSI, AIO and njs XML parsing each show up in this year's advisories. If you don't rely on a feature, turning it off removes that attack surface in future releases too.
  • Keep the config small. Long-lived nginx.conf files collect rewrite/alias combinations and regex maps that nobody remembers adding. Run nginx -T into version control so you can grep the whole fleet in one place next time.
  • Know whether you're on stable or mainline. Both branches got the fix the same day, but they have different version numbers, and that confuses scanners and people alike.

What to do now

  1. Inventory every NGINX instance, including ingress controllers, sidecars, appliance-embedded builds and forgotten VMs.
  2. Upgrade to 1.30.6 or 1.31.7 (or the patched distro package), njs 1.0.2 if you use njs, and NGINX Ingress Controller 5.7.0 if you run F5's controller.
  3. Where you can't upgrade within 24 hours, run the nginx -T audit above and apply the matching mitigation.
  4. Watch for CISA KEV additions or proof-of-concept code for CVE-2026-15176, CVE-2026-93479 and CVE-2026-97205. If any of these appears, every unpatched host with a matching config becomes an emergency.
  5. Check the nginx.org advisories page after each mainline release. Given how 2026 has gone, the next advisory may come within weeks.

Frequently asked questions

Which NGINX version fixes the October 2026 vulnerabilities?

NGINX Open Source 1.30.6 (stable) and 1.31.7 (mainline), both released on October 14, 2026, fix all five core CVEs. The njs fixes are in njs 1.0.2. NGINX Ingress Controller 5.7.0 ships NGINX OSS 1.31.7 and NGINX Plus 37.2.0.1.

Are the new NGINX vulnerabilities being exploited in the wild?

As of October 20, 2026, F5 had not flagged any of them as exploited, and no public exploitation had been confirmed. F5 products have been targeted before, though, and CISA has listed eight F5 vulnerabilities as actively exploited since 2021, so you should still patch promptly.

Why does nginx.org call these bugs medium while F5 calls them critical?

nginx.org rates all five core issues as medium, probably because each one needs a specific non-default configuration. F5 scores the three memory-corruption bugs at CVSS v4.0 9.2 (critical) because they are reachable remotely without authentication and could allow code execution if ASLR is disabled or bypassed. If your config matches the trigger, use the critical rating.

My distro's nginx -v still shows an old version. Am I vulnerable?

Not necessarily. Debian, Ubuntu, RHEL and other distributions often backport security patches without changing the upstream version number. Look up the CVE IDs in your distribution's security tracker and compare the fixed package version against what dpkg or rpm says you have installed.

Can I work around the NGINX flaws without upgrading?

Yes, as a stopgap. Avoid alias combined with rewrite and $request_filename, disable AIO or SSI where you use both, use named regex captures in map blocks, and turn off HTTP/3 or TLS session tickets if you don't need them. Upgrade as soon as you can, because these workarounds change behaviour and don't fix the underlying bugs.

Sources

  1. nginx.org — nginx 1.30.6 and 1.31.7 release announcement (October 14, 2026)— nginx.org
  2. nginx.org — nginx security advisories— nginx.org
  3. nginx.org — CHANGES (1.31.7 changelog)— nginx.org
  4. BleepingComputer — F5 releases out-of-band patches for critical NGINX vulnerabilities— bleepingcomputer.com
  5. eSecurity Planet — NGINX Patches 5 Security Flaws, Including 3 Rated Critical— esecurityplanet.com
  6. Health-ISAC via AHA — F5 Releases Out-of-band Security Updates for NGINX Flaws— aha.org
  7. F5 NGINX Ingress Controller release notes— docs.nginx.com
person

LaunchBoosts Research Desk

AI-assisted research

Explainers on software and AI industry trends, drafted with AI assistance from the public sources cited in each article and published after automated editorial checks for length, independent sourcing and originality.