Cloudanix VulnDB

CVE-2024-32650

High · 7.5

CVSS

7.5

EPSS

0.9%

Published

Apr 19, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A bug in a widely used encryption library can let a remote attacker freeze servers that rely on it by sending two specific messages in quick succession.

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

The flaw allows a blocking rustls server to enter an infinite loop in ConnectionCommon::complete_io when a client sends a close_notify alert immediately after the ClientHello message.

Why it matters to the business

Servers built on affected rustls versions can be made unresponsive by a remote attacker, disrupting availability of TLS-protected services with minimal effort.

How an attack unfolds

An attacker opens a TCP connection to a blocking rustls-based server, transmits a standard TLS ClientHello, and immediately follows it with a close_notify alert; the server's complete_io routine never exits the loop, consuming the thread indefinitely.

How to fix it

Upgrade rustls to version 0.23.5, 0.22.4, or 0.21.11 (or later) and rebuild all dependent applications. For swift-nio consumers, update to the commit 695afc5205aaa49fca092b94b479ff71c43d9d3c or newer equivalent release.

How to confirm the fix worked

Confirm the deployed rustls crate version is at or above a fixed release, then test the server with a minimal client that sends ClientHello followed immediately by close_notify and verify the connection handler terminates cleanly.

Typical attack path

  1. Establish TCP connection to target server
  2. Send TLS ClientHello record
  3. Immediately send TLS close_notify alert
  4. Observe server thread enter infinite loop and stop processing further connections

How to detect it

Search server logs and process listings for repeated or stuck TLS handshake threads that show no progress after receiving a ClientHello; correlate with inbound connections that terminate abnormally after the first two TLS records.

What your security team should do

  • Prioritize upgrade of rustls in all blocking server deployments within the next maintenance window
  • Review application code for direct or transitive use of rustls::ConnectionCommon::complete_io in blocking contexts
  • Add automated dependency scanning to catch future rustls updates
  • Monitor EPSS and exploit maturity; current values remain low but re-evaluate after any public proof-of-concept

The record

Rustls is a modern TLS library written in Rust. `rustls::ConnectionCommon::complete_io` could fall into an infinite loop based on network input. When using a blocking rustls server, if a client send a `close_notify` message immediately after `client_hello`, the server's `complete_io` will get in an infinite loop. This vulnerability is fixed in 0.23.5, 0.22.4, and 0.21.11.

Affected packages

Ecosystem Package Introduced Fixed
crates.io rustls 0.0.0-0 0.21.11
crates.io rustls 0.20 No fix
crates.io rustls 0.21.0 0.21.11
crates.io rustls 0.22.0 0.22.4
crates.io rustls 0.23.0 0.23.5
Chainguard cargo-audit 0 0.21.2-r1
Chainguard cargo-audit-doc 0 0.21.2-r1
Chainguard kdash 0 0.6.1-r0
Chainguard pgcat 0 1.2.0-r1
Chainguard samply 0 0.12.0-r2
Chainguard wasmcloud 0 1.1.0-r0
Chainguard xh 0 0.22.2-r3
Debian:12 rust-rustls 0 No fix
Debian:13 rust-rustls 0 0.21.12-1
SUSE:Linux Enterprise Module for Desktop Applications 15 SP6 gstreamer-plugins-rs 0 0.12.11-150600.3.3.1
SUSE:Linux Enterprise Module for Desktop Applications 15 SP7 gstreamer-plugins-rs 0 0.12.11-150600.3.3.1
SUSE:Package Hub 15 SP5 git-cliff 0 2.2.2-bp155.2.3.1
Ubuntu:24.04:LTS rust-rustls 0 No fix
Ubuntu:24.10 rust-rustls 0 No fix
Ubuntu:25.04 rust-rustls 0 No fix
Ubuntu:25.10 rust-rustls 0 No fix
Wolfi cargo-audit 0 0.21.2-r1
Wolfi cargo-audit-doc 0 0.21.2-r1
Wolfi kdash 0 0.6.1-r0
Wolfi pgcat 0 1.2.0-r1
Wolfi samply 0 0.12.0-r2
Wolfi wasmcloud 0 1.1.0-r0
Wolfi xh 0 0.22.2-r3
cargo rustls 0.20 No fix
cargo rustls 0.21.0 0.21.11
cargo rustls 0.22.0 0.22.4
cargo rustls 0.23.0 0.23.5
openSUSE:Leap 15.5 git-cliff 0 2.2.2-bp155.2.3.1
openSUSE:Leap 15.6 gstreamer-plugins-rs 0 0.12.11-150600.3.3.1
openSUSE:Tumbleweed gitoxide 0 0.38.0-1.1
openSUSE:Tumbleweed kubetui 0 1.5.1-1.1
openSUSE:Tumbleweed sccache 0 0.8.0~3-1.1
openSUSE:Tumbleweed shadowsocks-rust 0 1.18.3-1.1
openSUSE:Tumbleweed teleport 0 15.2.4-1.1
openSUSE:Tumbleweed tlrc 0 1.9.2+0-1.1
openSUSE:Tumbleweed topgrade 0 14.0.1-2.1

Related vulnerabilities