CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-10740

CVE-2026-10740: Denial of Service in s2n-quic CryptoStream Reassembly

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 14, 2026·7 min read·35 visits

Executive Summary (TL;DR)

A zero-authentication heap allocation vulnerability in s2n-quic allows remote attackers to exhaust server memory and crash the service using a single crafted Initial packet with an excessive CRYPTO offset.

An unauthenticated Denial of Service vulnerability exists in the s2n-quic library's CryptoStream reassembler due to a lack of buffer limits on out-of-order cryptographic frames. An attacker can transmit a crafted CRYPTO frame with an extremely high offset and nominal payload, forcing the receiver to execute unbounded memory allocations and causing service crashes.

Vulnerability Overview

The Amazon Web Services (AWS) implementation of the IETF QUIC protocol, known as s2n-quic, is a high-performance network transport library written in Rust. In implementations of the QUIC protocol, cryptographic handshakes are conducted over dedicated streams using the CRYPTO frame type. The transport library must handle out-of-order packets due to the unreliable nature of UDP transport, reassembling fragmented streams before forwarding them to the cryptographic library.\n\nPrior to version 1.82.0, the CryptoStream space in s2n-quic did not restrict the buffer window size for out-of-order cryptographic handshake frames. Unauthenticated remote clients could leverage this design flaw to allocate significant blocks of system memory on the server. The vulnerability is classified under CWE-770 (Allocation of Resources Without Limits or Throttling) and CVE-2026-10740.\n\nThis security weakness exposes any service utilizing affected versions of s2n-quic to immediate Denial of Service (DoS) attacks. Because the memory allocation occurs before the connection establishes identity or completes cryptographic authentication, any network-adjacent attacker can trigger the issue. The vulnerability does not allow remote code execution or information disclosure but successfully impacts host availability.

Root Cause Analysis

The underlying vulnerability exists in the state management logic of out-of-order frames within the CryptoStream receive path. When a QUIC endpoint receives an out-of-order CRYPTO frame, it must store the payload until the missing bytes arrive to preserve the sequential stream required by TLS. To keep track of these data blocks, the library maintains a Reassembler structure that maps offsets to incoming data.\n\nThe critical error in vulnerable versions of s2n-quic is the absence of a maximum offset boundary on these incoming frames. When a frame contains an extremely high value in its offset field alongside a small payload, the Reassembler attempts to adjust its tracking structures to encompass the entire gap. This process results in an immediate allocation of memory to store internal index pointers, blocks, or tracking segments.\n\nBecause no limit was enforced on the maximum distance between the current stream read cursor and the maximum write offset, the allocation size was effectively unbounded. An attacker can set the offset field to any arbitrary 62-bit integer, which is the maximum size allowed by the QUIC variable-length integer encoding. The server attempts to allocate memory proportional to this offset distance, causing rapid resource exhaustion.

Code-Level Analysis

To understand the flaw and its remediation, it is necessary to inspect the vulnerable code path in s2n-quic-transport/src/space/crypto_stream.rs. The pre-patch code was marked with explicit TODO comments admitting the lack of appropriate constraints.\n\nrust\n// Pre-patch code logic in s2n-quic-transport/src/space/crypto_stream.rs\n// Note the explicit TODO comment acknowledging the vulnerability\n\n//= https://www.rfc-editor.org/rfc/rfc9000#section-7.5\n//= type=TODO\n//= tracking-issue=356\n//= feature=Crypto buffer limits\n//# Endpoints MAY choose to\n//# allow more data to be buffered during the handshake.\n\n//TODO we need to limit the buffer size here\nself.rx.write_at(frame.offset, frame.data)\n\n\nThe patch in commit 6c90fa94bca4b65d1cfb41eb47fcdcd60ef61c5a remediates the issue by introducing a strict limit of 128 KiB (MAX_CRYPTO_BUFFER_SIZE) on out-of-order cryptographic frames. This limit satisfies RFC 9000 §7.5 requirements while defending against memory exhaustion. The corrected implementation enforces bounds using safe arithmetic operations.\n\nrust\n// Patched logic implementing buffering constraints\nconst MAX_CRYPTO_BUFFER_SIZE: u64 = 128 * 1024; // 128 KiB limit\n\n// Enforce the buffer size limit required by RFC 9000 §7.5.\n// This bounds the maximum distance between the read cursor and the farthest\n// byte a peer can write, capping total Reassembler memory for the crypto stream.\nlet end_offset = frame\n .offset\n .checked_add_usize(frame.data.len())\n .ok_or(transport::Error::CRYPTO_BUFFER_EXCEEDED)?;\n\nlet buffered = end_offset.as_u64().saturating_sub(self.rx.consumed_len());\nif buffered > MAX_CRYPTO_BUFFER_SIZE {\n //= https://www.rfc-editor.org/rfc/rfc9000#section-7.5\n //# If an endpoint does not expand its buffer, it MUST close\n //# the connection with a CRYPTO_BUFFER_EXCEEDED error code.\n return Err(transport::Error::CRYPTO_BUFFER_EXCEEDED);\n}\n\nself.rx.write_at(frame.offset, frame.data).map_err(|_| {\n // ...\n\n\nThe check utilizes checked_add_usize to calculate the final offset of the incoming frame safely. It then uses saturating_sub to calculate the distance from the currently consumed read cursor. If this distance exceeds MAX_CRYPTO_BUFFER_SIZE, the transaction aborts, returning a CRYPTO_BUFFER_EXCEEDED protocol error, preventing any further memory allocation.

Exploitation Methodology & Scenarios

Exploitation of CVE-2026-10740 relies on crafting a single QUIC Initial packet designed to bypass normal handshaking procedures. Because the vulnerable path is executed upon packet receipt, the attacker does not need to complete the cryptographic handshake or establish a valid TLS session. The objective is to force the server's transport thread to process an elevated write instruction immediately.\n\nAn attacker constructs a UDP packet payload containing a standard QUIC header for an Initial packet. Inside this packet, the attacker embeds a CRYPTO frame. The header parameters of this frame are set such that the offset is a high integer value, such as 0x3FFFFFFFFFFFFFF, while the actual payload consists of a single static byte. The overall size of the UDP packet remains well within standard network boundaries (typically under 1200 bytes).\n\nUpon transmitting this packet to the target's open port, the server processes the incoming UDP stream. When parsing the QUIC frames, the CryptoStream handler reads the offset parameter. It then initiates the memory allocation sequence for the Reassembler to host the sparse array. This triggers immediate heap exhaustion on the handling thread, culminating in either a panic or termination of the service process.

Impact & Consequences Assessment

The successful exploitation of CVE-2026-10740 leads to a localized Denial of Service. When the target process experiences memory exhaustion, the underlying operating system's Out-of-Memory (OOM) killer may terminate the entire server application. If multiple threads run within the same memory space, a crash of the transport thread results in a full system service disruption.\n\nThe CVSS v3.1 vector is rated at 5.3 (Medium), showing a vector string of CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L. This score classifies the availability impact as Low because it primarily affects the specific target service process and does not compromise operating system kernel stability directly. However, the operational impact in enterprise environments is critical, as any exposed public-facing QUIC port can be systematically taken down with minimal attacker bandwidth.\n\nNo public Proof-of-Concept (PoC) code is currently known to be available in the public domain, and there is no evidence of active exploitation in the wild. Despite the absence of threat actor activity, the simplicity of the attack structure necessitates rapid remediation across all systems running the affected transport library.

Remediation & Hardening

The most effective remediation is upgrading the s2n-quic dependency to version 1.82.0 or higher. Since this library is compiled statically into Rust binaries, developers must rebuild and redeploy all dependent services. Upgrading the version in the project's dependency manifest ensures that the compiler integrates the defensive offset validation checks.\n\ntoml\n# Cargo.toml configuration update\ns2n-quic = "1.82.0"\n\n\nFor instances where immediate compilation and redeployment are not feasible, network-level mitigations can reduce the exposure risk. Network engineers can implement rate limits on UDP traffic directed at the QUIC ports to prevent brute-force memory allocation attempts. Additionally, analyzing incoming connection patterns for elevated levels of unauthenticated Initial packets can help identify active probes.\n\nDevelopers should audit their full dependency graph to confirm that transitive dependencies do not pull in older versions of the s2n-quic crate. Running cargo tree -p s2n-quic inside the project workspace will display all active paths and version strings. Ensuring that all references align with version 1.82.0 or later is critical to completely closing the vulnerability window.

Fix Analysis (3)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
EPSS Probability
0.29%
Top 78% most exploited

Affected Systems

s2n-quic

Affected Versions Detail

Product
Affected Versions
Fixed Version
s2n-quic
AWS
< 1.82.01.82.0
AttributeDetail
CWE IDCWE-770
Attack VectorNetwork
CVSS Score5.3 (Medium)
EPSS Score0.00291
ImpactAvailability (Denial of Service)
Exploit StatusNone
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
CWE-770
Allocation of Resources Without Limits or Throttling

The software allocates memory or other resources on behalf of an untrusted actor without placing structural bounds on the maximum size or quantity that can be allocated.

Vulnerability Timeline

AWS patches early connection closure packet loops (Commit b493d2a7)
2026-06-05
AWS merges the crypto stream buffer limits fix to master (Commit 6c90fa94)
2026-06-09
AWS releases s2n-quic version 1.82.0 (Commit 4438384b) and CVE disclosed
2026-06-10

References & Sources

  • [1]NVD CVE Record
  • [2]CVE.org Record
  • [3]GitHub Security Advisory
  • [4]AWS Security Advisory

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 minutes ago•CVE-2026-109619
9.2

CVE-2026-109619: Remote Code Execution in PHP Core via Stale Global State Memory Corruption (PHP2Shell)

CVE-2026-109619 (PHP2Shell) is a critical Use-After-Free vulnerability in the core PHP engine caused by improper global state cleanup during out-of-memory exception handling across persistent worker requests.

Alon Barad
Alon Barad
1 views•6 min read
•5 minutes ago•CVE-2026-113721
4.5

CVE-2026-113721: Unsafe Link Resolution in virtualenv File Generation

In Python virtualenv prior to version 21.14.9, activation script generators and configuration writers use Path.exists() before writing files. Because Path.exists() resolves symbolic links, it returns False for dangling symlinks. Consequently, virtualenv skips unlinking pre-planted symbolic links or hard links, writing data directly to target locations outside the intended virtual environment directory.

Amit Schendel
Amit Schendel
1 views•5 min read
•9 days ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
31 views•5 min read
•9 days ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
19 views•6 min read
•10 days ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
18 views•5 min read
•10 days ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
24 views•6 min read