NES for Ingress NGINX Release Notes
Comprehensive release notes and changelog for NES for Ingress NGINX, including security patches, bug fixes, and feature updates across all supported versions.
October 2026
1.15.10
Released Oct 21, 2026Container Image: registry.nes.herodevs.com/nes/ingress-nginx:v1.15.1-nes-1.15.10
Helm Chart: HeroDevs/ingress-nginx --version 0.0.17 (see Helm Charts)
Based on upstream ingress-nginx v1.15.1 Go version: 1.26.10 NGINX version: 1.27.1 (compiled from source on Alpine 3.24.0)
This release patches the following CVEs:
Go Toolchain
- CVE-2026-111943 —
Go stdlib crypto/x509:Certificate.Verifydid not reject a set of intermediate certificates that are no longer trustworthy. Go 1.26.10 adds a denylist soVerifyreturns an error for them, which protects systems whose trust stores were not updated. Fixed byGOLANG_VERSION1.26.9 → 1.26.10. Reachability: Reachable only with--enable-ssl-chain-completion(off by default):internal/net/ssl.CreateSSLCertthen callsfullChainCert, which runsx509.Certificate.Verifyon each TLS Secret's certificate before fetching missing intermediates.govulncheckreports this path on Go 1.26.9 and nothing on Go 1.26.10.
For upgrade instructions using the NES for Ingress NGINX Helm chart, see Helm Charts.
1.15.9
Released Oct 19, 2026Container Image: registry.nes.herodevs.com/nes/ingress-nginx:v1.15.1-nes-1.15.9
Helm Chart: HeroDevs/ingress-nginx --version 0.0.15 (see Helm Charts)
Based on upstream ingress-nginx v1.15.1 Go version: 1.26.9 NGINX version: 1.27.1 (compiled from source on Alpine 3.24.0)
This release patches the following CVEs:
NGINX
- CVE-2026-97205 (8.1 (High; CVSS 3.1, F5 as CNA; 9.2 on CVSS 4.0; nginx rates Medium)) — Use-after-free with asynchronous file I/O. Each pending AIO or thread-pool operation holds a reference in the 8-bit
r->main->blockedcounter, and the increments were unchecked; with 256 operations pending on one request the counter wrapped to zero and the request could be freed while those operations still referenced its pool. Fixed upstream in nginx 1.31.7 / 1.30.6, released 2026-10-14. Patch: NES backport of upstream commit6adfc05ece48onto pinned 1.27.1. Reachability: Reachable only through a snippet —nginx.tmplsetsaio threadsin the http block unconditionally, so the AIO half always holds, but more than 255 concurrent reads on one request needs something like SSIinclude virtual, andssi onis not in the template. - CVE-2026-95101 (5.3 (Medium; CVSS 3.1, F5 as CNA; 6.9 on CVSS 4.0)) — HTTP/3 request body injection. The parser stored the remaining length of a skipped unknown frame in the same field the request body filter reads as DATA payload length, so an unknown frame split across reads was passed on as request body, bypassing
client_max_body_sizeor injecting unframed bytes into the proxied request. Fixed upstream in nginx 1.31.7 / 1.30.6. Patch: NES backport of upstream commit1c173a2d8767onto pinned 1.27.1. Reachability: Reachable only through a snippet —--with-http_v3_moduleis compiled in, butnginx.tmplnever configures alisten ... quicsocket. - CVE-2026-97629 (6.5 (Medium; CVSS 3.1, F5 as CNA; 8.3 on CVSS 4.0)) — TLS session ticket forgery. Automatic ticket key rotation synced only two of the three per-worker key slots from shared memory, leaving the third slot's name and keys uninitialized; a ticket naming that slot could be verified and decrypted with that material, allowing a forged session. Fixed upstream in nginx 1.31.7 / 1.30.6. Patch: NES backport of upstream commit
1916f26e6ca4onto pinned 1.27.1. Reachability: Off by default — needsssl-session-tickets: "true"(the template defaults tossl_session_tickets off) and nossl-session-ticket-key, since a key file disables automatic rotation. - CVE-2026-93479 (8.1 (High; CVSS 3.1, F5 as CNA; 9.2 on CVSS 4.0; nginx rates Medium)) — Buffer overflow in script evaluation. After the CVE-2026-42533 bounds checks,
ngx_http_script_run()/ngx_stream_script_run()could still let the result spill into the caller's reserved bytes when a variable grew between the length and value passes, and the recalculated length could then exceed the buffer. Affects document root from variables and access log paths with variables (http and stream). Fixed upstream in nginx 1.31.7 / 1.30.6. Patch: NES backport of upstream commit6aa4b3fdd4fdonto pinned 1.27.1. Reachability: Limited — the document-root variant cannot be configured because ingress-nginx's00_drop-alias-root.patchremovesrootandalias; anaccess_logpath with variables (access-log-pathConfigMap key or a snippet) and a variable that changes between passes, such as a capture reset by a regexmap, still reaches it. - CVE-2026-15176 (8.1 (High; CVSS 3.1, F5 as CNA; 9.2 on CVSS 4.0; nginx rates Medium)) — Buffer overflow when using
aliaswithrewrite. After arewritewithoutbreak, URI-to-path mapping could run before a new location was chosen, overflowing when the location prefix was longer than the rewritten URI (for example via$request_filename). Fixed upstream in nginx 1.31.7 / 1.30.6. Patch: NES backport of upstream commitf8a23425bd68onto pinned 1.27.1. Reachability: Not reachable — ingress-nginx's00_drop-alias-root.patchremoves thealiasdirective, so a configuration using it fails withunknown directive "alias"(checked against the patched binary).
Alpine Packages
- CVE-2025-60876 (Medium, CVSS 6.5) —
busybox (Alpine apk, wget applet): BusyBoxwgetthrough 1.37 accepts raw CR/LF and other C0 control bytes (and a raw space) in the HTTP request-target, so an attacker-controlled URL can split the request line and inject headers (CWE-93). Fixed by None available — Alpine 3.24 still shipsbusybox1.37.0-r31 with no secdb entry for this CVE, and edge has none either (checked 2026-09-21). Resolved asnot_affected/vulnerable_code_not_in_execute_pathinvex/openvex.json(wasunder_investigationsince 2026-06-10, issue). Reachability: Not reachable — the vulnerable code is the busyboxwgetapplet, which nothing in the image executes: nginx, the controller, and the OpenTelemetry exporter never shell out to it and no request path reaches it. Only an operator runningkubectl execwith an operator-chosen URL can invoke it. - CVE-2026-103111 (7.6 (High; CVSS v3.1, MITRE)) —
pcre2 (Alpine apk, libpcre2-8): When JIT matching runs on a growable JIT stack (created withpcre2_jit_stack_create()and assigned withpcre2_jit_stack_assign()), a pattern that needs a single stack frame larger than the fixed 8 KiB growth step (for example ~1,400 referenced capturing groups with recursion) makes the generated code write below the JIT stack mapping, corrupting adjacent memory (CWE-787). Interpreter and DFA matching, and JIT matching on the default machine stack, are unaffected (PCRE2 advisory). Fixed byimages/nginx-base/TAGv2.2.10-nes.10 → v2.2.10-nes.11 rebuild picks uppcre210.48-r0 → 10.49-r0 per Alpine v3.24 secdb (published for x86_64 and aarch64). Reachability: Not reachable —libpcre2-8has been in the image only since v2.2.10-nes.10, for libmodsecurity 3.0.16; nginx,ngx.reand njs stay on legacy PCRE 8.x via--without-pcre2, and the ModSecurity connector module imports only legacypcre_malloc/pcre_free. libmodsecurity importspcre2_jit_compile/pcre2_jit_matchbut neitherpcre2_jit_stack_createnorpcre2_jit_stack_assign(nm -Don the shipped v1.15.1-nes-1.15.8 image; same in the v3.0.16 source), so its JIT matching uses the default machine stack. Library CVE resolved by the version bump regardless. - CVE-2026-35189 (Medium, CVSS 5.3) —
openssl / libcrypto3: A certificate with manynameRelativeToCRLIssuerCRL distribution points causes disproportionate heap growth when OpenSSL caches X.509 extensions, so a crafted certificate from a malicious peer can cause memory pressure (DoS). OpenSSL rates it Low. Fixed by The sameimages/nginx-base/TAGv2.2.10-nes.10 → v2.2.10-nes.11 rebuild as CVE-2026-103111 above picks upopenssl/libcrypto3/libssl33.5.8-r0 → 3.5.9-r0 (the nes.11 build log recordsUpgrading libcrypto3 (3.5.8-r0 -> 3.5.9-r0)). OpenSSL fixed the whole batch in 3.5.9; Alpine 3.24 published 3.5.9-r0 on 2026-09-30 but its secdb does not credit these CVEs yet, which is why Grype reported no fixed version and Trivy stayed silent. Reachability: Reachable only where nginx parses a certificate from an untrusted peer: client-certificate authentication (auth-tls-*annotations) or TLS to a malicious upstream. Low-severity memory pressure; library CVE resolved by the version bump regardless. - CVE-2026-42772 (Medium, CVSS 5.3) —
openssl / libcrypto3: OpenSSL QUIC stream reassembly degrades quadratically with out-of-order frames, so a peer that completes the handshake can cause connection-scoped CPU exhaustion with compliant STREAM frames. OpenSSL rates it Low. Fixed by Same 3.5.9-r0 rebuild as above. Reachability: Not reachable — the flaw is in OpenSSL's own QUIC stack, which nothing in the image instantiates: nginx implements its QUIC transport internally and uses OpenSSL only for handshake crypto (same as CVE-2026-14456 above); library CVE resolved by the version bump regardless. - CVE-2026-54873 (High, CVSS 7.5) —
openssl / libcrypto3: The OpenSSL QUIC stack keeps packet buffers alive until stream data is copied to the application, so a remote peer can make it hold packet-buffer memory for as long as it chooses (DoS). OpenSSL rates it Low. Fixed by Same 3.5.9-r0 rebuild as above. Reachability: Not reachable — same OpenSSL QUIC stack as CVE-2026-42772 above, which nothing in the image instantiates; library CVE resolved by the version bump regardless. - CVE-2026-72897 (High, CVSS 7.5) —
openssl / libcrypto3 / libssl3: A TLS server that switches a connection to a differentSSL_CTXwithSSL_set_SSL_CTX()mid-handshake may read, and in some cases write a fixed value, past an internal array when the replacement context knows more provider signature algorithms than the original (DoS). OpenSSL rates it Low. Fixed by Same 3.5.9-r0 rebuild as above. Reachability: Unlikely — nginx does callSSL_set_SSL_CTX()from its SNI callback, but everySSL_CTXin the process is created from the same default library context with the same providers, so the replacement never knows more provider signature algorithms than the original; library CVE resolved by the version bump regardless. - CVE-2026-75804 (Medium, CVSS 5.3) —
openssl / libcrypto3: The OpenSSL QUIC stack does not enforce connection-level flow control for streams, letting a peer push ~100 MB instead of the 768 KiB default window. OpenSSL rates it Low. Fixed by Same 3.5.9-r0 rebuild as above. Reachability: Not reachable — same OpenSSL QUIC stack as CVE-2026-42772 above; library CVE resolved by the version bump regardless. - CVE-2026-75805 (Medium, CVSS 5.3) —
openssl / libcrypto3: A CMP client that requests revocation on the basis of a PKCS#10 CSR can dereference a NULL pointer on a crafted revocation response (DoS). OpenSSL rates it Low. Fixed by Same 3.5.9-r0 rebuild as above. Reachability: Not reachable — no CMP client runs in the image (same as CVE-2026-63074 above); library CVE resolved by the version bump regardless. - CVE-2026-75806 (Medium, CVSS 5.3) —
openssl / libssl3: A single unauthenticated datagram shorter than the explicit IV plus tag overhead tears down an established DTLS 1.2 association that uses an AEAD cipher suite (DoS limited to that association). OpenSSL rates it Low. Fixed by Same 3.5.9-r0 rebuild as above. Reachability: Not reachable — nothing in the image uses DTLS (same as CVE-2026-54874 above); library CVE resolved by the version bump regardless. - CVE-2026-84782 (High, CVSS 8.2) —
openssl / libssl3: DTLS retransmission mishandles a handshake-message write that was suspended part-way, so the retransmitted message can read past its buffer, disclosing heap memory to the peer or crashing. OpenSSL rates it High. Fixed by Same 3.5.9-r0 rebuild as above. Reachability: Not reachable — nothing in the image uses DTLS: nginx has no DTLS support and the OTel exporter speaks TLS over TCP; library CVE resolved by the version bump regardless. - CVE-2026-84784 (High, CVSS 7.5) —
openssl / libcrypto3: A QUIC peer can flood NEW_CONNECTION_ID frames past the connection-ID limit; with ACKs withheld, the RETIRE_CONNECTION_ID backlog grows to ~400 MB (DoS). OpenSSL rates it Low. Fixed by Same 3.5.9-r0 rebuild as above. Reachability: Not reachable — same OpenSSL QUIC stack as CVE-2026-42772 above; library CVE resolved by the version bump regardless. - CVE-2026-78689 (8.1 (High; CVSS 3.1, F5 as CNA; 9.2 on CVSS 4.0; njs rates major)) —
njs (nginx-base, compiled from source): Heap buffer overflow while parsing the namespace prefix list passed toxml.exclusiveC14n(). Introduced in njs 0.7.10, fixed in njs 1.0.1. Scanners have no package metadata for from-source njs, so none flagged it; found while checking the nginx 1.30.6 batch. Fixed byimages/nginx-base/rootfs/build.shNJS_VERSION0.9.0 → 1.0.2 (njs is compiled from source as a dynamic module, so no Alpine package is involved);images/nginx-base/TAGv2.2.10-nes.12 → v2.2.10-nes.13 rebuild. 1.0.2 is the first release that also fixes CVE-2026-101025/CVE-2026-101019 below. Verified: builds against our patched nginx 1.27.1 with the XML module enabled; a JS handler, XML parsing, attribute access and exclusive canonicalization return identical results under 0.9.0 and 1.0.2 (AddressSanitizer build, no reports). Behaviour changes since 0.9.0 (njs 1.0.0–1.0.2 CHANGES): exception classes aligned toTypeError/RangeError, stricterngx.fetch()request validation, XML mutation rejects detached nodes and namespaced source trees. Reachability: Not reachable by default —ngx_http_js_module.so/ngx_stream_js_module.soare built but the template never loads them; exposure needs amain-snippetload_moduleplusjs_importof customer JavaScript that passes attacker-influenced prefix lists toxml.exclusiveC14n(). Library CVE resolved by the version bump regardless. - CVE-2026-78222 (7.5 (High; CVSS 3.1, F5 as CNA; 8.7 on CVSS 4.0)) —
njs (nginx-base, compiled from source): Worker process crash when readingResponse.statusTextafter an upstream answered anngx.fetch()with an empty reason phrase. Introduced in njs 0.5.1, fixed in njs 1.0.1. Fixed by Same njs 1.0.2 bump as above. Reachability: Not reachable by default —ngx_http_js_module.so/ngx_stream_js_module.soare built but the template never loads them; exposure needs amain-snippetload_moduleplusjs_importof customer JavaScript that callsngx.fetch()against an attacker-controlled server and readsstatusText. Library CVE resolved by the version bump regardless. - CVE-2026-101025 (5.3 (Medium; CVSS 3.1, F5 as CNA; 6.9 on CVSS 4.0)) —
njs (nginx-base, compiled from source): Memory leak when the njs engine parses malformed XML; repeated malformed input can exhaust worker memory. Introduced in njs 0.7.10, fixed in njs 1.0.2. Fixed by Same njs 1.0.2 bump as above. Reachability: Not reachable by default —ngx_http_js_module.so/ngx_stream_js_module.soare built but the template never loads them; exposure needs amain-snippetload_moduleplusjs_importof customer JavaScript that parses attacker-supplied XML with thexmlmodule. Library CVE resolved by the version bump regardless. - CVE-2026-101019 (6.5 (Medium; CVSS 3.1, F5 as CNA; 8.3 on CVSS 4.0)) —
njs (nginx-base, compiled from source): XML attribute values containing entity references were returned incompletely by the JavaScript accessors, so they could differ from the values used by XML canonicalization, which affects signed-XML validation. Introduced in njs 0.7.10, fixed in njs 1.0.2. Fixed by Same njs 1.0.2 bump as above. Reachability: Not reachable by default —ngx_http_js_module.so/ngx_stream_js_module.soare built but the template never loads them; exposure needs amain-snippetload_moduleplusjs_importof customer JavaScript that validates signed XML with thexmlmodule. Library CVE resolved by the version bump regardless. - CVE-2026-85091 (7.4 (High; CVSS 3.1, VulnCheck as CNA; 8.3 on CVSS 4.0)) —
zlib: zlib 1.3.1.2 through 1.3.2 can overflow a heap buffer ingz_vacate()whengzprintf()/gzvprintf()runs after a non-blockinggzwrite()stalled, because an uncheckedmemmove()writes past the internal input buffer. Grype flagged 1.3.2-r0 in nginx-basev2.2.10-nes.10(issue, closed 2026-09-23 without a fix or row). Fixed byimages/nginx-base/TAGv2.2.10-nes.11 → v2.2.10-nes.12 rebuild picks upzlib1.3.2-r0 → 1.3.2-r1 (published 2026-10-06) per Alpine v3.24 secdb; the nes.12 build log recordsUpgrading zlib (1.3.2-r0 -> 1.3.2-r1). nes.11 (2026-10-02) predates the fix. Reachability: Unlikely — the flaw is in zlib'sgzFilewrite path on a non-blocking descriptor; nginx's gzip and gunzip filters use thedeflate()/inflate()stream API, notgzFile, and nothing on the request path writes gzip files throughgzprintf(). Library CVE resolved by the version bump regardless.
Go Toolchain
- CVE-2026-94448 —
Go stdlib html/template: Context tracking was not reset across consecutive template expressions, which can permit improper escaping. Fixed byGOLANG_VERSION1.26.6 → 1.26.9. Reachability: Not reachable — no shipped package importshtml/template, andgovulncheckfinds no call path fromcmd/internal/pkg. - CVE-2026-97030 —
Go stdlib html/template:yieldwas not recognized as a keyword that can precede a JavaScript regular expression, which can permit improper escaping. Fixed byGOLANG_VERSION1.26.6 → 1.26.9. Reachability: Not reachable — same as CVE-2026-94448 above. - CVE-2026-78659 (High, CVSS 7.5) —
Go stdlib net/http and golang.org/x/net/http2: An HTTP/2 server can be driven to memory exhaustion with Trailer headers. (govulncheck) and (Grype). Fixed byGOLANG_VERSION1.26.6 → 1.26.9;golang.org/x/netv0.58.0 → v0.61.0 (siblingx/crypto/x/sys/x/text/x/term/x/sync/x/mod/x/toolsmodules bumped alongside). Reachability: Server-side path not exercised —govulncheckreaches the HTTP/2 symbols through the Kubernetes client transport, but the controller serves no HTTP/2: the admission webhook, its only TLS server, disables it with an emptyTLSNextProto(internal/ingress/controller/nginx.go), and the metrics/health servers are plain HTTP/1. - CVE-2026-56857 —
Go stdlib os:Root.Mkdir/Root.MkdirAllcan follow NTFS junctions out of the root on Windows. Fixed byGOLANG_VERSION1.26.6 → 1.26.9. Reachability: Not reachable — Windows-only; the controller runs on Linux only. - CVE-2026-56866 (High, CVSS 7.5) —
Go stdlib net/http: An HTTP/1 client connection can desynchronize after a proxy rejects its CONNECT request. (govulncheck) and (Grype). Fixed byGOLANG_VERSION1.26.6 → 1.26.9. Reachability: Reachable only behind an HTTPS proxy — controller status requests, the Kubernetes client, and certificate-chain retrieval usehttp.Client, which issues CONNECT only when anHTTPS_PROXYis configured and that proxy rejects the tunnel. - CVE-2026-97031 (High, CVSS 7.5) —
Go stdlib crypto/tls: Malformed Encrypted Client Hello outer-extension references were not rejected. (govulncheck) and (Grype). Fixed byGOLANG_VERSION1.26.6 → 1.26.9. Reachability: Low — every TLS handshake reaches the symbols, but nothing in the controller configures ECH keys or ECH config lists. - CVE-2026-94440 (High, CVSS 7.5) —
Go stdlib net/textproto, mime/multipart: MIME header parsing could bypass its memory limit. (govulncheck) and (Grype). Fixed byGOLANG_VERSION1.26.6 → 1.26.9. Reachability: Reachable — the metrics/health server (pkg/metrics.StartHTTPServer) parses request headers withtextproto.Reader.ReadMIMEHeader, so any client that can reach that port can send them. - CVE-2026-78667 —
Go stdlib net/http: No limit on the size of parsedRangeheaders. Fixed byGOLANG_VERSION1.26.6 → 1.26.9. Reachability: Not reachable — the controller never serves files or content with Range support (http.ServeContent/ServeFileare unused), andgovulncheckfinds no call path. - CVE-2026-78660 (High, CVSS 7.5) —
Go stdlib net/http and golang.org/x/net/http2: The HTTP/2 transport accepted malformed framing-related headers. (govulncheck) and (Grype). Fixed byGOLANG_VERSION1.26.6 → 1.26.9;golang.org/x/netv0.58.0 → v0.61.0. Reachability: Reachable, trusted peers only — controller status requests and the Kubernetes client use the HTTP/2 transport, but their peers are the local nginx status endpoint and the API server. - CVE-2026-78669 (High, CVSS 7.5) —
Go stdlib net/http and golang.org/x/net/http2: Repeated HTTP/2 initial-window-size changes cause excessive CPU consumption. (govulncheck) and (Grype). Fixed byGOLANG_VERSION1.26.6 → 1.26.9;golang.org/x/netv0.58.0 → v0.61.0. Reachability: Low — reached only through the controller's outbound HTTP/2 connections, whose peer is the API server; the controller serves no HTTP/2 (see CVE-2026-78659 above). - CVE-2026-78663 (Critical, CVSS 9.1) —
Go stdlib net/http and golang.org/x/net/http2: An HTTP/2 server can refund connection-level flow control twice for the same data, letting a client bypassMaxReceiveBufferPerConnection. (govulncheck) and (Grype). Fixed byGOLANG_VERSION1.26.6 → 1.26.9;golang.org/x/netv0.58.0 → v0.61.0. Reachability: Server-side path not exercised — same as CVE-2026-78659 above. - CVE-2026-94439 (High, CVSS 7.5) —
Go stdlib net/http: After a handler answers an HTTP/1 CONNECT with 2xx without hijacking, the server keeps reading HTTP requests from what the client treats as a tunnel, which can enable request smuggling through an intermediary. (govulncheck) and (Grype). Fixed byGOLANG_VERSION1.26.6 → 1.26.9. Reachability: Low — no controller handler implements CONNECT, and exploiting the desync needs an intermediary proxy in front of the metrics/health port, which a standard deployment does not have. - CVE-2026-97032 (High, CVSS 7.5) —
Go stdlib net/http and golang.org/x/net/http2: An HTTP/2 server modifies its HPACK encoder from two goroutines without synchronization, so a client changingSETTINGS_HEADER_TABLE_SIZEwhile sending requests can crash it. (govulncheck) and (Grype). Fixed byGOLANG_VERSION1.26.6 → 1.26.9;golang.org/x/netv0.58.0 → v0.61.0. Reachability: Server-side path not exercised — same as CVE-2026-78659 above.
For upgrade instructions using the NES for Ingress NGINX Helm chart, see Helm Charts.
September 2026
1.15.8
Released Sep 17, 2026Container Image: registry.nes.herodevs.com/nes/ingress-nginx:v1.15.1-nes-1.15.8
Helm Chart: HeroDevs/ingress-nginx --version 0.0.14 (see Helm Charts)
Based on upstream ingress-nginx v1.15.1 Go version: 1.26.6 NGINX version: 1.27.1 (compiled from source on Alpine 3.24.0)
This release patches the following CVEs:
Alpine Packages
- CVE-2026-14456 (High, CVSS 7.5) —
openssl / libcrypto3: An OpenSSL QUIC server (listener SSL object) processing valid QUIC Initial packets for unknown destination connection IDs allocates and queues new incoming channels without enforcing any limit, letting a remote peer drive unbounded memory growth (DoS). Fixed byimages/nginx-base/TAGv2.2.10-nes.7 → v2.2.10-nes.8 rebuild picks upopenssl/libcrypto3/libssl33.5.7-r0 → 3.5.8-r0 per Alpine v3.24 secdb. The same bump also covers CVE-2026-63073 and CVE-2026-75803, which secdb credits to 3.5.8-r0 but no scanner had flagged against our image at the time of the fix. Reachability: Not reachable — the flaw is in OpenSSL's own QUIC server stack (listener SSL objects), which nothing in the image instantiates: nginx implements its QUIC transport internally and uses OpenSSL only for handshake crypto; library CVE resolved by the version bump regardless. - CVE-2026-14457 (High, CVSS 7.5) —
openssl / libcrypto3: With RFC 7250 Raw Public Keys enabled and only a private key (no certificate) configured locally, a NULL pointer dereference can occur when the remote peer solicits raw public keys and also sends the normally omittedsignature_algorithms_certTLS extension (DoS). Fixed by Same 3.5.8-r0 rebuild as above. Reachability: Not reachable — nginx never enables RFC 7250 raw public keys, and every TLS context it creates is configured with a certificate; library CVE resolved by the version bump regardless. - CVE-2026-18798 (Medium, CVSS 7.5) —
openssl / libcrypto3: An OpenSSL QUIC server may trigger a double free when processing an INITIAL packet. Fixed by Same 3.5.8-r0 rebuild as above. Reachability: Not reachable — same OpenSSL QUIC server stack as CVE-2026-14456 above, which nothing in the image instantiates; library CVE resolved by the version bump regardless. - CVE-2026-54874 (High, CVSS 7.5) —
openssl / libcrypto3: Receiving a DTLS record for a future epoch while a handshake is in progress causes OpenSSL to buffer far more memory than the record itself requires (asymmetric resource consumption → DoS). Fixed by Same 3.5.8-r0 rebuild as above. Reachability: Not reachable — nothing in the image uses DTLS: nginx has no DTLS support and the OTel exporter speaks TLS over TCP; library CVE resolved by the version bump regardless. - CVE-2026-63072 (Medium, CVSS 7.5) —
openssl / libcrypto3: Heap buffer overflow in CMS key unwrapping. Fixed by Same 3.5.8-r0 rebuild as above. Reachability: Not reachable — CMS processing is not exercised by nginx, the controller, or the OTel exporter; library CVE resolved by the version bump regardless. - CVE-2026-63074 (Medium, CVSS 5.9) —
openssl / libcrypto3: The OpenSSL CMP implementation caches additional certificates (extraCerts) from CMP messages but never expunges them; a malicious client flooding a CMP server that reuses anOSSL_CMP_CTXcan drive unbounded cache growth (DoS). Fixed by Same 3.5.8-r0 rebuild as above. Reachability: Not reachable — no CMP server or client runs in the image; library CVE resolved by the version bump regardless. - CVE-2026-63075 (High, CVSS 7.5) —
openssl / libcrypto3: A QUIC peer that repeatedly sends ack-eliciting packets while never acknowledging ACK-only responses makes the OpenSSL QUIC stack retain ACK-only packet metadata for the connection's lifetime (connection-scoped memory growth → DoS). Fixed by Same 3.5.8-r0 rebuild as above. Reachability: Not reachable — same OpenSSL QUIC stack as CVE-2026-14456 above, which nothing in the image instantiates; library CVE resolved by the version bump regardless. - CVE-2026-63076 (Medium, CVSS 7.5) —
openssl / libcrypto3: Invalid pointer dereference in a CMP server via a craftedprotectionAlg. Fixed by Same 3.5.8-r0 rebuild as above. Reachability: Not reachable — no CMP server runs in the image; library CVE resolved by the version bump regardless. - CVE-2026-63073 (Critical, CVSS 9.8) —
openssl / libcrypto3: OpenSSL CMP response validation passes the peer-supplied sender distinguished name straight toERR_raise_data()as the format string, so a malicious or intercepted CMP endpoint can send a DN likeCN=%s%nthat reachesBIO_vsnprintf()with no matching variadic arguments and crashes a CMP client that enforces an expected sender (CWE-134; rated Low by the OpenSSL project, 9.8 by NVD). Fixed by Same 3.5.8-r0 rebuild as above. Reachability: Not reachable — no CMP client (or server) runs in the image, same as CVE-2026-63074 above; library CVE resolved by the version bump regardless. - CVE-2026-75803 (Low) —
openssl / libcrypto3: ChaCha20-Poly1305 and AES-OCB decryption via the one-shotEVP_Cipher()API reports success without verifying the authentication tag when the ciphertext is empty, so callers relying on that return value may accept forged AEAD messages (CWE-354). Fixed by Same 3.5.8-r0 rebuild as above. Reachability: Not reachable — nothing in the image calls the one-shotEVP_Cipher()API for AEAD decryption: nginx's TLS record processing goes through libssl's standard update/final EVP flow, which verifies tags; library CVE resolved by the version bump regardless. - CVE-2026-13608 (High, CVSS 7.4) —
curl / libcurl: libcurl's SASL negotiation for LDAP authentication can misinterpret an incomplete handshake sequence as a successful cryptographic verification, so a man-in-the-middle can inject a premature or shortcut response that bypasses complete peer validation (curl advisory). Fixed byimages/nginx-base/TAGv2.2.10-nes.8 → v2.2.10-nes.9 rebuild picks upcurl/libcurl8.21.0-r0 → 8.22.0-r0 per Alpine v3.24 secdb. The same bump also covers CVE-2026-80256, which secdb credits to 8.22.0-r0 but no scanner had flagged against our image at the time of the fix. Reachability: Not reachable — Alpine's curl is built without LDAP support (curl -Vin the image lists noldap/ldapsprotocol), so the vulnerable SASL/LDAP code is not compiled in; the only libcurl consumers in the image (the OpenTelemetry C++ OTLP/HTTP and Zipkin exporters, and libmodsecurity's optionalSecRemoteRulesfetcher) speak HTTP(S) only. Library CVE resolved by the version bump regardless. - CVE-2026-18924 (Critical, CVSS 9.1) —
curl / libcurl: When a handle that receives HTTP/2 Server Push streams is set to share connections with other handles, the pushed streams can be freed while still referenced, leading to a use-after-free during cleanup (curl advisory). Fixed by Same 8.22.0-r0 rebuild as above. Reachability: Not reachable — libcurl advertisesSETTINGS_ENABLE_PUSH=0and refuses pushed streams unless the application installs aCURLMOPT_PUSHFUNCTIONcallback; neither the OTel curl HTTP client nor libmodsecurity does, so no push stream ever reaches the vulnerable cleanup path. Library CVE resolved by the version bump regardless. - CVE-2026-19931 (Critical, CVSS 9.8) —
curl / libcurl: libcurl wrongly reuses an HTTP connection that was set up for a hostname with Negotiate authentication when the initial request used empty (ambient) credentials, so a later request by user B can be sent over user A's previously authenticated connection (curl advisory). Fixed by Same 8.22.0-r0 rebuild as above. Reachability: Not reachable — Negotiate/SPNEGO is not even compiled into Alpine's curl (curl -Vin the image lists noGSS-API,SPNEGOorKerberosfeature), and nothing in the image uses Negotiate authentication (same footprint as CVE-2026-5545 above). Library CVE resolved by the version bump regardless. - CVE-2026-80229 (High, CVSS 7.5) —
curl / libcurl: In multi-interface transfers with an OpenSSL 3 provider configuration, libcurl attaches an allocated OpenSSL library context to the easy handle without taking an ownership reference and hands it to a pooled TLS connection; destroying the easy handle early frees the context while the connection keeps a dangling pointer, causing a heap use-after-free on later I/O or post-handshake operations (curl advisory). Fixed by Same 8.22.0-r0 rebuild as above. Reachability: Not reachable — libcurl only allocates that per-handle library context when the application loads its TLS client key through an OpenSSL provider (thePROVcertificate type introduced in 8.14.0, the first affected release); neither the OTel curl HTTP client nor libmodsecurity uses provider-backed keys, and libmodsecurity uses the easy interface so no pooled connection outlives its handle. Library CVE resolved by the version bump regardless. - CVE-2026-80230 (High, CVSS 7.5) —
curl / libcurl: WithCURLOPT_PINNEDPUBLICKEYconfigured alongside disabled peer/host verification, libcurl fails to enforce public key pinning on connections where the server presented no certificate, so a connection that should be rejected succeeds (curl advisory). Fixed by Same 8.22.0-r0 rebuild as above. Reachability: Not reachable — neither libcurl consumer in the image setsCURLOPT_PINNEDPUBLICKEY: the OTel exporter's TLS options are CA/certificate-path based and libmodsecurity exposes no pinning option. Library CVE resolved by the version bump regardless. - CVE-2026-80231 (High, CVSS 7.5) —
curl / libcurl: libcurl reuses an existing HTTPS connection for a hostname even when the new transfer requests a different Native CA Store setting (CURLSSLOPT_NATIVE_CA) than the one the connection was created with (curl advisory). Fixed by Same 8.22.0-r0 rebuild as above. Reachability: Not reachable —CURLSSLOPT_NATIVE_CAonly takes effect on Windows (it selects the Windows certificate store) and neither consumer sets it; each libcurl consumer in the image uses a single static CA configuration, so no mixed-setting connection reuse can occur (same reasoning as CVE-2026-4873 above). Library CVE resolved by the version bump regardless. - CVE-2026-80255 (High, CVSS 7.5) —
curl / libcurl: ASet-Cookie:header that precedes theSecureattribute with a horizontal tab instead of a space makes curl store the cookie without its Secure flag, so it may later be sent over plaintext HTTP to the same host (curl advisory). Fixed by Same 8.22.0-r0 rebuild as above. Reachability: Not reachable — no libcurl consumer in the image enables the cookie engine (noCURLOPT_COOKIEFILE/CURLOPT_COOKIEJAR/CURLOPT_COOKIELIST, same footprint as CVE-2025-14017 above), soSet-Cookieheaders are never parsed or stored. Library CVE resolved by the version bump regardless. - CVE-2026-80256 (Medium) —
curl (wcurl): Thewcurlwrapper script percent-decodes backslashes in a URL-derived output filename, letting a crafted URL place the downloaded file outside the directory the user chose on Windows (CWE-35, curl advisory). No scanner had flagged it against our image; Alpine secdb credits its fix to the same 8.22.0-r0 package as the rows above. Fixed by Same 8.22.0-r0 rebuild as above. Reachability: Not reachable — the flaw is Windows-only (backslash is not a path separator on Linux), and although Alpine'scurlapk does ship/usr/bin/wcurl, nothing in the image invokes wcurl or the curl CLI at runtime: thecurlpackage is present only as an apk dependency oflibmaxminddb, not because anything in the build installs it. - CVE-2026-82208 (High, CVSS 7.5) —
curl / libcurl: With the wolfSSL backend and CA caching enabled, aCURLOPT_SSL_CTX_FUNCTIONcallback that replaces the trust store can be silently overridden when libcurl reinstalls the cached store, so a certificate rejected by the callback-selected store is wrongly accepted (curl advisory). Fixed by Same 8.22.0-r0 rebuild as above. Reachability: Not reachable — Alpine's curl is built against OpenSSL (curl -Vin the image reportsOpenSSL/3.5.x); the wolfSSL backend is not compiled in. Library CVE resolved by the version bump regardless. - CVE-2026-82209 (High, CVSS 8.2) —
curl / libcurl: With libpsl support enabled, libcurl skips the Public Suffix List boundary check when aSet-CookieDomainattribute exactly matches an origin host that is itself a public suffix (e.g.Domain=co.ukset byco.uk), storing a wildcard-scoped cookie that is then sent to arbitrary sibling domains under that suffix (curl advisory). Fixed by Same 8.22.0-r0 rebuild as above. Reachability: Not reachable — Alpine's libcurl does link libpsl, but no consumer in the image enables the cookie engine (same as CVE-2026-80255 above), soSet-Cookieheaders are never stored. Library CVE resolved by the version bump regardless. - CVE-2026-84304 (8.7 (High; CVSS v4.0, GitHub)) —
grpc (Alpine apk, C++ gRPC): gRPC-Go heap memory exhaustion via HTTP/2 DATA frame fragmentation, fixed in grpc-go 1.83.1. Grype matched the Go advisory against the Alpinegrpcapk (1.78.1-r2) in nginx-basev2.2.10-nes.8by package name. Fixed by Not applicable — wrong-package match; documented in OpenVEX asnot_affected(component_not_present), same handling as CVE-2026-33186. The Go modulegoogle.golang.org/grpcis bumped to v1.83.1 separately in (Go Modules table above). Reachability: Not affected — the apk is Alpine's C++ gRPC client library (consumed by the OpenTelemetry C++ exporter), a separate codebase that does not contain the gRPC-Go transport; no Go gRPC code is linked into any shipped controller binary. - CVE-2026-84303 (Medium, CVSS 6.3) —
grpc (Alpine apk, C++ gRPC): gRPC-Go xDS RBAC HTTP filter does not lowercase header matcher names, so mixed-case DENY policies fail open; fixed in grpc-go 1.83.1. Same wrong-package match as CVE-2026-84304 above. Fixed by Not applicable — documented in OpenVEX asnot_affected(component_not_present). Reachability: Not affected — same C++ gRPC library as above; no xDS RBAC filter is present or configured in the image. - CVE-2026-30923 (7.5 (High; 8.2 CVSS v4.0, GitHub)) —
libmodsecurity (nginx-base, compiled from source): Buffer overflow inhex_decode.cc: a rule that applies thet:hexDecodetransformation to a query-string parameter containing a single character makes the worker segfault, so a remote client can crash nginx workers on demand (DoS) for as long as the requests keep coming. Fixed upstream in libmodsecurity v3.0.15. Surfaced by a customer inquiry: the image scanners see no package metadata for from-source components, so neither Trivy nor Grype had flagged it. Fixed byimages/nginx-base/rootfs/build.shMODSECURITY_LIB_VERSIONv3.0.14 → v3.0.16 (libmodsecurity is compiled from source in nginx-base, so no Alpine package is involved);images/nginx-base/TAGv2.2.10-nes.9 → v2.2.10-nes.10 rebuild. v3.0.15+ dropped legacy PCRE, so the builder gainspcre2-devand the runtime imagepcre2; NGINX itself is pinned to legacy PCRE with--without-pcre2so its regex engine is unchanged.--without-luakeeps parity with the v3.0.14 build, whose LuaJIT detection never actually succeeded. Reachability: Not reachable by default —ngx_http_modsecurity_module.sois loaded into every worker, but the engine is off unlessenable-modsecurityis set (ConfigMap or annotation) and a rule usest:hexDecode(OWASP CRS v4.22.0 does not; amodsecurity-snippetmay). Any customer running the WAF with such a rule was exposed; library CVE resolved by the version bump regardless. - CVE-2026-42268 (7.5 (High; 8.2 CVSS v4.0, GitHub)) —
libmodsecurity (nginx-base, compiled from source): Unsigned-integer underflow in the@verifySSN,@verifyCPFand@verifySVNRoperators throws an unhandledstd::out_of_range, crashing the worker (DoS) when a rule uses one of them against attacker-controlled input. Affects libmodsecurity 3.0.0 – 3.0.14; fixed upstream in v3.0.15. Fixed by Same v3.0.16 bump as above. Reachability: Not reachable by default — same gating as CVE-2026-30923 above, and additionally requires a rule using one of the three@verify*operators (OWASP CRS v4.22.0 does not ship such a rule). Library CVE resolved by the version bump regardless. - CVE-2026-52747 (High, CVSS 8.6) —
libmodsecurity (nginx-base, compiled from source): The multipart/form-data request-body parser silently strips embedded CR/LF from non-file form-field values before exporting them toARGS/ARGS_POST, while backend applications keep them, so a payload split across line breaks can evade every rule that inspects form arguments (WAF parser differential). Fixed upstream in libmodsecurity v3.0.16 (commit875504c). Fixed by Same v3.0.16 bump as above. Reachability: Reachable when the WAF is enabled — every OWASP CRS request-inspection rule readsARGS, so any customer withenable-modsecurity+enable-owasp-modsecurity-crson could have had multipart payloads slip past CRS. Off by default; library CVE resolved by the version bump regardless. - CVE-2026-52761 (Medium) —
libmodsecurity (nginx-base, compiled from source): UTF-8 → Unicode conversion bug specific to the i386 architecture, fixed upstream in libmodsecurity v3.0.16 alongside CVE-2026-52747. Documented here because the same bump covers it; no scanner had flagged it. Fixed by Same v3.0.16 bump as above. Reachability: Not reachable — the defect is specific to 32-bit i386 builds; nginx-base ships only linux/amd64 and linux/arm64 images. Library CVE resolved by the version bump regardless. - CVE-2025-9230 (7.5 (High; CVSS v3.1, CISA-ADP)) —
openssl / libcrypto3 / libssl3: An application trying to decrypt CMS messages encrypted using password based encryption can trigger an out-of-bounds read and write. Impact summary: This out-of-bounds read may trigger a crash which leads to Denial of Service for an application. Fixed by Already fixed in the first NES image: Alpine credits the fix toopenssl3.5.4-r0 (aports 3.23-stableec1ce97a, 2025-09-30), which predates the initial nginx-base build (cf39b8d, 2026-04-14,apk upgradeon Alpine 3.23). Confirmed ≥ 3.5.6-r0 in v2.2.10-nes.2 and 3.5.7-r0 in nes.3 ( rows above); the image ships 3.5.8-r0 since v2.2.10-nes.8. Documented now because a customer inquiry listed it and no scanner had ever flagged it against a shipped image. Reachability: Not reachable — CMS password-based decryption is not used by nginx, the controller or the OTel exporter; library CVE resolved by the version bump regardless. - CVE-2025-15467 (8.8 (High; CVSS v3.1, CISA-ADP)) —
openssl / libcrypto3 / libssl3: Parsing CMS AuthEnvelopedData or EnvelopedData message with maliciously crafted AEAD parameters can trigger a stack buffer overflow. Impact summary: A stack buffer overflow may lead to a crash, causing Denial of Service, or potentially remote code execution. Fixed by Same as above — fixed inopenssl3.5.5-r0 (aports9e1970e0, 2026-01-27), present since the first NES image. Reachability: Not reachable — CMS AuthEnvelopedData/EnvelopedData parsing is not exercised by anything in the image; library CVE resolved by the version bump regardless. - CVE-2025-68160 (4.7 (Medium; CVSS v3.1, CISA-ADP)) —
openssl / libcrypto3 / libssl3: Writing large, newline-free data into a BIO chain using the line-buffering filter where the next BIO performs short writes can trigger a heap-based out-of-bounds write. Impact summary: This out-of-bounds write can cause memory corruption which typically results in a crash, leading to Denial of Service for an application. Fixed by Same as above — fixed inopenssl3.5.5-r0 (aports9e1970e0, 2026-01-27), present since the first NES image. Reachability: Not reachable — the BIO line-buffering filter (BIO_f_linebuffer) is not used by nginx's TLS stack; library CVE resolved by the version bump regardless. - CVE-2025-69419 (7.4 (High; CVSS v3.1, CISA-ADP)) —
openssl / libcrypto3 / libssl3: Calling PKCS12_get_friendlyname() function on a maliciously crafted PKCS#12 file with a BMPString (UTF-16BE) friendly name containing non-ASCII BMP code point can trigger a one byte write before the allocated buffer. Fixed by Same as above — fixed inopenssl3.5.5-r0 (aports9e1970e0, 2026-01-27), present since the first NES image. Reachability: Not reachable — nothing in the image parses PKCS#12 files (nginx loads PEM certificates and keys); library CVE resolved by the version bump regardless. - CVE-2025-69420 (7.5 (High; CVSS v3.1, CISA-ADP)) —
openssl / libcrypto3 / libssl3: A type confusion vulnerability exists in the TimeStamp Response verification code where an ASN1_TYPE union member is accessed without first validating the type, causing an invalid or NULL pointer dereference when processing a malformed TimeStamp Response file. Fixed by Same as above — fixed inopenssl3.5.5-r0 (aports9e1970e0, 2026-01-27), present since the first NES image. Reachability: Not reachable — RFC 3161 TimeStamp response verification is not used by any component in the image; library CVE resolved by the version bump regardless. - CVE-2025-69421 (High, CVSS 7.5) —
openssl / libcrypto3 / libssl3: Processing a malformed PKCS#12 file can trigger a NULL pointer dereference in the PKCS12_item_decrypt_d2i_ex() function. Impact summary: A NULL pointer dereference can trigger a crash which leads to Denial of Service for an application processing PKCS#12 files. Fixed by Same as above — fixed inopenssl3.5.5-r0 (aports9e1970e0, 2026-01-27), present since the first NES image. Reachability: Not reachable — nothing in the image parses PKCS#12 files; library CVE resolved by the version bump regardless. - CVE-2026-2673 (6.5 (Medium; CVSS v3.1, CISA-ADP)) —
openssl / libcrypto3 / libssl3: An OpenSSL TLS 1.3 server may fail to negotiate the expected preferred key exchange group when its key exchange group configuration includes the default by using the 'DEFAULT' keyword. Fixed by Same as above — fixed inopenssl3.5.6-r0 (aportsc630cf83, 2026-04-09), present since the first NES image. Reachability: Not reachable in practice — affects TLS 1.3 servers using theDEFAULTkey-exchange group keyword; a downgrade to a less-preferred (still secure) group, not a compromise; library CVE resolved by the version bump regardless. - CVE-2026-28387 (High, CVSS 8.1) —
openssl / libcrypto3 / libssl3: An uncommon configuration of clients performing DANE TLSA-based server authentication, when paired with uncommon server DANE TLSA records, may result in a use-after-free and/or double-free on the client side. Fixed by Same as above — fixed inopenssl3.5.6-r0 (aportsc630cf83, 2026-04-09), present since the first NES image. Reachability: Not reachable — DANE TLSA-based server authentication is not enabled by nginx or the OTel exporter; library CVE resolved by the version bump regardless. - CVE-2026-28388 (High, CVSS 7.5) —
openssl / libcrypto3 / libssl3: When a delta CRL that contains a Delta CRL Indicator extension is processed a NULL pointer dereference might happen if the required CRL Number extension is missing. Impact summary: A NULL pointer dereference can trigger a crash which leads to a Denial of Service for an application. Fixed by Same as above — fixed inopenssl3.5.6-r0 (aportsc630cf83, 2026-04-09), present since the first NES image. Reachability: Not reachable — nginx does not process delta CRLs (ssl_crlloads plain CRLs and no delta CRL indicator handling is configured); library CVE resolved by the version bump regardless. - CVE-2026-28389 (High, CVSS 7.5) —
openssl / libcrypto3 / libssl3: During processing of a crafted CMS EnvelopedData message with KeyAgreeRecipientInfo a NULL pointer dereference can happen. Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service. Fixed by Same as above — fixed inopenssl3.5.6-r0 (aportsc630cf83, 2026-04-09), present since the first NES image. Reachability: Not reachable — CMS EnvelopedData processing is not exercised by anything in the image; library CVE resolved by the version bump regardless. - CVE-2026-28390 (High, CVSS 7.5) —
openssl / libcrypto3 / libssl3: During processing of a crafted CMS EnvelopedData message with KeyTransportRecipientInfo a NULL pointer dereference can happen. Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service. Fixed by Same as above — fixed inopenssl3.5.6-r0 (aportsc630cf83, 2026-04-09), present since the first NES image. Reachability: Not reachable — CMS EnvelopedData processing is not exercised by anything in the image; library CVE resolved by the version bump regardless. - CVE-2026-31789 (Critical, CVSS 9.8) —
openssl / libcrypto3 / libssl3: Converting an excessively large OCTET STRING value to a hexadecimal string leads to a heap buffer overflow on 32 bit platforms. Impact summary: A heap buffer overflow may lead to a crash or possibly an attacker controlled code execution or other undefined behavior. Fixed by Same as above — fixed inopenssl3.5.6-r0 (aportsc630cf83, 2026-04-09), present since the first NES image. Reachability: Not reachable — the OCTET STRING to hex conversion path is inossl_*printing helpers not invoked by nginx's TLS handshake; treated as fixed by the version bump like the rest of the batch; library CVE resolved by the version bump regardless. - CVE-2026-31790 (7.5 (High; CVSS v3.1, CISA-ADP)) —
openssl / libcrypto3 / libssl3: Applications using RSASVE key encapsulation to establish a secret encryption key can send contents of an uninitialized memory buffer to a malicious peer. Fixed by Same as above — fixed inopenssl3.5.6-r0 (aportsc630cf83, 2026-04-09), present since the first NES image. Reachability: Not reachable — RSASVE key encapsulation (EVP_PKEY_encapsulatewith RSA) is not used by any component in the image; library CVE resolved by the version bump regardless. - CVE-2025-9086 (7.5 (High; CVSS v3.1, CISA-ADP)) —
curl / libcurl: 1. A cookie is set using thesecurekeyword forhttps://target2. curl is redirected to or otherwise made to speak withhttp://target(same hostname, but using clear text HTTP) using the same cookie set 3. The same cookie name is set - but with only a slash as path (path="/"). Fixed by Already fixed in the first NES image: Alpine credits the fix tocurl8.16.0-r0 (aports 3.23-stablefcf8bd81, 2025-09-10); the initial nginx-base build shipped 8.17.0-r1 ( row above) and the image ships 8.22.0-r0 today. Reachability: Not reachable — no libcurl consumer in the image enables the cookie engine (same footprint as CVE-2025-14017 above); library CVE resolved by the version bump regardless. - CVE-2026-8286 (8.1 (High; CVSS v3.1, CISA-ADP)) —
curl / libcurl: A vulnerability exists where a new transfer that uses STARTTLS to upgrade the connection might reuse an existing live connection even though the TLS configuration mismatches so it should not. Fixed by Fixed by the v2.2.10-nes.6 nginx-base respin (cb8d8e3, 2026-07-06), the first build after Alpine credited the curl 8.21.0 advisory batch tocurl8.21.0-r0 (aports 3.24-stable461165dc, 2026-06-30; the CVE-2026-11586 row above records 8.20.0-r1 → 8.21.0-r0 in that respin). First shipped in v1.15.1-nes-1.15.7; the image ships 8.22.0-r0 today. Documented now because a customer inquiry listed the batch. Reachability: Not reachable — no consumer in the image uses STARTTLS protocols (IMAP/SMTP/POP3/FTP); the OTel exporter and libmodsecurity speak HTTP(S) only; library CVE resolved by the version bump regardless. - CVE-2026-8924 (9.1 (Critical; CVSS v3.1, CISA-ADP)) —
curl / libcurl: A flaw in curl’s cookie parsing logic allows a malicious HTTP server to set "super cookies" that bypass the Public Suffix List check. This enables an attacker-controlled origin to inject cookies that curl subsequently scopes and transmits to unrelated third-party domains. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — the cookie engine is never enabled by any libcurl consumer in the image; library CVE resolved by the version bump regardless. - CVE-2026-8925 (9.8 (Critical; CVSS v3.1, CISA-ADP)) —
curl / libcurl: The curl logic that works with SASL authentication could end up cleaning up the GSASL context twice without clearing the pointer in between, making itfree()the same pointer twice. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — Alpine's curl is built without GSASL (curl -Vlists nogsaslfeature); library CVE resolved by the version bump regardless. - CVE-2026-8926 (9.1 (Critical; CVSS v3.1, CISA-ADP)) —
curl / libcurl: When asking curl to use a.netrcfile to find credentials and at the same time specifying a URL with a username (without a password), likehttps://user@example.com/, curl could wrongly get and use the password for another user set in the.netrcfile for that host if such a one exists and there is no match for the specifi…. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — no consumer setsCURLOPT_NETRC; the curl CLI is present only as alibmaxminddbdependency and is never invoked; library CVE resolved by the version bump regardless. - CVE-2026-8927 (9.1 (Critical; CVSS v3.1, CISA-ADP)) —
curl / libcurl: When reusing a libcurl handle for sequential transfers driven by environment-variable proxy configuration, libcurl fails to clear the proxy authentication state between requests. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — the OTel exporter uses a fresh easy handle per export and libmodsecurity'sSecRemoteRulesfetch is one-shot; neither switches proxy environment configuration between transfers; library CVE resolved by the version bump regardless. - CVE-2026-8932 (7.5 (High; CVSS v3.1, CISA-ADP)) —
curl / libcurl: libcurl would reuse a previously created connection even when some mTLS config related option had been changed that should have prohibited reuse. libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse if one of them matches the setup. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — neither consumer changes mTLS options between transfers on a reused handle; library CVE resolved by the version bump regardless. - CVE-2026-9079 (9.8 (Critical; CVSS v3.1, CISA-ADP)) —
curl / libcurl: libcurl had a flaw that when instructed to clear proxy authentication credentials which made it not do so, leaving the old credentials around to get used for subsequent transfers that should not know nor use them. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — no consumer sets, let alone clears, proxy authentication credentials; library CVE resolved by the version bump regardless. - CVE-2026-9080 (7.3 (High; CVSS v3.1, CISA-ADP)) —
curl / libcurl: Callingcurl_easy_pause()within the event-basedCURLMOPT_SOCKETFUNCTIONcallback triggers a use-after-free vulnerability, where libcurl attempts to store a flag using a dangling struct pointer immediately after that pointer's memory has been freed. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — neither consumer uses the multi/event interface (CURLMOPT_SOCKETFUNCTION) orcurl_easy_pause(); library CVE resolved by the version bump regardless. - CVE-2026-9545 (7.5 (High; CVSS v3.1, CISA-ADP)) —
curl / libcurl: In this scenario, libcurl first uses a proper HTTP/3 server for the initial transfers, and when it makes a second transfer to the same site it has been replaced by the attacker's impostor machine - without a valid certificate. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — Alpine's curl 8.19.0+ is built without HTTP/3 (aportsb2e9306b"drop http3 support"), so no QUIC/HTTP3 code path exists in the image; library CVE resolved by the version bump regardless. - CVE-2026-9546 (7.5 (High; CVSS v3.1, CISA-ADP)) —
curl / libcurl: A vulnerability in libcurl caused the HTTPReferer:header to persist even when explicitly cleared. While the documentation states that passing NULL toCURLOPT_REFERERsuppresses the header, the option failed to clear the internal state. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — no consumer sets or clears aReferer:header across reused transfers; library CVE resolved by the version bump regardless. - CVE-2026-9547 (7.4 (High; CVSS v3.1, CISA-ADP)) —
curl / libcurl: When a libcurl-based application performs transfers viaSCP://orSFTP://and utilizes theCURLOPT_SSH_KEYFUNCTIONcallback, it may silently accept an untrusted server. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — Alpine's curl has no libssh2/SCP/SFTP support and nothing in the image uses those schemes; library CVE resolved by the version bump regardless. - CVE-2026-10536 (9.8 (Critical; CVSS v3.1, CISA-ADP)) —
curl / libcurl: A use-after-free vulnerability exists in libcurl when an application configures an HTTP/2 stream-dependency tree viaCURLOPT_STREAM_DEPENDSorCURLOPT_STREAM_DEPENDS_E, subsequently invokescurl_easy_reset(), and finally terminates the handle withcurl_easy_cleanup(). Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — no consumer configures HTTP/2 stream dependencies (CURLOPT_STREAM_DEPENDS); library CVE resolved by the version bump regardless. - CVE-2026-11352 (7.5 (High; CVSS v3.1, CISA-ADP)) —
curl / libcurl: An issue in curl’s QUIC UDP receive function allows a malicious HTTP/3 server to trigger a remote denial of service against a curl or libcurl client. Because the helper function discards zero-length UDP datagrams before counting them toward the per-call packet budget, a connected QUIC peer can continuously stream empty datagrams…. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — HTTP/3/QUIC is not compiled into Alpine's curl (see CVE-2026-9545); library CVE resolved by the version bump regardless. - CVE-2026-11564 (9.1 (Critical; CVSS v3.1, CISA-ADP)) —
curl / libcurl: libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse if one of them matches the setup. An easy handle that first uses default native CA trust can continue trusting the native platform store after the application switches that same handle to custom CA material for a later transfer. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — connection-pool reuse across differing TLS/proxy settings requires a long-lived multi handle with varying options; neither consumer does this; library CVE resolved by the version bump regardless. - CVE-2026-11856 (9.8 (Critical; CVSS v3.1, CISA-ADP)) —
curl / libcurl: Successfully using libcurl to do a transfer to a specific HTTP origin (hostA) with Digest authentication and then changing the origin to a different one (hostB) for a second transfer, reusing the same handle, makes libcurl wrongly pass on theAuthorization:header field meant forhostA, tohostB. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — no consumer uses Digest authentication; library CVE resolved by the version bump regardless. - CVE-2026-12064 (7.5 (High; CVSS v3.1, CISA-ADP)) —
curl / libcurl: When a user invokes curl using a schemeless URL combined with--proto-defaultsftp (or scp), a disconnect occurs between the tool layer and libcurl. The tool layer incorrectly infers the URL scheme, which erroneously bypasses the initialization of critical SSH security options like CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 and CURLOP…. Fixed by Same 8.21.0-r0 batch as above — fixed by the v2.2.10-nes.6 respin, first shipped in v1.15.1-nes-1.15.7. Reachability: Not reachable — affects the curl CLI with--proto-default sftp/scp; the CLI is never invoked and Alpine's curl has no SFTP/SCP support; library CVE resolved by the version bump regardless. - CVE-2025-6021 (7.5 (High; CVSS v3.1, Red Hat)) —
libxml2: A flaw was found in libxml2's xmlBuildQName function, where integer overflows in buffer size calculations can lead to a stack-based buffer overflow. This issue can result in memory corruption or a denial of service when processing crafted input. Fixed by Already fixed in the first NES image: Alpine credits the fix tolibxml22.13.9-r0 (aports 3.23-stable56c3dff2, 2025-09-09), seven months before the initial nginx-base build; the CVE-2026-6732 row above records 2.13.9-r1 in v2.2.10-nes.2 and the image ships 2.13.9-r2. Reachability: Not reachable in the default configuration — libxml2 is used only by libmodsecurity's XML request-body parser, which runs only when ModSecurity is enabled and the request body is XML; library CVE resolved by the version bump regardless. - CVE-2025-49794 (9.1 (Critical; CVSS v3.1, Red Hat)) —
libxml2: A use-after-free vulnerability was found in libxml2. This issue occurs when parsing XPath elements under certain circumstances when the XML schematron has the <sch:name path="."/> schema elements. Fixed by Same as above — fixed inlibxml22.13.9-r0 (aports56c3dff2, 2025-09-09), present since the first NES image. Reachability: Not reachable in the default configuration — XPath evaluation is only exercised by libmodsecurity's@validateSchema/XML variables when ModSecurity is enabled; library CVE resolved by the version bump regardless. - CVE-2025-49795 (7.5 (High; CVSS v3.1, Red Hat)) —
libxml2: A NULL pointer dereference vulnerability was found in libxml2 when processing XPath XML expressions. This flaw allows an attacker to craft a malicious XML input to libxml2, leading to a denial of service. Fixed by Same as above — fixed inlibxml22.13.9-r0 (aports56c3dff2, 2025-09-09), present since the first NES image. Reachability: Same as above; library CVE resolved by the version bump regardless. - CVE-2025-49796 (9.1 (Critical; CVSS v3.1, Red Hat)) —
libxml2: A vulnerability was found in libxml2. Processing certain sch:name elements from the input XML file can trigger a memory corruption issue. This flaw allows an attacker to craft a malicious XML input file that can lead libxml to crash, resulting in a denial of service or other possible undefined behavior due to sensitive data bein…. Fixed by Same as above — fixed inlibxml22.13.9-r0 (aports56c3dff2, 2025-09-09), present since the first NES image. Reachability: Same as above — Schematron (sch:) validation is never invoked by ModSecurity; library CVE resolved by the version bump regardless. - CVE-2026-11979 (High, CVSS 7.8) —
libxml2 (xmlcatalog CLI, package libxml2-utils): libxml2 is vulnerable to multiple stack-based buffer overflows in the xmlcatalog utility when running in --shell mode. The usershell() function processes user input using fixed-size stack buffers without proper bounds checking. The upstream fix (c2e233fc, 2026-05-22) changesxmlcatalog.conly; the maintainers dispute that it is a vulnerability. Not tracked by Alpine secdb. Fixed by Not applicable — the vulnerable binary is not in the image; documented in OpenVEX asnot_affected(component_not_present), same handling as CVE-2026-33186. Reachability: Not affected — on Alpine/usr/bin/xmlcatalogships in thelibxml2-utilssubpackage; the runtime stage installs only thelibxml2library package andlibxml2-utilsis absent from its dependency closure, so the--shellcode path cannot execute in the shipped image. - CVE-2026-0994 (High, CVSS 7.5) —
protobuf (Alpine apk, C++ libprotobuf): A denial-of-service (DoS) vulnerability exists in google.protobuf.json_format.ParseDict() in Python, where the max_recursion_depth limit can be bypassed when parsing nested google.protobuf.Any messages. The upstream fix (protocolbuffers/protobuf#25239) changespython/google/protobuf/json_format.pyand its test only. Fixed by Not applicable — Python-implementation flaw; documented in OpenVEX asnot_affected(component_not_present), the same wrong-package handling as the grpc apk rows above. Reachability: Not affected — the image ships Alpine's C++libprotobuf31.1-r1 as a runtime dependency ofgrpc-cpp(OpenTelemetry C++ exporter);python3andpy3-protobufare absent from the runtime dependency closure and no shipped component parses protobuf JSON. - CVE-2026-40200 (8.1 (High; CVSS v3.1 per MITRE)) —
musl: An issue was discovered in musl libc 0.7.10 through 1.2.6. Stack-based memory corruption can occur during qsort of very large arrays, due to incorrectly implemented double-word primitives. Fixed by Already fixed in the first NES image: Alpine patched it inmusl1.2.6-r2 (aports 3.23-stable8aef0c37, 2026-04-10 "main/musl: fix CVE-2026-40200"; 3.24-stableb0c8ea10, package built 2026-04-11), four days before the initial nginx-base build (cf39b8d, 2026-04-14); the row above notes the Alpine 3.24 rebuild picked up the musl baseline. The image ships 1.2.6-r2. Reachability: Not reachable in practice — requires aqsortcomparison function that behaves inconsistently (a program bug); nginx, LuaJIT and the shipped modules callqsortwith well-formed comparators. Library CVE resolved by the version bump regardless. - CVE-2026-22184 (High, CVSS 7.8) —
zlib: zlib versions up to and including 1.3.1.2 include a global buffer overflow in the untgz utility located under contrib/untgz. The vulnerability is limited to the standalone demonstration utility and does not affect the core zlib compression library. Fixed by Already fixed in the first NES image: Alpine shippedzlib1.3.2-r0 (aports 3.23-stableb9390f66, 2026-03-06) after first marking its build not-vulnerable (d323c1ad, 2026-01-26); the image ships 1.3.2-r0. Reachability: Not affected in substance — the flaw is in theuntgzexample utility undercontrib/, which Alpine does not build or ship (onlylibz.sois packaged); nothing in the image contains that code. Version bump covers it regardless.
Go Toolchain
- CVE-2026-33818 (High, CVSS 7.5) —
Go stdlib encoding/asn1: Unbounded recursion while decoding nested ASN.1 values can exhaust the stack. Tracks project items and. Fixed byGOLANG_VERSION1.26.5 → 1.26.6. Reachability: Reachable —internal/net/ssl.parseSANExtensioncallsasn1.Unmarshalwhile processing certificates. - CVE-2026-56859 (High, CVSS 7.5) —
Go stdlib encoding/xml: Unbounded recursion while decoding nested XML values can exhaust the stack. Tracks project items and. Fixed byGOLANG_VERSION1.26.5 → 1.26.6. Reachability: Materially present — vulnerable XML decoder symbols are embedded in the controller binary, although production-entrypoint govulncheck found no call path. - CVE-2026-56853 (High, CVSS 7.5) —
Go stdlib net/http: The unencrypted HTTP/2 protocol check did not applyReadHeaderTimeout, permitting connections to consume server resources. Tracks project items and. Fixed byGOLANG_VERSION1.26.5 → 1.26.6. Reachability: Reachable — the metrics and controller servers callhttp.Server.ListenAndServeandListenAndServeTLS. - CVE-2026-56862 (High, CVSS 7.5) —
Go stdlib crypto/tls: TLS accepted an unbounded number of post-handshake messages, permitting memory or CPU exhaustion. Tracks project items and. Fixed byGOLANG_VERSION1.26.5 → 1.26.6. Reachability: Reachable — controller logging, metrics, Kubernetes client, and internal status-request paths reach vulnerable TLS handshake/read/write symbols. - CVE-2026-56858 (Medium, CVSS 6.1) —
Go stdlib html/template: Incorrect JavaScript regular-expression context tracking can permit improper escaping. Tracks project item. Fixed byGOLANG_VERSION1.26.5 → 1.26.6. Reachability: Materially present — vulnerable template execution symbols are embedded in the controller binary, although production-entrypoint govulncheck found no call path. - CVE-2026-56860 (Medium, CVSS 5.9) —
Go stdlib net/url: Path resolution can take quadratic time on crafted input. Tracks project items and. Fixed byGOLANG_VERSION1.26.5 → 1.26.6. Reachability: Reachable — the controller's Kubernetes client call chain fromcmd/nginx/main.goreachesurl.URL.Parse.
Go Module Dependencies
- CVE-2026-41178 (Medium, CVSS 5.3) —
go.opentelemetry.io/otel: Baggage parsing does not cap the raw header length, permitting excessive resource consumption. Version 1.42.0 fixed the first affected range, but the defect was reintroduced in 1.43.0. Tracks project item. Fixed bygo.opentelemetry.io/otelv1.43.0 → v1.44.0. Reachability: Materially present — the module and vulnerable baggage symbols are embedded in the controller binary, although production-entrypoint govulncheck found no call path. - CVE-2026-56865 (High, CVSS 8.4) —
golang.org/x/mod/sumdb/tlog: Transparency-log tile verification can accept an invalid proof. Tracks project item. Fixed by Not applicable —x/modv0.37.0 remains in the build/test graph and is documented in OpenVEX asnot_affected(component_not_present). Reachability: Not affected —x/modis pulled through Ginkgo/x/toolsbut is absent from all three shipped Go binaries and controller-image scanner artifacts. - CVE-2026-56864 (High, CVSS 7.5) —
golang.org/x/mod/sumdb: Lookup accepted unrelated, unauthenticated hashes from a checksum-database response. Tracks project item. Fixed by Not applicable —x/modv0.37.0 remains in the build/test graph and is documented in OpenVEX asnot_affected(component_not_present). Reachability: Not affected —x/modis pulled through Ginkgo/x/toolsbut is absent from all three shipped Go binaries and controller-image scanner artifacts. - CVE-2026-56854 —
golang.org/x/crypto: Source-address critical option not enforced for non-public-key auth callbacks ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.53.0 → v0.55.0 (siblingx/net/x/text/x/sys/x/term/x/sync/x/mod/x/toolsmodules bumped alongside). Reachability: Not reachable — controller is not an SSH server;govulncheck ./...reports the advisory at module level only, with no call path from any package, both before and after the bump. - CVE-2026-56855 —
golang.org/x/crypto: DoS on a deadlocked established channel ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.55.0 → v0.56.0. Reachability: Not reachable from the shipped binary — no package incmd/internal/pkgimportsx/crypto/ssh(go mod whyreports the main module does not need the package; the module is required only for test-onlybcryptuse intest/e2e/annotations), andgovulncheckover the shipped trees reports no finding before or after the bump; the scheduled scan's call trace comes from the Linux-only./...test graph. Library CVE resolved by the version bump regardless. - CVE-2026-78662 —
golang.org/x/crypto: DoS on a deadlocked undecided channel ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.55.0 → v0.56.0. Reachability: Not reachable from the shipped binary — same assessment as CVE-2026-56855 above; library CVE resolved by the version bump regardless. - CVE-2026-84304 (8.7 (High; CVSS v4.0, GitHub)) —
google.golang.org/grpc: gRPC-Go heap memory exhaustion via HTTP/2 DATA frame fragmentation: an unauthenticated peer splits a stream's payload into millions of tiny (1-byte) DATA frames, each carrying per-frame tracking and queue overhead even inside the flow-control windows, so a handful of multiplexed streams can OOM the process (DoS). Fixed upstream by receive-buffer compaction in grpc-go 1.83.1. Dependabot alert. Fixed bygoogle.golang.org/grpcv1.82.1 → v1.83.1 (google.golang.org/genproto/googleapis/rpcmoves with it viago mod tidy). Reachability: Not reachable — same footprint as GHSA-hrxh-6v49-42gf above:grpcis a direct dependency but is imported only by the e2e suite, as a client (grpc.NewClientintest/e2e/annotations/grpc.goandtest/e2e/settings/grpc.go);go list -depsfinds nogoogle.golang.org/grpcpackage in anycmd/...binary, so no shipped controller image ever contained the vulnerable transport. The Go vulnerability database had no entry for this CVE when the bump landed, sogovulncheckcannot confirm it either way; the bump resolves the Dependabot alert regardless. The Alpinegrpcapk in nginx-base is the C++ library and is out of scope for this Go-only advisory; Grype's mis-match of this CVE against that apk is handled by anot_affectedVEX statement in . - CVE-2026-84445 (High) —
google.golang.org/grpc: gRPC-Go servers built withxds.NewGRPCServer()crash on a crafted request that carries neither:authoritynorHost: the HTTP/2 server transport accepted such requests, the xDS routing interceptor then indexed an empty authorities slice, and because the per-RPC goroutine does not recover from panics the whole server process exited (DoS). Any peer that completes the transport handshake can trigger it. Fixed in grpc-go 1.83.2 (and 1.82.2). Dependabot alert. Fixed bygoogle.golang.org/grpcv1.83.1 → v1.83.2 (golang.org/x/netv0.57.0 → v0.58.0 moves with it viago mod tidy). Reachability: Not reachable — same footprint as CVE-2026-84304 above:grpcis imported only by the e2e suite, as a client (grpc.NewClientintest/e2e/annotations/grpc.goandtest/e2e/settings/grpc.go); nothing in the repo callsxds.NewGRPCServer, andgo list -depsfinds nogoogle.golang.org/grpcpackage in anycmd/...binary, so no shipped controller image contains the vulnerable interceptor.govulncheck ./...on the bumped tree reports 0 vulnerabilities. The bump resolves the Dependabot alert regardless.
For upgrade instructions using the NES for Ingress NGINX Helm chart, see Helm Charts.
July 2026
1.15.7
Released Jul 23, 2026Container Image: registry.nes.herodevs.com/nes/ingress-nginx:v1.15.1-nes-1.15.7
Helm Chart: HeroDevs/ingress-nginx --version 0.0.9 (see Helm Charts)
Based on upstream ingress-nginx v1.15.1 Go version: 1.26.5 NGINX version: 1.27.1 (compiled from source on Alpine 3.24.0)
This release patches the following CVEs:
NGINX
- CVE-2026-42533 (9.2 (Critical, CVSS 4.0; 8.1 High on CVSS 3.1)) — Heap buffer overflow in the script engine's capture-copy code (
ngx_http_script.c/ngx_stream_script.c). Amapdirective's regex captures lefte->endunbounded, so a later string expression built from a map-derived variable (or a non-cacheable variable used more than once) could copy past the destination buffer during the LEN/VALUE two-pass evaluation. Fixed upstream in nginx 1.31.3, released 2026-07-15. Patch: NES backport of the upstream "Script: buffer overrun protection" series (squashed:28219209e0b4,b767540492e8,25f920eca977,a8289aa69c74) onto pinned 1.27.1. Reachability: Reachable pre-auth —block-user-agents/block-refererannotations template regexmapblocks (rootfs/etc/nginx/template/nginx.tmpl) matched against fully client-controlledUser-Agent/Refererheaders. - CVE-2026-56434 (8.3 (High, CVSS 4.0; 6.5 Medium on CVSS 3.1)) — Use-after-free from duplicate subrequest finalization in
ngx_http_request.c. A subrequest posted twice (once fromngx_http_subrequest(), once fromngx_http_postpone_filter()during SSI-include flushing) could be finalized twice, excessively decrementingr->main->count. Manifests inngx_http_ssi_filter_moduleduring unbuffered proxying. Fixed upstream in nginx 1.30.4, released 2026-07-15. Patch: NES backport of upstream commit700dc9e0e750onto pinned 1.27.1. Reachability: Reachable —ngx_http_ssi_filter_moduleis compiled in (not excluded inbuild.sh); reached viassi on;through configuration-snippet/server-snippet annotations. - CVE-2026-42946 (8.3 (Medium per Grype)) — Excessive memory allocation / over-read in
ngx_http_scgi_moduleandngx_http_uwsgi_module. On an invalid status line from the upstream, the parser fell back to header parsing without resettingr->state, letting parsing continue in the wrong state. Fixed upstream in nginx 1.31.0. Patch: Not applicable —build.shcompiles nginx with--without-http_scgi_moduleand--without-http_uwsgi_module; neither module exists in our binary, so there is no code to patch. Grype has flagged this repeatedly since 2026-05-28 via its nginx binary classifier;vex/openvex.jsonalready carries thenot_affected(vulnerable_code_not_present) statement. This row was just missing from this table until now — no new work, documentation catch-up only. Reachability: Not affected — both modules are excluded at compile time. - CVE-2026-60005 (High, CVSS 8.8) — Uninitialized memory access in
ngx_http_slice_modulewhen theslicedirective is combined with unnamed regex captures, or during a background cache update. Unauthenticated attackers can trigger limited memory disclosure or a worker restart. Data-plane only, no control-plane exposure. Fixed upstream in nginx 1.30.4 / 1.31.3, the same releases that fix CVE-2026-56434 and CVE-2026-42533 above. Flagged by Grype on 2026-07-21. Patch: Not applicable —ngx_http_slice_modulerequires the explicit--with-http_slice_moduleconfigure flag to build, andimages/nginx-base/rootfs/build.sh'sWITH_FLAGSlist does not include it; the module is not compiled into our nginx binary. Documented invex/openvex.jsonasnot_affected(vulnerable_code_not_present), same justification as CVE-2026-42946 above (nginx itself is present, just missing this one module). Reachability: Not affected — the module is never compiled in.
Alpine Packages
- CVE-2026-33630 (High, CVSS 7.5) —
c-ares: Use-after-free / double-free in query-completion handling. Fixed byimages/nginx-base/TAGv2.2.10-nes.6 → v2.2.10-nes.7 rebuild picks upc-ares1.34.6-r0 → 1.34.8-r0 per Alpine v3.24 secdb. Reachability: Indirect —c-aresis a transitive dependency ofgrpc-cpp(the OTel OTLP/gRPC exporter's async DNS resolver); not on the ingress client data path. - CVE-2026-56289 (Medium, CVSS 5.5) —
patch: GNU patch enters an effectively infinite loop on a crafted hunk with an out-of-range line offset, causing a DoS. Fixed upstream in commitfaba04ef4f2b; no Alpine package carries the fix yet (still2.8-r0on 3.24 as of this scan). Fixed by removing thepatchpackage from the final runtime stage ofimages/nginx-base/rootfs/Dockerfileinstead of waiting on an Alpine backport. It's a build-time-only tool (build.shapplies our patch set with it during the builder stage) with zero runtime callers — confirmed via a repo-wide grep forpatchinvocations outside the build tooling — eliminating the CVE by removing the binary, not just marking it unreachable. Reachability: Not affected after the fix — the binary is no longer present in the shipped image. - CVE-2026-56288 (Medium, CVSS 5.5) —
patch: GNU patch passes a NULL pointer tofwrite()when consecutive end-of-file newline markers corrupt its internal hunk data, causing a crash. Fixed upstream in commite6d6a4e02166; no Alpine package carries the fix yet. Fixed by the same fix as CVE-2026-56289 above:patchremoved from the runtime stage ofimages/nginx-base/rootfs/Dockerfile. Reachability: Not affected after the fix — the binary is no longer present in the shipped image.
Go Toolchain
- CVE-2026-42505 (Medium, CVSS 5.3) —
Go stdlib crypto/tls: Encrypted Client Hello handshakes disclosed pre-shared key identities in the unencrypted ClientHello, letting a passive network observer de-anonymize the connection. Fixed byGOLANG_VERSION1.26.4 → 1.26.5. Reachability: Low — controller does not configure ECH; fixed regardless by the toolchain bump. - CVE-2026-39822 (High, CVSS 7.8) —
Go stdlib os: On Unix,os.Rootfollows a symlink outside the root when the final path component is a symlink ending in/(for exampleroot.Open("symlink/")). Fixed byGOLANG_VERSION1.26.4 → 1.26.5. Reachability: Low — controller does not useos.Rooton attacker-influenced paths.
Go Module Dependencies
- CVE-2026-46600 —
golang.org/x/net: Parsing an invalid SVCB or HTTPS resource record can panic ingolang.org/x/net/dns/dnsmessage. Fixed bygolang.org/x/netv0.55.0 → v0.56.0. Reachability: Not reachable — confirmed viagovulncheck:dns/dnsmessageis present in the dependency graph but never called fromcmd/nginx. - CVE-2026-56852 —
golang.org/x/text: Infinite loop on invalid input ingolang.org/x/text/unicode/norm. Fixed bygolang.org/x/textv0.37.0 → v0.39.0. Reachability: Reachable — confirmed viagovulncheck:cmd/nginx/main.go'sIngressClasslister call chain reachesnorm.Form.Bytes/IsNormalString/QuickSpan/String. - GO-2026-5932 (Informational) —
golang.org/x/crypto:golang.org/x/crypto/openpgpand its subpackages are unmaintained and unsafe by design; the advisory carries no fixed version, on any release, ever. Fixed by None — no fixed version exists to bump to; no VEX entry either, since Grype has never flaggedx/crypto/openpgpagainst our binary (matching how the otherx/cryptorows above are handled). Reachability: Not affected —openpgpis never imported anywhere in this codebase (confirmed by grep);golang.org/x/cryptois pulled in forssh/bcrypt/hkdfonly. - GHSA-hrxh-6v49-42gf (High) —
google.golang.org/grpc: xDS RBAC and HTTP/2 vulnerabilities (Dependabot alert, no CVE assigned yet). Fixed bygoogle.golang.org/grpcv1.79.3 → v1.82.1. Reachability: Low — a direct dependency, but only imported bytest/e2e/annotations/grpc.goandtest/e2e/settings/grpc.go; not reachable from the controller binary. Confirmed viagovulncheck ./test/e2e/...clearing after the bump.
For upgrade instructions using the NES for Ingress NGINX Helm chart, see Helm Charts.
June 2026
1.15.6
Released Jun 27, 2026Container Image: registry.nes.herodevs.com/nes/ingress-nginx:v1.15.1-nes-1.15.6
Helm Chart: HeroDevs/ingress-nginx --version 0.0.9 (see Helm Charts)
Based on upstream ingress-nginx v1.15.1 Go version: 1.26.4 NGINX version: 1.27.1 (compiled from source on Alpine 3.24.0)
This release patches the following CVEs:
NGINX
- CVE-2026-42055 (7.3 (High; nginx rates Medium)) — Heap buffer overflow when building the HTTP/2 upstream request. nginx reserves only
NGX_HTTP_V2_INT_OCTETS(4) bytes for each HPACK field length; a field longer thanNGX_HTTP_V2_MAX_FIELD(~2 MB) needs more length octets than were reserved, overflowing the upstream header buffer. Upstream fixes bothngx_http_grpc_module(grpc_pass) andngx_http_proxy_v2_module(proxy_http_version 2); only the gRPC path exists in 1.27.1. Patch: NES backport of upstream commit26d824e(fixed in nginx 1.31.2 mainline / 1.30.3 stable, released 2026-06-17) onto pinned 1.27.1. Reachability: Reachable only via gRPC backends —grpc_passis generated by thebackend-protocol: GRPCannotation. Exploitation additionally requiresignore-invalid-headers: "false"andlarge-client-header-bufferslarger than 2 MB; neither is the default, so a stock deployment is not exposed. Theproxy_http_version 2path does not exist in 1.27.1. - CVE-2026-48142 (Medium, CVSS 6.3) — Buffer over-read in
ngx_http_charset_module(ngx_http_charset_recode_from_utf8). On an invalid UTF-8 sequencengx_utf8_decode()stops advancing at the first invalid byte; the saved-sequence pointer was not advanced past it, allowing a 1-byte over-read. Triggered when a location hassource_charset utf-8and acharsetdirective. A follow-up to CVE-2026-42934 (006). Patch: NES backport of upstream commit319a0bff(fixed in nginx 1.31.2 mainline / 1.30.3 stable, released 2026-06-17) onto pinned 1.27.1. Reachability: Reachable —ngx_http_charset_moduleis compiled in;charset/source_charsetare reachable via configuration-snippet annotations. Same low-severity over-read class as 006.
Alpine Packages
- CVE-2026-6276 (High, CVSS 7.5) —
curl / libcurl: Stale custom cookie host causes cookie leak — a customHost:header combined with cookies can send cookies to the wrong host on connection reuse. NVD rates 7.5; the curl project rates severity Low. Tracked Alpine-blocked since v1.15.1-nes-1.15.5 (VEXunder_investigation). Fixed by Alpine 3.24 switch:images/nginx-base/rootfs/Dockerfilepinsalpine:3.24;images/nginx-base/TAGv2.2.10-nes.2 → v2.2.10-nes.3 rebuild picks upcurl/libcurl8.19.0-r0 → 8.20.0-r1 per Alpine secdb. Reachability: Unlikely — the OTel C++ exporter is the only libcurl consumer and does not set customHost:headers with cookies; package version flagged by every scanner until this bump. - CVE-2026-7009 (Medium, CVSS 5.3) —
curl / libcurl: OCSP stapling (CURLOPT_SSL_VERIFYSTATUS) bypass in the Apple SecTrust (macOS Secure Transport) verification path. Tracked Alpine-blocked since v1.15.1-nes-1.15.5 (VEXunder_investigation). Fixed by Same Alpine 3.24 rebuild as above. Reachability: Not reachable — Apple SecTrust code is not compiled into Alpine's OpenSSL-backed curl, and the OTel exporter does not opt intoCURLOPT_SSL_VERIFYSTATUS. - CVE-2026-6732 (High, CVSS 7.5) —
libxml2: Type confusion in XSD schema processing → DoS. Affects libxml2 ≥ 2.13.0; fixed upstream in 2.15.3. The Alpine 3.23-stable backport was contributed by NES (aports MRs !103117–!103120), landed as2.13.9-r1, and is secdb-credited as of 2026-06-10 — meaning the v1.15.1-nes-1.15.5 image (which ships r1) is retroactively cleared by secdb-driven scanners. Tracked since v1.15.1-nes-1.15.5 (VEXunder_investigation). Fixed by Same Alpine 3.24 rebuild as above (libxml22.13.9-r1 → 2.13.9-r2). Reachability: Unlikely — libxml2 is used by ModSecurity for HTML/XML request-body parsing, but XSD schema processing is not exercised by the default ingress-nginx configuration. - CVE-2026-4873 (Medium, CVSS 5.9) —
curl / libcurl: Connection reuse ignores TLS requirement — a connection established with weaker TLS requirements can be wrongly reused for a transfer that demanded stricter ones. Fixed by Same Alpine 3.24 rebuild as above. Reachability: Unlikely — OTel exporter uses a single static TLS configuration, so no mixed-requirement reuse occurs. - CVE-2026-5545 (Medium, CVSS 6.5) —
curl / libcurl: Wrong reuse of HTTP Negotiate (SPNEGO/Kerberos) authenticated connection across credentials. Fixed by Same Alpine 3.24 rebuild as above. Reachability: Not reachable — the OTel exporter does not use Negotiate authentication. - CVE-2026-5773 (High, CVSS 7.5) —
curl / libcurl: Wrong reuse of SMB connection. NVD rates 7.5; the curl project rates severity Low. Fixed by Same Alpine 3.24 rebuild as above. Reachability: Not reachable — nothing in the controller or OTel exporter speaks SMB. - CVE-2026-6253 (Medium, CVSS 5.9) —
curl / libcurl: Proxy credentials leak over redirect-to proxy. Fixed by Same Alpine 3.24 rebuild as above. Reachability: Not reachable — OTel exporter does not configure HTTP proxies with credentials. - CVE-2026-6429 (Medium, CVSS 5.3) —
curl / libcurl: netrc credential leak with reused proxy connection. Fixed by Same Alpine 3.24 rebuild as above. Reachability: Not reachable — no.netrcusage in the controller image. - CVE-2026-7168 (Medium, CVSS 5.3) —
curl / libcurl: Cross-proxy Digest authentication state leak. Fixed by Same Alpine 3.24 rebuild as above. Reachability: Not reachable — OTel exporter does not use proxy Digest authentication. - CVE-2026-34182 (Critical, CVSS 9.1) —
openssl / libcrypto3: Cryptographic Message Services (CMS) processing fails to perform sufficient input validation on the cipher and tag length fields of AuthEnvelopedData containers, leading to various potential compromises. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-45447 (High, CVSS 8.8) —
openssl / libcrypto3: A specially crafted PKCS#7 or S/MIME signed message could trigger a use-after-free during PKCS#7 signature verification. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-7383 (High, CVSS 8.1) —
openssl / libcrypto3: A signed integer overflow when sizing the destination buffer for Unicode output in ASN1_mbstring_ncopy() can lead to a heap buffer overflow. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-34180 (High, CVSS 7.5) —
openssl / libcrypto3: Parsing a crafted DER-encoded ASN.1 structure with a primitive element whose content exceeds 2 gigabytes in length may cause a heap buffer over-read on 64-bit Unix and Unix-like platforms. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-34181 (High, CVSS 7.4) —
openssl / libcrypto3: The PKCS#12 file processing fails to perform sufficient input validation for files that use Password-Based Message Authentication Code 1 (PBMAC1) integrity mechanism allowing a certificate and private key forgery. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-34183 (High, CVSS 7.5) —
openssl / libcrypto3: Remote peer may exhaust heap memory of the QUIC server or client by flooding it with packets containing PATH_CHALLENGE frames. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-42764 (High, CVSS 7.5) —
openssl / libcrypto3: Receiving a QUIC initial packet with an invalid token may trigger a NULL pointer dereference in the OpenSSL QUIC server with address validation disabled. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-45445 (High, CVSS 7.5) —
openssl / libcrypto3: When an application drives an AES-OCB context through the public EVP_Cipher() one-shot interface, the application-supplied initialisation vector (IV) is silently discarded. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-9076 (High, CVSS 7.5) —
openssl / libcrypto3: When CMS password-based decryption (RFC 3211 / PWRI key unwrap) processes attacker-supplied CMS data, an attacker-chosen stream-mode KEK cipher can trigger a heap out-of-bounds read in kek_unwrap_key(). Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-42766 (Medium, CVSS 5.9) —
openssl / libcrypto3: A specially crafted password-encrypted CMS message can trigger a NULL pointer dereference during CMS decryption. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-42767 (Medium, CVSS 5.9) —
openssl / libcrypto3: An attacker-controlled CMP (Certificate Management Protocol) server could trigger a NULL pointer dereference in a CMP client application. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-42769 (Medium, CVSS 5.3) —
openssl / libcrypto3: An error in the callback used to verify the certificate provided in a Root CA key update Certificate Management Protocol (CMP) message response rendered the certificate validation ineffectual, which could lead to escalation of credentials from the Registration Authority (RA) level to the root Certification Authority (root CA) level. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-45446 (Medium, CVSS 4.8) —
openssl / libcrypto3: The implementations of AES-SIV (RFC 5297) and AES-GCM-SIV (RFC 8452) mishandle the authentication of AAD (Additional Authenticated Data) with an empty ciphertext allowing a forgery of such messages. Fixed by Alpine 3.24 switch (openssl/libcrypto3/libssl33.5.6-r0 → 3.5.7-r0); the nginx-base v2.2.10-nes.3 image ships 3.5.7-r0, confirmed byapk info -v. Reachability: Library CVE in libcrypto3, linked by NGINX (TLS) and the OTel exporter; resolved by the version bump regardless of reachability. - CVE-2026-58055 (Medium, CVSS 6.3) —
nghttp2-libs:nghttpxproxy forwards an HTTP/1.1 Upgrade request with aContent-Lengthbody onto a reusable keep-alive backend connection, enabling request/response smuggling. No fixed Alpine package is available yet. Reachability: Not affected — nginx-base only installsnghttp2-libs(a transitive dependency ofgrpc-cpp, the runtime package used only by the OTel/OTLP exporter's outbound connections); the vulnerablenghttpxproxy binary itself is not installed, and nginx never proxies traffic through it. - CVE-2026-11586 (High, CVSS 7.5) —
curl / libcurl: WebSocket Auto-PONG memory exhaustion — curl auto-responds to WebSocket PING frames with no cap on unacknowledged-frame memory, letting a malicious server flood a curl-based WebSocket client's memory. Fixed by the nginx-base rebuild (curl/libcurl8.20.0-r1 → 8.21.0-r0). Reachability: Not reachable — the OTel C++ exporter is the only libcurl consumer and exports over OTLP/gRPC and HTTP, never WebSocket.
Go Toolchain
- CVE-2026-39825 (Medium, CVSS 6.5) —
Go stdlib net/http/httputil:ReverseProxyforwards hidden query parameters, potentially bypassing security controls. Fixed by Go 1.26.3 (shipped via GOLANG_VERSION 1.26.4). Reachability: Not reachable: controller does not usenet/http/httputil.ReverseProxy, and the 1.15.6 image is rebuilt with Go 1.26.4. - CVE-2026-39823 (Medium, CVSS 5.4) —
Go stdlib html/template: XSS via improper URL escaping in<meta>tag content. Fixed by Go 1.26.3 (shipped via GOLANG_VERSION 1.26.4). Reachability: Not reachable: controller does not render untrusted input throughhtml/template, and the 1.15.6 image is rebuilt with Go 1.26.4. - CVE-2026-42499 (High, CVSS 7.5) —
Go stdlib net/mail: Denial of service via pathological email address parsing. Fixed by Go 1.25.10/1.26.3 (shipped via GOLANG_VERSION 1.26.4). Reachability: Not reachable: the 1.15.6 image is already rebuilt with Go 1.26.4, which supersedes the fix version.
For upgrade instructions using the NES for Ingress NGINX Helm chart, see Helm Charts.
1.15.5
Released Jun 10, 2026Container Image: registry.nes.herodevs.com/nes/ingress-nginx:v1.15.1-nes-1.15.5
Helm Chart: HeroDevs/ingress-nginx --version 0.0.8 (see Helm Charts)
Based on upstream ingress-nginx v1.15.1 Go version: 1.26.4 NGINX version: 1.27.1 (compiled from source on Alpine 3.23.4)
This release patches the following CVEs:
NGINX
- CVE-2026-1642 (High, CVSS 7.5) — SSL upstream injection. When the read event handler fires before the write event handler on a backend connection, a quick plain-text response from an SSL-enabled upstream can be parsed prior to the SSL handshake, allowing an on-path attacker between NGINX and the upstream to inject cleartext into responses. Companion issue: bad-response reinit was missing, leaving stale upstream context (mixed responses, dangling
ctx->connectionin gRPC/proxy_v2 paths leading to UAF on next-upstream retry). Patch: NES backport of upstream nginx 1.29.5 commitsa59f5f0andd7a2494onto pinned 1.27.1. Reachability: Reachable —proxy_ssl_verifyis templated inrootfs/etc/nginx/template/nginx.tmpland ingress users commonly proxy to TLS upstreams. - CVE-2026-40460 (Medium, CVSS 5.3) — HTTP/3 QUIC address spoofing. When a client migrated to a new address, new QUIC streams received the unvalidated address before path validation completed, allowing an attacker to create QUIC streams with a spoofed source address (bypassing IP-based ACLs/rate-limits). Patch: NES backport of upstream nginx 1.30.1 commit
5461e8bonto pinned 1.27.1. Reachability: Reachable —--with-http_v3_moduleis enabled inbuild.sh; users can enable HTTP/3 listeners via configuration-snippet annotations. - CVE-2026-40701 (Medium, CVSS 5.9) — OCSP resolver use-after-free. When a client SSL connection terminated (typically due to a timeout) while resolving an OCSP responder, the OCSP context was freed but the resolve context was not, causing a UAF on resolve completion. Patch: NES backport of upstream nginx 1.30.1 commit
d2b8d47onto pinned 1.27.1. Reachability: Reachable —ssl_verify_clientis templated innginx.tmpl;ssl_ocspis not in the default template but is reachable via configuration-snippet/server-snippet annotations. - CVE-2026-42934 (Medium, CVSS 5.3) — Buffer over-read in
ngx_http_charset_module. When a multi-byte UTF-8 character was split across 3+ single-byte buffers, the saved-bytes continuation path calledngx_utf8_decode()with the wrong length andngx_memcpy()read past the input buffer boundary. Patch: NES backport of upstream nginx 1.30.1 commit54b7945onto pinned 1.27.1. Reachability: Reachable —charset_mapcan be reached via configuration-snippet annotations withproxy_buffering off.
Go Toolchain
- CVE-2026-27145 —
Go stdlib crypto/x509: Inefficient candidate hostname parsing leads to excessive CPU on crafted certificate chains. Fixed by Go 1.26.3 → 1.26.4. Reachability: Low — controller reads only its own client certs and the API server CA. - CVE-2026-42504 —
Go stdlib: Govulncheck-flagged stdlib advisory, fixed in 1.26.4. Fixed by Go 1.26.3 → 1.26.4. Reachability: Low — covered by Go toolchain bump alongside CVE-2026-27145. - CVE-2026-42507 —
Go stdlib: Govulncheck-flagged stdlib advisory, fixed in 1.26.4. Fixed by Go 1.26.3 → 1.26.4. Reachability: Low — covered by Go toolchain bump alongside CVE-2026-27145. - GO-2026-5038 (High, CVSS 7.5) —
Go stdlib net/mail: Decoding a maliciously-crafted MIME header containing many invalid encoded-words can consume excessive CPU. Fixed by Go 1.26.3 → 1.26.4. Reachability: Low — controller does not parse external MIME headers. - GO-2026-5039 —
Go stdlib: Govulncheck-flagged stdlib advisory, fixed in 1.26.4. Fixed by Go 1.26.3 → 1.26.4. Reachability: Low — covered by Go toolchain bump.
Go Module Dependencies
- CVE-2026-39833 —
golang.org/x/crypto: Key constraints not enforced ingolang.org/x/crypto/ssh/agent. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — ingress controller does not act as an SSH agent;crypto/ssh/agentreachable only via transitive imports. - CVE-2026-39832 —
golang.org/x/crypto: Agent constraints dropped when forwarding keys ingolang.org/x/crypto/ssh/agent. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller does not forward SSH keys. - CVE-2026-46597 —
golang.org/x/crypto: Byte arithmetic underflow causes panic ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller is not an SSH server/client. - CVE-2026-39828 —
golang.org/x/crypto: Bypass of certificate restrictions ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller is not an SSH server/client. - CVE-2026-39835 —
golang.org/x/crypto: Server panic duringCheckHostKey/Authenticateingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller is not an SSH server. - CVE-2026-39827 —
golang.org/x/crypto: Memory leak when rejecting channels → DoS ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller is not an SSH server/client. - CVE-2026-39830 —
golang.org/x/crypto: Client can cause server deadlock on unexpected responses ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller is not an SSH server. - CVE-2026-39829 —
golang.org/x/crypto: Pathological RSA/DSA parameters → DoS ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller is not an SSH server/client. - CVE-2026-39831 —
golang.org/x/crypto: Bypass of FIDO/U2F security-keys physical-interaction ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Not reachable — controller does not perform interactive SSH auth. - CVE-2026-39834 —
golang.org/x/crypto: Infinite loop on large channel writes ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller is not an SSH server/client. - CVE-2026-42508 —
golang.org/x/crypto: Auth bypass via unenforced@revokedstatus ingolang.org/x/crypto/ssh/knownhosts. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Not reachable — controller does not useknownhosts. - CVE-2026-46595 —
golang.org/x/crypto:VerifiedPublicKeyCallbackpermissions skipped ingolang.org/x/crypto/ssh. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller is not an SSH server. - CVE-2026-46598 —
golang.org/x/crypto: Pathological inputs can panic client ingolang.org/x/crypto/ssh/agent. Fixed bygolang.org/x/cryptov0.50.0 → v0.52.0. Reachability: Low — controller does not act as an SSH agent client. - CVE-2026-39824 —
golang.org/x/sys: Integer overflow inNewNTUnicodeStringingolang.org/x/sys/windows. Fixed bygolang.org/x/sysv0.43.0 → v0.45.0. Reachability: Not reachable — controller runs on Linux only. - CVE-2026-42506 —
golang.org/x/net: Incorrect handling of namespaced elements in foreign content ingolang.org/x/net/html. Fixed bygolang.org/x/netv0.53.0 → v0.55.0. Reachability: Low —net/htmlreachable only via test/e2e framework (httpexpect). - CVE-2026-39821 —
golang.org/x/net: Failure to reject ASCII-only Punycode-encoded labels ingolang.org/x/net/idna. Fixed bygolang.org/x/netv0.53.0 → v0.55.0. Reachability: Low —idna.ToASCIIreachable only from test/e2e framework. - CVE-2026-42502 —
golang.org/x/net: Incorrect handling of HTML elements in foreign content ingolang.org/x/net/html. Fixed bygolang.org/x/netv0.53.0 → v0.55.0. Reachability: Low —net/htmlreachable only via test/e2e framework. - CVE-2026-25680 —
golang.org/x/net: Denial of service when parsing arbitrary HTML ingolang.org/x/net/html. Fixed bygolang.org/x/netv0.53.0 → v0.55.0. Reachability: Low —net/htmlreachable only via test/e2e framework. - CVE-2026-25681 —
golang.org/x/net: Incorrect handling of character references in DOCTYPE nodes ingolang.org/x/net/html. Fixed bygolang.org/x/netv0.53.0 → v0.55.0. Reachability: Low —net/htmlreachable only via test/e2e framework. - CVE-2026-27136 —
golang.org/x/net: Duplicate attributes can cause XSS ingolang.org/x/net/html. Fixed bygolang.org/x/netv0.53.0 → v0.55.0. Reachability: Low —net/htmlreachable only via test/e2e framework.
For upgrade instructions using the NES for Ingress NGINX Helm chart, see Helm Charts.
May 2026
1.15.4
Released May 18, 2026Container Image: registry.nes.herodevs.com/nes/ingress-nginx:v1.15.1-nes-1.15.4
Helm Chart: HeroDevs/ingress-nginx --version 0.0.7 (see Helm Charts)
Based on upstream ingress-nginx v1.15.1 Go version: 1.26.3 NGINX version: 1.27.1 (compiled from source on Alpine 3.23.4)
This release backports the fix for CVE-2026-42945 ("NGINX Rift", CVSS 9.2, actively exploited in the wild) into the pinned NGINX 1.27.1 baseline. The NGINX base image rebuild also picks up Alpine 3.23.4 with newer curl/libcurl (8.19.0-r0), clearing five medium-severity curl CVEs along the way.
For upgrade instructions using the NES for Ingress NGINX Helm chart, see Helm Charts.
NGINX
- CVE-2026-42945 (Critical, CVSS 9.2) — "NGINX Rift" — heap buffer overrun in
ngx_http_script_regex_end_code(thengx_http_rewrite_modulescript engine). Arewritewhose replacement contains args setsis_argsand never clears it; subsequentset/ifevaluations then apply URL-escaping to captures and the destination buffer is allocated without accounting for the escape expansion. Active in-the-wild exploitation confirmed by VulnCheck. DoS (worker crash) readily reachable; RCE requires ASLR disabled. Patch: NES backport of upstream commit2046b45a(fixed in nginx 1.31.0 mainline / 1.30.1 stable, released 2026-05-13) onto pinned 1.27.1. Reachability: the vulnerable code path is on the hot path for nearly every deployment becauserewrite-target, canary routing, and X-Forwarded-* handling all generate the trigger pattern.
Alpine Packages
- CVE-2025-14524 (Medium, CVSS 6.5) — curl/libcurl: OAuth2 bearer tokens leaked when an HTTP(S) request cross-protocol redirects to IMAP/LDAP/POP3/SMTP schemes. Fixed by rebuilding the NGINX base image (
v2.2.9-nes.2→v2.2.10-nes.1, Alpine 3.23.3 → 3.23.4,curl/libcurl8.17.0-r1 → 8.19.0-r0). Not reachable — controller's curl usage is the OpenTelemetry C++ exporter only. - CVE-2025-14819 (Medium, CVSS 6.8) — curl/libcurl: libcurl accidentally reuses a CA store cached in memory with the partial-chain option reversed, potentially accepting untrusted TLS certificates on subsequent connections with altered SSL settings. Fixed by the same rebuild. Not reachable — OTel exporter uses a single static TLS config.
- CVE-2026-1965 (Medium, CVSS 6.8) — curl/libcurl: libcurl incorrectly reuses authenticated connections with different credentials. Fixed by the same rebuild. Not reachable — OTel exporter uses a single static identity.
- CVE-2026-3784 (Medium, CVSS 6.5) — curl/libcurl: HTTP proxy connection reuse with mismatched credentials allows authentication bypass. Fixed by the same rebuild (applied to both
nginx-baseandcontrollerimages). Not reachable — neither image routes user traffic through an HTTP proxy via curl. - CVE-2026-3805 (Medium, CVSS 6.3) — curl/libcurl: use-after-free in SMB request handling. Fixed by the same rebuild. Not reachable — controller does not use curl's SMB protocol support.
1.15.3
Released May 4, 2026Container Image: registry.nes.herodevs.com/nes/ingress-nginx:v1.15.1-nes-1.15.3
Helm Chart: HeroDevs/ingress-nginx --version 0.0.5 (see Helm Charts)
Based on upstream ingress-nginx v1.15.1 Go version: 1.26.3 NGINX version: 1.27.1 (compiled from source on Alpine 3.23.3)
This release addresses CVE-2026-27135 in the nghttp2-libs Alpine package, four Go standard library advisories patched by upgrading the Go toolchain to 1.26.3, and an HTTP/2 transport vulnerability in golang.org/x/net patched by bumping that module to v0.53.0.
For upgrade instructions using the NES for Ingress NGINX Helm chart, see Helm Charts.
Alpine Packages
- CVE-2026-27135 (High, CVSS 7.5) —
nghttp2-libs: Denial-of-service via malformed HTTP/2 frames after session termination. Fixed by rebuilding the NGINX base image withnghttp2-libs1.68.1-r0 (v2.2.9-nes.2 NGINX base respin).
Go Toolchain
- GO-2026-4982 —
html/template: Bypass of meta content URL escaping causes XSS. Fixed by upgrading Go 1.26.2 → 1.26.3. - GO-2026-4980 —
html/template: Escaper bypass leads to XSS. Fixed by upgrading Go 1.26.2 → 1.26.3. - GO-2026-4971 —
net: Panic inDialandLookupPortwhen handling NUL byte on Windows. Fixed by upgrading Go 1.26.2 → 1.26.3. Not reachable in this build (controller runs on Linux only). - GO-2026-4918 —
net/httpandgolang.org/x/net: Infinite loop in HTTP/2 transport on badSETTINGS_MAX_FRAME_SIZE. Fixed by upgrading Go 1.26.2 → 1.26.3 andgolang.org/x/netv0.52.0 → v0.53.0.
April 2026
1.15.2
Released Apr 20, 2026Container Image: registry.nes.herodevs.com/nes/ingress-nginx:v1.15.1-nes-1.15.2
Helm Chart: HeroDevs/ingress-nginx --version 0.0.2 (see Helm Charts)
Based on upstream ingress-nginx v1.15.1 Go version: 1.26.2 NGINX version: 1.27.1 (compiled from source on Alpine 3.23.3)
This release addresses multiple high-severity CVEs across the Go toolchain and Go module dependencies.
For upgrade instructions using the NES for Ingress NGINX Helm chart, see Helm Charts.
Go Toolchain
- CVE-2026-32282 — (Medium, CVSS 6.4) —
Root.Chmodfollows symlinks outside root via TOCTOU race on Linux (internal/syscall/unix). Fixed by upgrading Go 1.26.1 → 1.26.2.
Go Module Dependencies
- CVE-2024-44337 (Medium, CVSS 5.1) —
github.com/gomarkdown/markdown: Infinite loop in paragraph parser causes denial-of-service. Bumped to patched version. - CVE-2026-35204 (High, CVSS 8.4) —
helm.sh/helm/v4: Path traversal in pluginversionfield allows arbitrary file write (CWE-22). Upgraded helm v4.1.3 → v4.1.4. - CVE-2026-35205 (High, CVSS 8.4) —
helm.sh/helm/v4: Missing.provfile check skips plugin signature verification, enabling arbitrary code execution (CWE-636). Upgraded helm v4.1.3 → v4.1.4. - CVE-2026-40890 (High, CVSS 7.5) —
github.com/gomarkdown/markdown: Out-of-bounds read/panic inSmartypantsRendereron malformed<input. Bumped to patched version.