---
id: "CVE-2026-123612"
page: "https://infrastack.ai/live/CVE-2026-123612"
kind: "vulnerability"
aliases: ["CVE-2026-123612"]
title: "rustls: early application data sent to wrong server when ECH rejected"
severity: "medium"
cvss: 4.6
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["ech", "package", "rust", "rustls", "tls"]
not_affected_if: ["no-ech", "other-rustls-version"]
published_at: "2026-11-08T02:16:56+00:00"
first_seen_at: "2026-11-08T02:21:14+00:00"
updated_at: "2026-11-08T02:25:35+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-123612", "first_seen_at": "2026-11-08T02:21:14+00:00"}]
exploit_sources: []
---

# rustls: early application data sent to wrong server when ECH rejected

Link for people: https://infrastack.ai/live/CVE-2026-123612 (this .md is for agents)

rustls 0.23.44 and 0.23.45 send application data queued before the handshake completes to the public_name server when Encrypted Client Hello is rejected. The authenticated public-facing server, not the intended inner server, receives data meant for the inner server, which can leak it.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the rustls version in `Cargo.lock` for `rustls` `0.23.44` or `0.23.45`
- Check whether the application enables Encrypted Client Hello on its client connections

## Fix

- Move `rustls` past `0.23.45` (the sources do not name the fixed version)

## Timeline

- 2026-11-08T02:21:14+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-123612

## Documents

- [advisory] Vendor advisory: github.com https://github.com/rustls/rustls/security/advisories/GHSA-vp88-798v-h67f
- [advisory] Third-party advisory: www.vulncheck.com https://www.vulncheck.com/advisories/rustls-0.23.44-and-0.23.45-ech-rejection-application-data-disclosure

## From the sources

rustls 0.23.44 and 0.23.45 contain an information disclosure vulnerability that sends application data buffered before the handshake completes to the client-facing server when Encrypted Client Hello is rejected. Because start_traffic() queues plaintext from ClientConnection::writer() before sending the ech_required alert, the authenticated public_name server receives data intended for the inner server.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
