xin

Security

nginx has shipped 40 memory-safety bugs.

Across seventeen years and every major version. xin is a drop-in replacement built so that entire category — buffer overflows, use-after-frees, memory disclosure — cannot be written in the first place.

What you get

Memory safety, where it actually matters.

Rust is not a marketing word here. It is a compiler that refuses to build the code that produced most of nginx's security history.

A parser that cannot overflow

xin's HTTP/1 engine is #![forbid(unsafe_code)] — the compiler rejects the build if a single unsafe block appears. Every slice access is bounds-checked. The chunked-encoding overflow that gave nginx a remote root in 2013 is not a bug you can write here.

A resolver with nothing to corrupt

Four of nginx's advisories are memory corruption in its DNS resolver, including the off-by-one heap write of CVE-2021-23017. xin ships its own resolver containing zero unsafe code.

A smaller target, by design

25 of nginx's memory-safety advisories are in modules xin does not ship: mp4, dav, SSI, mail, SCGI, HTTP/3. Code you do not run cannot be exploited, and xin refuses those directives at startup instead of half-implementing them.

One binary to patch

No dynamic module ABI, no third-party C modules linked into your worker process. When a fix ships, it is one signed package across seven architectures.

The record

nginx's own advisory list, counted up.

62 published nginx security advisories
40 are memory-safety defects — the class xin eliminates
15 hit code paths xin implements too, in safe Rust
25 are in modules xin does not ship at all

Source: nginx.org/en/security_advisories.html. Descriptions and severities below are nginx's own words.

Head to head

15 bugs in the jobs xin does too.

Not modules xin skipped — the request parser, the rewrite engine, byte ranges, upstream response handling, the resolver. Same job, same hostile input, different language.

  • CVE-2026-42533 major nginx 0.9.6–1.31.2

    Buffer overflow when using map and regex

    xin implements both map and regex locations. The lowering runs in xin-ir and xin-engine, both #![forbid(unsafe_code)].

  • CVE-2026-9256 medium nginx 0.1.17–1.31.0

    Buffer overflow in ngx_http_rewrite_module

    rewrite / return / try_files are implemented and lowered by xin, in safe Rust.

  • CVE-2026-42945 medium nginx 0.6.27–1.30.0

    Buffer overflow in ngx_http_rewrite_module

    Same module, same year, a second overflow. xin's rewrite lowering is BP-008, entirely in safe Rust.

  • CVE-2026-40701 medium nginx 1.19.0–1.30.0

    Resolver use-after-free in OCSP

    xin ships its own resolver (xin-resolver). It contains no unsafe code at all.

  • CVE-2021-23017 medium nginx 0.6.18–1.20.0

    1-byte memory overwrite in resolver

    An off-by-one writing a single '.' past a heap buffer in ngx_resolver_copy(); remote code execution was demonstrated. An off-by-one on a slice is a panic in safe Rust, not a write.

  • CVE-2017-7529 medium nginx 0.5.6–1.13.2

    Integer overflow in range filter

    xin implements byte ranges, including multipart. The overflow leaked cache memory because the bad offset was then used to index; in Rust that index is bounds-checked.

  • CVE-2016-4450 medium nginx 1.3.9–1.11.0

    NULL pointer dereference while writing client request body

    Request-body buffering to disk is a path xin implements. Rust has no null pointer to dereference here.

  • CVE-2016-0742 medium nginx 0.6.18–1.9.9

    Invalid pointer dereference in resolver

  • CVE-2016-0746 medium nginx 0.6.18–1.9.9

    Use-after-free during CNAME response processing in resolver

    Use-after-free is the defect class Rust's ownership model exists to eliminate.

  • CVE-2013-2070 medium nginx 1.1.4–1.2.8, 1.3.9–1.4.0

    Memory disclosure with specially crafted HTTP backend responses

    Parsing an upstream response is exactly what a reverse proxy does. xin parses them in xin-h1, which is #![forbid(unsafe_code)] and fuzzed.

  • CVE-2013-2028 major nginx 1.3.9–1.4.0

    Stack-based buffer overflow with specially crafted request

    The chunked-encoding overflow — a signed/unsigned confusion in the request parser, and the best-known remotely exploitable nginx bug. xin's chunked decoder is safe Rust and has a dedicated fuzz target.

  • CVE-2012-1180 major nginx 0.1.0–1.1.16

    Memory disclosure with specially crafted backend responses

    Upstream response parsing again, four years before the same class recurred.

  • CVE-2011-4315 medium nginx 0.6.18–1.1.7

    Buffer overflow in resolver

  • CVE-2009-2629 major nginx 0.1.0–0.8.14

    Buffer underflow vulnerability

    A pointer walked backwards out of the request buffer during URI parsing. In safe Rust a slice cannot be indexed below its start.

  • CVE-2009-3896 major nginx 0.1.0–0.8.13

    Null pointer dereference vulnerability

Everything

All 62 advisories, unfiltered.

Including the 22 that are not memory-safety bugs — injections, session reuse, resource exhaustion. Rust does not fix those, so they are listed unmarked rather than left out.

memory-safety, in a path xin implements memory-safety, module xin does not ship not a memory-safety bug
CVE nginx's description Severity Affected Class
CVE-2026-42533 Buffer overflow when using map and regex major 0.9.6–1.31.2 xin: safe Rust
CVE-2026-60005 Memory disclosure when using ngx_http_slice_module medium 1.15.8–1.31.2 xin: not shipped
CVE-2026-56434 Use-after-free when using ngx_http_ssi_module medium 0.8.11–1.31.2 xin: not shipped
CVE-2026-42530 Use-after-free in HTTP/3 major 1.31.0–1.31.1 xin: not shipped
CVE-2026-42055 Buffer overflow in ngx_http_proxy_v2_module and ngx_http_grpc_module medium 1.13.10–1.31.1 xin: not shipped
CVE-2026-48142 Buffer overread in ngx_http_charset_module low 0.3.50–1.31.1 xin: not shipped
CVE-2026-9256 Buffer overflow in ngx_http_rewrite_module medium 0.1.17–1.31.0 xin: safe Rust
CVE-2026-42926 HTTP/2 request injection in ngx_http_proxy_module medium 1.29.4–1.30.0 not memory safety
CVE-2026-42945 Buffer overflow in ngx_http_rewrite_module medium 0.6.27–1.30.0 xin: safe Rust
CVE-2026-42946 Buffer overread in ngx_http_scgi_module and ngx_http_uwsgi_module medium 0.8.42–1.30.0 xin: not shipped
CVE-2026-42934 Buffer overread in ngx_http_charset_module low 0.3.50–1.30.0 xin: not shipped
CVE-2026-40460 HTTP/3 address spoofing medium 1.25.0–1.30.0 not memory safety
CVE-2026-40701 Resolver use-after-free in OCSP medium 1.19.0–1.30.0 xin: safe Rust
CVE-2026-27654 Buffer overflow in ngx_http_dav_module medium 0.5.13–1.29.6 xin: not shipped
CVE-2026-27784 Buffer overflow in ngx_http_mp4_module medium 1.1.19–1.29.6 xin: not shipped
CVE-2026-32647 Buffer overflow in ngx_http_mp4_module medium 1.1.19–1.29.6 xin: not shipped
CVE-2026-27651 NULL pointer dereference while using CRAM-MD5 or APOP low 0.5.15–1.29.6 xin: not shipped
CVE-2026-28753 Injection in auth_http and XCLIENT medium 0.6.27–1.29.6 not memory safety
CVE-2026-28755 OCSP result bypass in stream medium 1.27.2–1.29.6 not memory safety
CVE-2026-1642 SSL upstream injection medium 1.3.0–1.29.4 not memory safety
CVE-2025-53859 Buffer overread in ngx_mail_smtp_module low 0.7.22–1.29.0 xin: not shipped
CVE-2025-23419 SSL session reuse vulnerability medium 1.11.4–1.27.3 not memory safety
CVE-2024-7347 Buffer overread in ngx_http_mp4_module low 1.5.13–1.27.0 xin: not shipped
CVE-2024-32760 Buffer overwrite in HTTP/3 medium 1.25.0–1.25.5, 1.26.0 xin: not shipped
CVE-2024-31079 Stack overflow and use-after-free in HTTP/3 medium 1.25.0–1.25.5, 1.26.0 xin: not shipped
CVE-2024-35200 NULL pointer dereference in HTTP/3 medium 1.25.0–1.25.5, 1.26.0 xin: not shipped
CVE-2024-34161 Memory disclosure in HTTP/3 medium 1.25.0–1.25.5, 1.26.0 xin: not shipped
CVE-2024-24989 NULL pointer dereference in HTTP/3 major 1.25.3 xin: not shipped
CVE-2024-24990 Use-after-free in HTTP/3 major 1.25.0–1.25.3 xin: not shipped
CVE-2022-41741 Memory corruption in ngx_http_mp4_module medium 1.1.3–1.23.1, 1.0.7–1.0.15 xin: not shipped
CVE-2022-41742 Memory disclosure in ngx_http_mp4_module medium 1.1.3–1.23.1, 1.0.7–1.0.15 xin: not shipped
CVE-2021-23017 1-byte memory overwrite in resolver medium 0.6.18–1.20.0 xin: safe Rust
CVE-2019-9511 Excessive CPU usage in HTTP/2 with small window updates medium 1.9.5–1.17.2 not memory safety
CVE-2019-9513 Excessive CPU usage in HTTP/2 with priority changes low 1.9.5–1.17.2 not memory safety
CVE-2019-9516 Excessive memory usage in HTTP/2 with zero length headers low 1.9.5–1.17.2 not memory safety
CVE-2018-16843 Excessive memory usage in HTTP/2 low 1.9.5–1.15.5 not memory safety
CVE-2018-16844 Excessive CPU usage in HTTP/2 low 1.9.5–1.15.5 not memory safety
CVE-2018-16845 Memory disclosure in ngx_http_mp4_module medium 1.1.3–1.15.5, 1.0.7–1.0.15 xin: not shipped
CVE-2017-7529 Integer overflow in range filter medium 0.5.6–1.13.2 xin: safe Rust
CVE-2016-4450 NULL pointer dereference while writing client request body medium 1.3.9–1.11.0 xin: safe Rust
CVE-2016-0742 Invalid pointer dereference in resolver medium 0.6.18–1.9.9 xin: safe Rust
CVE-2016-0746 Use-after-free during CNAME response processing in resolver medium 0.6.18–1.9.9 xin: safe Rust
CVE-2016-0747 Insufficient limits of CNAME resolution in resolver medium 0.6.18–1.9.9 not memory safety
CVE-2014-3616 SSL session reuse vulnerability medium 0.5.6–1.7.4 not memory safety
CVE-2014-3556 STARTTLS command injection medium 1.5.6–1.7.3 not memory safety
CVE-2014-0133 SPDY heap buffer overflow major 1.3.15–1.5.11 xin: not shipped
CVE-2014-0088 SPDY memory corruption major 1.5.10 xin: not shipped
CVE-2013-4547 Request line parsing vulnerability medium 0.8.41–1.5.6 not memory safety
CVE-2013-2070 Memory disclosure with specially crafted HTTP backend responses medium 1.1.4–1.2.8, 1.3.9–1.4.0 xin: safe Rust
CVE-2013-2028 Stack-based buffer overflow with specially crafted request major 1.3.9–1.4.0 xin: safe Rust
CVE-2012-2089 Buffer overflow in ngx_http_mp4_module major 1.1.3–1.1.18, 1.0.7–1.0.14 xin: not shipped
CVE-2012-1180 Memory disclosure with specially crafted backend responses major 0.1.0–1.1.16 xin: safe Rust
CVE-2011-4963 Vulnerabilities with Windows directory aliases medium nginx/Windows 0.7.52–1.3.0 not memory safety
CVE-2011-4315 Buffer overflow in resolver medium 0.6.18–1.1.7 xin: safe Rust
CVE-2010-2266 Vulnerabilities with invalid UTF-8 sequence on Windows major nginx/Windows 0.7.52–0.8.40 not memory safety
CVE-2010-2263 Vulnerabilities with Windows file default stream major nginx/Windows 0.7.52–0.8.39 not memory safety
CORE-2010-0121 Vulnerabilities with Windows 8.3 filename pseudonyms major nginx/Windows 0.7.52–0.8.32 not memory safety
CVE-2009-4487 Error log data are not sanitized none all not memory safety
CVE-2009-3555 SSL protocol renegotiation vulnerability major 0.1.0–0.8.22 not memory safety
CVE-2009-3898 Directory traversal vulnerability minor 0.1.0–0.8.16 not memory safety
CVE-2009-2629 Buffer underflow vulnerability major 0.1.0–0.8.14 xin: safe Rust
CVE-2009-3896 Null pointer dereference vulnerability major 0.1.0–0.8.13 xin: safe Rust

Stop patching a bug class you can delete.

xin runs your existing nginx.conf, beats nginx on TLS, and takes 40 advisories' worth of attack surface off the table.