Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2024-11738

CVE-2024-11738: Rustls_project Rustls DOS Vulnerability

CVE-2024-11738 is a denial of service vulnerability in Rustls_project Rustls that triggers panic via fragmented TLS ClientHello messages. This article covers the technical details, affected versions, impact, and mitigation.

Published:

CVE-2024-11738 Overview

CVE-2024-11738 is a denial of service vulnerability in Rustls version 0.23.13, a modern TLS library written in Rust. The flaw causes a runtime panic when the library processes a fragmented TLS ClientHello message. A remote attacker can trigger this condition without authentication by sending a crafted handshake message to any service that uses the affected Rustls API. The vulnerability is tracked under [CWE-248] (Uncaught Exception) and is documented in RustSec Advisory RUSTSEC-2024-0399.

Critical Impact

A single fragmented ClientHello message can crash any TLS server or client built on the affected Rustls version, disrupting availability of dependent services.

Affected Products

  • Rustls 0.23.13
  • Applications and services linking the affected Rustls crate and its related APIs
  • Downstream Rust-based TLS servers and clients depending on the vulnerable version

Discovery Timeline

  • 2024-12-06 - CVE-2024-11738 published to NVD
  • 2025-07-29 - Last updated in NVD database

Technical Details for CVE-2024-11738

Vulnerability Analysis

The vulnerability lives in the Rustls handshake processing path that reassembles the initial TLS ClientHello message. TLS allows handshake messages to span multiple record-layer fragments. When Rustls receives a ClientHello split across fragments, the reassembly logic reaches a state that the code did not anticipate and triggers a panic. A Rust panic in this context unwinds the thread handling the connection and, in many server designs, terminates the process or the listener task. The result is loss of TLS service availability for all connected and pending clients. Because the vulnerability is reached during the unauthenticated handshake phase, no credentials, prior session, or user interaction are required to exploit it.

Root Cause

The defect is an uncaught exception condition [CWE-248] in the handshake fragment handling logic. The implementation does not gracefully reject or buffer the malformed sequence of fragmented ClientHello records, and instead invokes a code path that panics. Additional technical context is available in GitHub Rustls Issue #2227 and GitHub Security Advisory GHSA-qg5g-gv98-5ffh.

Attack Vector

The attack is network-based and pre-authentication. An attacker sends a TLS ClientHello that is intentionally fragmented across multiple TLS records to any endpoint that uses Rustls 0.23.13 for TLS termination. Processing the malformed sequence triggers the panic, which can crash the worker thread, listener, or entire process depending on how the host application handles Rust panics. Repeated attempts allow sustained denial of service against the target.

No verified public exploit code is available for this vulnerability. See the RustSec advisory for technical details on the affected handshake path.

Detection Methods for CVE-2024-11738

Indicators of Compromise

  • Unexpected process or thread termination logs from Rust-based TLS services with panic messages referencing handshake or ClientHello processing.
  • TLS listeners restarting repeatedly under load without legitimate traffic spikes.
  • Inbound TLS handshakes containing unusually fragmented ClientHello records from a small set of source addresses.

Detection Strategies

  • Inventory all Rust services and dependencies to identify use of Rustls 0.23.13 via cargo tree or software bill of materials analysis.
  • Monitor application logs for Rust panic backtraces originating in the Rustls handshake code path.
  • Inspect TLS traffic at the network layer for ClientHello messages split across multiple records, which is uncommon in benign client traffic.

Monitoring Recommendations

  • Alert on abnormal restart rates or crash loops in services that terminate TLS using Rustls.
  • Capture and review TLS handshake telemetry from load balancers and reverse proxies that front Rust-based services.
  • Correlate handshake failures with source IP reputation feeds to identify deliberate probing.

How to Mitigate CVE-2024-11738

Immediate Actions Required

  • Upgrade Rustls to a fixed release above 0.23.13 and rebuild all affected applications.
  • Audit dependency graphs with cargo audit to surface every binary that pulls in the vulnerable crate version transitively.
  • Restart services after upgrade to ensure the patched library is loaded into memory.

Patch Information

The Rustls maintainers addressed the fragmented ClientHello handling defect in a release subsequent to 0.23.13. Refer to the Red Hat advisory for CVE-2024-11738, the Red Hat Bug Report #2328732, and RUSTSEC-2024-0399 for the exact fixed version and backport guidance for distribution packages.

Workarounds

  • Place a hardened TLS-terminating proxy in front of vulnerable services so handshake parsing happens in a non-Rustls implementation.
  • Rate-limit and source-filter inbound TLS connections at the network edge to reduce exposure until patching completes.
  • Configure process supervisors to automatically restart crashed TLS workers to limit downtime, while treating this as a stopgap rather than a fix.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.