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·3 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

•about 1 hour ago•CVE-2026-53653
8.7

CVE-2026-53653: Unauthenticated Denial of Service via Unbounded Image Derivative Dimensions in Grav CMS

Grav CMS prior to version 1.7.53 and 2.0.0-rc.8 is vulnerable to an unauthenticated remote denial of service (DoS) vulnerability. By supplying crafted query parameters with extremely large dimensions to image assets, remote unauthenticated attackers can force the server to allocate massive amounts of system memory, leading to kernel Out-Of-Memory (OOM) termination of web worker processes.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 2 hours ago•CVE-2026-53657
8.2

CVE-2026-53657: Privilege Escalation via Overly Permissive Unix Domain Socket in Lima Guest Agent

CVE-2026-53657 is a local privilege escalation vulnerability in Lima (lima-vm/lima) affecting versions prior to 2.1.3 when configured with the QEMU driver. The guest agent daemon, running as root, creates its communication socket `/run/lima-guestagent.sock` with world-writable permissions (0777). This allows unprivileged local users to command the agent to establish arbitrary tunnels, including to privileged local UNIX sockets (like D-Bus). Because the target daemon authenticates the incoming connection using the credentials of the root-owned guest agent (via SO_PEERCRED), unprivileged users can perform root operations, resulting in complete guest VM compromise.

Amit Schendel
Amit Schendel
3 views•9 min read
•about 4 hours ago•CVE-2026-55153
7.1

CVE-2026-55153: JNDI Injection and Deserialization Gadget Abuse in mchange-commons-java

A JNDI Injection and Deserialization Gadget vulnerability exists in mchange-commons-java prior to version 0.6.0. The com.mchange.v2.naming.JavaBeanObjectFactory component permits arbitrary class instantiation and setter invocation, allowing attackers to perform Server-Side Request Forgery (SSRF) and remote class loading.

Alon Barad
Alon Barad
6 views•5 min read
•about 5 hours ago•GHSA-8RW6-P7M8-63JP
6.5

GHSA-8RW6-P7M8-63JP: Array Element-Level SELECT Permissions Leak in SurrealDB

SurrealDB versions supporting element-level SELECT permissions on arrays are vulnerable to a logical authorization bypass. Due to an index-shifting error during array filtration, restricted elements can skip permission checks and leak to unauthorized record users.

Alon Barad
Alon Barad
5 views•6 min read
•1 day ago•CVE-2026-12243
7.5

CVE-2026-12243: Incomplete Path Traversal Validation and Percent-Encoding Bypass in NLTK

CVE-2026-12243 is a path traversal vulnerability in the Natural Language Toolkit (NLTK) version 3.9.4. The flaw exists because the input validation routine fails to account for percent-encoded directory traversal sequences like '..%2f' before passing them to urllib.request.url2pathname(), which decodes them into active traversal sequences.

Amit Schendel
Amit Schendel
5 views•8 min read
•1 day ago•CVE-2026-73654
8.5

CVE-2026-73654: Prototype Pollution in Trigger.dev leading to Cascading Denial of Service

CVE-2026-73654 is a high-severity prototype pollution vulnerability in Trigger.dev. The flaw occurs during the handling of run-metadata updates through the PUT /api/v1/runs/:runId/metadata endpoint. Because user-supplied keys are parsed directly by the @jsonhero/path library without sanitization, an authenticated attacker with low privileges can pollute the global Object.prototype. This causes database queries via Prisma ORM to fail validation and induces unhandled exceptions in the Prometheus metrics client, resulting in a process-wide denial of service.

Alon Barad
Alon Barad
11 views•6 min read