PHP2Shell: Read our blog on the critical RCE vulnerabilities affecting 70% of the Internet

CVE-2026-31812: 
Rust vulnerability analysis and mitigation

Overview

CVE-2026-31812 is a remote denial-of-service vulnerability in Quinn, a pure-Rust, async-compatible implementation of the IETF QUIC transport protocol. A remote, unauthenticated attacker can crash applications by sending a single crafted QUIC Initial packet containing malformed quic_transport_parameters. All versions of the quinn-proto crate prior to 0.11.14 are affected; the vulnerability was disclosed on March 9, 2026, and published to the NVD on March 10, 2026. It carries a CVSS v4.0 base score of 8.7 (High) (Github Advisory, Red Hat Bugzilla).

Technical details

The root cause is an uncaught exception (CWE-248) in the QUIC transport parameter parsing logic within quinn-proto. Specifically, attacker-controlled variable-length integers (varints) are decoded using a fallible decode() call immediately followed by .unwrap() at quinn-proto/src/transport_parameters.rs:473. When a truncated or malformed varint encoding is supplied, decode() returns Err(UnexpectedEnd), and the subsequent unwrap() causes a Rust thread panic. Because QUIC Initial packets are processed before any authentication or session establishment, this code path is reachable with a single UDP packet from any network-accessible attacker. A proof-of-concept using the aioquic Python library was included in the original advisory and reproduces against the upstream Quinn server example (Github Advisory, Quinn Security Advisory).

Impact

Successful exploitation causes an immediate process-level panic and crash of any application embedding the vulnerable quinn-proto library, resulting in a complete loss of availability for the affected service. There is no impact on confidentiality or integrity — the vulnerability is purely a denial-of-service condition. The severity is amplified by the fact that a single UDP packet is sufficient to crash the target, enabling persistent disruption with minimal attacker resources; downstream services depending on the crashed application may also be affected (Github Advisory, Red Hat Bugzilla).

Exploitability

A proof-of-concept exploit script (attack.py) using the aioquic Python library was included in the original security advisory and confirmed to reproduce the panic against the upstream Quinn server example, making exploitation straightforward. As of the time of reporting, there is no evidence of in-the-wild exploitation or threat actor attribution. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. The EPSS score is approximately 0.24%, indicating a low but non-negligible probability of exploitation in the near term (Github Advisory, Feedly).

Exploitation steps

  1. Reconnaissance: Identify internet-facing services running applications that use the quinn or quinn-proto Rust crate (versions < 0.11.14) by scanning for open UDP ports commonly used for QUIC (e.g., UDP/443, UDP/4433).
  2. Set up attack environment: Install the aioquic Python library (pip install aioquic) to craft and send malformed QUIC packets.
  3. Craft malicious QUIC Initial packet: Construct a QUIC Initial packet where the quic_transport_parameters extension contains a truncated or malformed varint encoding — specifically, a varint whose byte sequence is cut short, causing decode() to return Err(UnexpectedEnd).
  4. Send the packet: Transmit the single crafted UDP packet to the target's QUIC listener. No prior connection, authentication, or handshake is required.
  5. Observe crash: The target's quinn-proto parsing logic calls .unwrap() on the failed decode, triggering a Rust thread panic in the tokio-rt-worker thread, crashing the application process and causing denial of service (Quinn Security Advisory).

Indicators of compromise

  • Logs: Rust panic messages in application logs containing panicked at quinn-proto/src/transport_parameters.rs:473 and called Result::unwrap() on an Err value: UnexpectedEnd; sudden process termination entries from the application or service manager (e.g., systemd).
  • Network: Unexpected or repeated inbound UDP packets to the QUIC listener port from external or unknown IP addresses, particularly single-packet sessions that do not complete a QUIC handshake.
  • Process: Abnormal termination of the application process (non-zero exit code, core dump generation) correlated with inbound UDP traffic; repeated process restarts by a supervisor or container orchestrator (Quinn Security Advisory).

Mitigation and workarounds

The fix is available in quinn-proto version 0.11.14, which replaces the unsafe .unwrap() calls with proper error handling in the transport parameter parsing code. All applications using quinn or quinn-proto versions prior to 0.11.14 should upgrade immediately by updating their Cargo.toml dependency and rebuilding. As a temporary network-level workaround, operators can restrict access to the QUIC UDP listener to trusted IP ranges to reduce exposure while patching is underway. IBM has also released an advisory for affected Instana OnPrem products (Github Advisory, IBM Advisory).

Community reactions

The vulnerability was originally discovered by researcher @revofusion and submitted to the Ethereum Foundation bug bounty program, reflecting the library's use in blockchain and Web3 infrastructure. Red Hat tracked the issue via Bugzilla with high priority, and multiple Linux distributions including Fedora and openSUSE issued security advisories and package updates. The advisory received broad automated coverage across CVE tracking platforms and Linux security news aggregators shortly after disclosure (Quinn Security Advisory, Red Hat Bugzilla).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

rust-quinn-proto

Affected

sid

rust-quinn-proto: 0.11.14-1

Fixed

trixie

rust-quinn-proto

Affected

Ubuntu

Unknown

devel

rust-quinn-proto

Not Affected

noble

rust-quinn-proto

Unknown

noble (esm-apps)

rust-quinn-proto

Unknown

resolute

rust-quinn-proto

Unknown

resolute (esm-apps)

rust-quinn-proto

Unknown

RHEL / CentOS

Fixed

OpenShift

el9:openshift-logging/vector-rhel9-0:v6.4.5

Fixed

RHEL 8

Not Affected

RHEL 9

firefox.src

Affected

RHEL 10

clevis-pin-trustee.src

Affected

Source: This report was generated using AI

Related Rust vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-57g2-8cj3-3v8gHIGH7.5
  • Rust logoRust
  • grib
NoYesOct 22, 2026
GHSA-xw69-xv93-5fjvMEDIUM6.5
  • Rust logoRust
  • gix-fs
NoYesOct 22, 2026
GHSA-hqmx-mx83-h2xcMEDIUMN/A
  • Rust logoRust
  • kule
NoYesOct 22, 2026
GHSA-57xf-95mj-j6j6MEDIUMN/A
  • Rust logoRust
  • kule
NoYesOct 22, 2026
GHSA-4v43-5ff7-45w4MEDIUMN/A
  • Rust logoRust
  • kule
NoYesOct 22, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management