Stream: git-wasmtime

Topic: wasmtime / issue #14760 RUSTSEC-2026-0347: Buffered appli...


view this post on Zulip Wasmtime GitHub notifications bot (Oct 15 2026 at 00:13):

github-actions[bot] opened issue #14760:

Buffered application data sent to outer server after ECH rejection

Details
Package rustls
Version 0.23.45
URL https://github.com/rustls/rustls/pull/3300
Date 2026-10-14
Patched versions >=0.23.46
Unaffected versions <0.23.44

When a server rejects Encrypted Client Hello (ECH), the client completes the
handshake using the outer ClientHello and authenticates the server against the
ECH config's public_name. At the end of that handshake, rustls encrypted and
queued any application data buffered via ClientConnection::writer() before
queueing the ech_required alert.

The application correctly receives
Error::PeerIncompatible(ServerRejectedEncryptedClientHello), but the next
write_tls() call (needed to send the alert) also sends the buffered
application data. Plaintext meant for the inner server therefore goes to the
client-facing server named by public_name.

That server is authenticated, so this is not exploitable by an unauthenticated
party, but it violates RFC 9849 section 6.1.6, which requires the client to
abort with ech_required "before sending any application data to the server".

This affects only clients that:

The underlying ordering bug is older, but before 0.23.44 the client checked
the server certificate against the inner server name rather than public_name,
so certificate verification failed first and no data was sent.

See advisory page for additional details.

view this post on Zulip Wasmtime GitHub notifications bot (Oct 15 2026 at 14:50):

alexcrichton closed issue #14760:

Buffered application data sent to outer server after ECH rejection

Details
Package rustls
Version 0.23.45
URL https://github.com/rustls/rustls/pull/3300
Date 2026-10-14
Patched versions >=0.23.46
Unaffected versions <0.23.44

When a server rejects Encrypted Client Hello (ECH), the client completes the
handshake using the outer ClientHello and authenticates the server against the
ECH config's public_name. At the end of that handshake, rustls encrypted and
queued any application data buffered via ClientConnection::writer() before
queueing the ech_required alert.

The application correctly receives
Error::PeerIncompatible(ServerRejectedEncryptedClientHello), but the next
write_tls() call (needed to send the alert) also sends the buffered
application data. Plaintext meant for the inner server therefore goes to the
client-facing server named by public_name.

That server is authenticated, so this is not exploitable by an unauthenticated
party, but it violates RFC 9849 section 6.1.6, which requires the client to
abort with ech_required "before sending any application data to the server".

This affects only clients that:

The underlying ordering bug is older, but before 0.23.44 the client checked
the server certificate against the inner server name rather than public_name,
so certificate verification failed first and no data was sent.

See advisory page for additional details.


Last updated: Oct 31 2026 at 23:03 UTC