Cloudanix VulnDB

CVE-2026-31812

Medium · 5.3

CVSS

5.3

EPSS

0.9%

Published

Mar 10, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

An attacker can crash affected services by sending a specially malformed network packet, potentially causing outages until the software is updated.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Denial Of Service
Component
Library
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Applications built with vulnerable Quinn versions before 0.11.14 can panic while parsing attacker-controlled QUIC transport parameters. The vulnerable quinn-proto parsing path decodes QUIC variable-length integers using unwrap(); when a crafted QUIC Initial packet contains a truncated or malformed varint inside quic_transport_parameters, parsing returns Err(UnexpectedEnd) and the process can terminate. The flaw is remotely reachable over the network, requires no authentication, no user interaction, and can be triggered with very low attack complexity using a single malformed QUIC packet. The primary impact is denial of service; confidentiality and integrity are not directly affected.

Why it matters to the business

Publicly reachable services that use Quinn for QUIC transport may be crashed by unauthenticated network traffic, causing outages, failed connections, degraded availability, and possible cascading failures in systems that depend on those services. Although the current EPSS is low and there is no known KEV listing or ransomware association, the bug is simple to trigger and affects availability directly, so internet-exposed QUIC services should be upgraded promptly. Organizations with products, agents, gateways, APIs, game servers, messaging systems, or internal service meshes using Quinn should treat this as an operational resilience issue even if active exploitation has not been reported.

How an attack unfolds

An attacker identifies a UDP service that speaks QUIC and is implemented with a vulnerable Quinn release. The attacker sends a crafted QUIC Initial packet that includes malformed quic_transport_parameters, specifically a truncated QUIC varint encoding. When the target application passes the packet into Quinn's protocol parser, quinn-proto attempts to decode attacker-controlled data and calls unwrap() on a failed result. The failed parse produces an UnexpectedEnd error, which is converted into a Rust panic. Depending on how the application is built and supervised, the panic may terminate a worker, crash the process, restart the service, drop active sessions, or make the service repeatedly unavailable if packets are resent. No credentials, established QUIC connection, prior trust relationship, or application-layer request is required.

How to fix it

Upgrade Quinn to version 0.11.14 or later wherever it is used directly or transitively. Because the provided affected product inventory is not enumerated, audit Rust dependencies for quinn and quinn-proto across applications, libraries, containers, and build artifacts. Use cargo tooling such as cargo tree, cargo update, cargo audit, and dependency lockfile review to identify vulnerable versions. If immediate upgrade is not possible, reduce exposure by limiting UDP/QUIC access to trusted networks, disabling QUIC listeners where operationally acceptable, applying rate limits for unauthenticated UDP traffic, and placing QUIC services behind network controls capable of filtering malformed or abusive UDP traffic. Supervisors can reduce downtime by restarting crashed services, but restarts do not remove the vulnerability and should only be considered a temporary resilience control.

How to confirm the fix worked

Confirm dependency resolution shows Quinn version 0.11.14 or later and no vulnerable quinn-proto version is present in Cargo.lock or built artifacts. Rebuild and redeploy all affected applications after updating dependencies, rather than only changing source manifests. Validate runtime exposure by inventorying UDP listeners and confirming which services speak QUIC. In staging or a controlled test environment, send malformed QUIC Initial traffic that previously caused a panic and verify the service rejects or ignores it without crashing. Review service health, crash counters, container restart counts, and logs after validation testing. For production, verify that externally reachable UDP/QUIC endpoints are either upgraded, filtered, or intentionally disabled.

Typical attack path

  1. Discover or enumerate services exposing QUIC over UDP, commonly on ports such as 443/UDP or other application-specific UDP ports.
  2. Confirm the service responds like a QUIC endpoint or is known to use a Quinn-based implementation.
  3. Craft a QUIC Initial packet containing malformed transport parameters with a truncated variable-length integer encoding.
  4. Send the malformed packet to the exposed UDP listener without authenticating or completing a connection.
  5. Trigger the vulnerable quinn-proto parsing path, causing Err(UnexpectedEnd) followed by a panic due to unwrap().
  6. Repeat traffic as needed to keep the service unstable or unavailable if a supervisor automatically restarts the process.

How to detect it

Look for evidence of unexpected crashes or restarts in applications using Quinn, especially immediately after inbound UDP traffic to QUIC listeners. Primary log sources include application logs, Rust panic output, systemd journals, container runtime logs, Kubernetes pod events, process supervisor logs, crash dumps, and network telemetry for UDP services. Search for Rust panic messages mentioning unwrap(), UnexpectedEnd, quinn-proto, QUIC transport parameters, or malformed Initial packets. Correlate crash timestamps with inbound UDP bursts, malformed QUIC Initial packets, repeated traffic from the same source IPs, or elevated UDP error/drop metrics. Packet captures may show QUIC Initial packets followed by no successful connection establishment and service restart events. Since no public threat actor exploitation is identified and no stable payload string is guaranteed, detection should focus on behavioral indicators: unauthenticated UDP traffic preceding application panics and repeated service restarts.

  • called `Result::unwrap()` on an `Err` value: UnexpectedEnd
  • Err(UnexpectedEnd)
  • UnexpectedEnd
  • quinn-proto
  • quic_transport_parameters
  • transport parameters
  • QUIC Initial
  • malformed QUIC
  • thread '.*' panicked
  • panicked at
  • RUST_BACKTRACE=1
  • Backtrace
  • CrashLoopBackOff
  • signal: 6
  • SIGABRT
  • core dumped

What your security team should do

  • Prioritize internet-facing UDP/QUIC services and products known or suspected to use Quinn; upgrade them to Quinn 0.11.14 or later first.
  • Search source repositories, SBOMs, lockfiles, container images, and vendor components for quinn and quinn-proto versions earlier than 0.11.14.
  • Add monitoring for Rust panic messages and abnormal restarts in QUIC-speaking services, especially messages containing UnexpectedEnd or quinn-proto.
  • Apply network-layer rate limiting and exposure reduction for unauthenticated UDP/QUIC traffic until all affected services are patched.
  • Coordinate with application owners to ensure dependency updates are actually compiled, tested, and deployed, not only committed to manifests.
  • Because the issue is not currently in KEV and EPSS remains low, align remediation with normal urgent patch workflows, but do not defer internet-facing systems because exploitation requires only one packet.
  • Update incident response runbooks for unexplained QUIC service crashes to include malformed Initial packet abuse as a possible cause.

The record

Quinn is a pure-Rust, async-compatible implementation of the IETF QUIC transport protocol. Prior to 0.11.14, a remote, unauthenticated attacker can trigger a denial of service in applications using vulnerable quinn versions by sending a crafted QUIC Initial packet containing malformed quic_transport_parameters. In quinn-proto parsing logic, attacker-controlled varints are decoded with unwrap(), so truncated encodings cause Err(UnexpectedEnd) and panic. This is reachable over the network with a single packet and no prior trust or authentication. This vulnerability is fixed in 0.11.14.

Affected packages

Ecosystem Package Introduced Fixed
crates.io quinn-proto 0 0.11.14
crates.io quinn-proto 0.5.0 0.11.14
Chainguard asciinema 0 3.2.0-r1
Chainguard berg 0 0.5.5-r2
Chainguard cargo-audit 0 0.22.1-r3
Chainguard fnm 0 1.39.0-r1
Chainguard komodo-cli 0 1.19.5-r5
Chainguard komodo-core 0 1.19.5-r5
Chainguard komodo-periphery 0 1.19.5-r5
Chainguard lychee 0 0.23.0-r2
Chainguard nushell 0 0.111.0-r4
Chainguard nushell-plugins 0 0.111.0-r4
Chainguard parseable 0 2.5.14-r2
Chainguard pixi 0 0.65.0-r2
Chainguard py3.10-hf-xet 0 1.4.0-r1
Chainguard py3.11-hf-xet 0 1.4.0-r1
Chainguard py3.12-hf-xet 0 1.4.0-r1
Chainguard py3.13-hf-xet 0 1.4.0-r1
Chainguard qdrant 0 1.17.0-r2
Chainguard samply 0 0.13.1-r10
Chainguard sccache 0 0.14.0-r2
Chainguard uv 0 0.10.9-r1
Chainguard wadm 0 0.21.1-r5
Chainguard wasmcloud 0 1.9.2-r2
Chainguard xh 0 0.25.3-r4
Chainguard zed 0 0.226.5-r1
Chainguard zizmor 0 1.23.1-r2
Chainguard zola 0 0.22.1-r3
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS rust 0 1.94.0-150400.24.71.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS rust 0 1.94.0-150400.24.71.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS rust 0 1.94.0-150500.27.65.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS rust 0 1.94.0-150500.27.65.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 rust 0 1.94.0-150500.27.65.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 rust1.92 0 1.92.0-150300.7.6.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 rust1.93 0 1.93.0-150300.7.6.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise Server 15 SP4-LTSS rust 0 1.94.0-150400.24.71.1
SUSE:Linux Enterprise Server 15 SP4-LTSS rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise Server 15 SP5-LTSS rust 0 1.94.0-150500.27.65.1
SUSE:Linux Enterprise Server 15 SP5-LTSS rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise Server 15 SP6-LTSS rust 0 1.94.0-150500.27.65.1
SUSE:Linux Enterprise Server 15 SP6-LTSS rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP4 rust 0 1.94.0-150400.24.71.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP4 rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 rust 0 1.94.0-150500.27.65.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 rust1.94 0 1.94.0-150300.7.6.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 rust 0 1.94.0-150500.27.65.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 rust1.94 0 1.94.0-150300.7.6.1
Wolfi berg 0 0.5.5-r2
Wolfi cargo-audit 0 0.22.1-r3
Wolfi lychee 0 0.23.0-r2
Wolfi nushell 0 0.111.0-r4
Wolfi nushell-plugins 0 0.111.0-r4
Wolfi parseable 0 2.5.14-r2
Wolfi pixi 0 0.65.0-r2
Wolfi py3.10-hf-xet 0 1.4.0-r1
Wolfi py3.11-hf-xet 0 1.4.0-r1
Wolfi py3.12-hf-xet 0 1.4.0-r1
Wolfi py3.13-hf-xet 0 1.4.0-r1
Wolfi qdrant 0 1.17.0-r2
Wolfi samply 0 0.13.1-r10
Wolfi sccache 0 0.14.0-r2
Wolfi uv 0 0.10.9-r1
Wolfi wadm 0 0.21.1-r5
Wolfi wasmcloud 0 1.9.2-r2
Wolfi xh 0 0.25.3-r4
Wolfi zed 0 0.226.5-r1
Wolfi zizmor 0 1.23.1-r2
Wolfi zola 0 0.22.1-r3
openSUSE:Leap 15.6 rust 0 1.94.0-150500.27.65.1
openSUSE:Leap 15.6 rust1.92 0 1.92.0-150300.7.6.1
openSUSE:Leap 15.6 rust1.93 0 1.93.0-150300.7.6.1
openSUSE:Leap 15.6 rust1.94 0 1.94.0-150300.7.6.1
openSUSE:Leap 16.0 rust1.94 0 1.94.1-160000.1.1
openSUSE:Tumbleweed python-uv 0 0.10.11-1.1
openSUSE:Tumbleweed rust1.92 0 1.92.0-2.1
openSUSE:Tumbleweed rust1.93 0 1.93.0-3.1
openSUSE:Tumbleweed rust1.94 0 1.94.0-2.1

Related vulnerabilities