rustls
A modern TLS library in Rust
Activity
- Latest release
- 2w ago
- Total releases
- 118
- Cadence
- ~14 days
- Last 12 months
- 15
Reach
- Downloads
- 998.5M
- Stars
- 7.7k
Details
- License
- Apache-2.0 OR ISC OR MIT
- First release
- Aug 27, 2016
| Version | Released | |
|---|---|---|
0.23.46
patch
|
0.23.46
patch
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.24.0-dev.2
pre
|
0.24.0-dev.2
pre
Dependencies (13)
+ 5 more
Changelog
Compare changes
|
|
0.23.45
patch
4 CVEs
GHSA-vp88-798v-h67f
RUSTSEC-2026-0347
Oct 27, 2026
rustls: ECH rejection can expose buffered application data to authenticated outer server before `ech_required` alert
2.3
/ 10
Low
Local
Low
High
None
Unchanged
Low
None
None
In rustls 0.23.44 and 0.23.45, application data that a client buffers before the handshake completes is sent to the server even when the server rejects Encrypted Client Hello (ECH). When the server rejects ECH, the client completes the handshake with the outer ClientHello and authenticates the server against the ECH config's The application then receives The ordering bug is older than 0.23.44. Before 0.23.44, the client checked the server certificate against the inner server name rather than ImpactPlaintext meant for the inner server, the one named in the encrypted ClientHello, goes to the client-facing server identified by
This affects only clients that meet all of these conditions:
The usual client response to rejection is to retry with the server's retry configs. In that case, the data has already gone to the outer server. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.45
patch
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.44
patch
5 CVEs
GHSA-vp88-798v-h67f
RUSTSEC-2026-0347
Oct 27, 2026
rustls: ECH rejection can expose buffered application data to authenticated outer server before `ech_required` alert
2.3
/ 10
Low
Local
Low
High
None
Unchanged
Low
None
None
In rustls 0.23.44 and 0.23.45, application data that a client buffers before the handshake completes is sent to the server even when the server rejects Encrypted Client Hello (ECH). When the server rejects ECH, the client completes the handshake with the outer ClientHello and authenticates the server against the ECH config's The application then receives The ordering bug is older than 0.23.44. Before 0.23.44, the client checked the server certificate against the inner server name rather than ImpactPlaintext meant for the inner server, the one named in the encrypted ClientHello, goes to the client-facing server identified by
This affects only clients that meet all of these conditions:
The usual client response to rejection is to retry with the server's retry configs. In that case, the data has already gone to the outer server. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.44
patch
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.43
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.43
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.24.0-dev.1
unknown
4 CVEs
GHSA-vp88-798v-h67f
RUSTSEC-2026-0347
Oct 27, 2026
rustls: ECH rejection can expose buffered application data to authenticated outer server before `ech_required` alert
2.3
/ 10
Low
Local
Low
High
None
Unchanged
Low
None
None
In rustls 0.23.44 and 0.23.45, application data that a client buffers before the handshake completes is sent to the server even when the server rejects Encrypted Client Hello (ECH). When the server rejects ECH, the client completes the handshake with the outer ClientHello and authenticates the server against the ECH config's The application then receives The ordering bug is older than 0.23.44. Before 0.23.44, the client checked the server certificate against the inner server name rather than ImpactPlaintext meant for the inner server, the one named in the encrypted ClientHello, goes to the client-facing server identified by
This affects only clients that meet all of these conditions:
The usual client response to rejection is to retry with the server's retry configs. In that case, the data has already gone to the outer server. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.24.0-dev.1
unknown
Dependencies (17)
+ 9 more
Changelog
Compare changes
|
|
0.23.42
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.42
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.41
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.41
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.40
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.40
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.39
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.39
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.38
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.38
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.37
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.37
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.24.0-dev.0
unknown
|
0.24.0-dev.0
unknown
Dependencies (18)
+ 10 more
Changelog
Compare changes
|
|
0.23.36
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.36
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.35
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.35
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.34
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.34
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.33
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.33
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.32
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.32
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.31
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.31
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.30
unknown
yanked
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.30
unknown
yanked
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.29
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.29
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.28
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.28
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.27
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.27
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.26
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.26
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.25
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.25
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.24
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.24
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.23
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.23
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.22
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.22
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.21
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.21
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.20
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.20
unknown
Dependencies (25)
+ 17 more
Changelog
Compare changes
|
|
0.23.19
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.19
unknown
Dependencies (24)
+ 16 more
Changelog
Compare changes
|
|
0.23.18
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.18
unknown
Dependencies (24)
+ 16 more
Changelog
Compare changes
|
|
0.23.17
unknown
5 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev
CVE-2024-11738
GHSA-qg5g-gv98-5ffh
RUSTSEC-2024-0399
Nov 25, 2024
rustls network-reachable panic in `Acceptor::accept`
Medium
Network
Low
None
None
A bug introduced in rustls 0.23.13 leads to a panic if the received TLS ClientHello is fragmented. Only servers that use Servers that use Servers that use Servers that use Fixed in
0.23.18
References Updated Sep 10, 2026 · Source: OSV.dev |
0.23.17
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.16
unknown
5 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev
CVE-2024-11738
GHSA-qg5g-gv98-5ffh
RUSTSEC-2024-0399
Nov 25, 2024
rustls network-reachable panic in `Acceptor::accept`
Medium
Network
Low
None
None
A bug introduced in rustls 0.23.13 leads to a panic if the received TLS ClientHello is fragmented. Only servers that use Servers that use Servers that use Servers that use Fixed in
0.23.18
References Updated Sep 10, 2026 · Source: OSV.dev |
0.23.16
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.15
unknown
5 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev
CVE-2024-11738
GHSA-qg5g-gv98-5ffh
RUSTSEC-2024-0399
Nov 25, 2024
rustls network-reachable panic in `Acceptor::accept`
Medium
Network
Low
None
None
A bug introduced in rustls 0.23.13 leads to a panic if the received TLS ClientHello is fragmented. Only servers that use Servers that use Servers that use Servers that use Fixed in
0.23.18
References Updated Sep 10, 2026 · Source: OSV.dev |
0.23.15
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.14
unknown
5 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev
CVE-2024-11738
GHSA-qg5g-gv98-5ffh
RUSTSEC-2024-0399
Nov 25, 2024
rustls network-reachable panic in `Acceptor::accept`
Medium
Network
Low
None
None
A bug introduced in rustls 0.23.13 leads to a panic if the received TLS ClientHello is fragmented. Only servers that use Servers that use Servers that use Servers that use Fixed in
0.23.18
References Updated Sep 10, 2026 · Source: OSV.dev |
0.23.14
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.13
unknown
5 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-2mjx-qc3c-rqvc
RUSTSEC-2026-0285
Oct 05, 2026
Rustls: TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
Low
None
None
Rustls accepted TLS 1.3 handshake messages sent at the wrong encryption level when they followed a key-changing message in the same record. The handshake transcript is still authenticated, so a network-position attacker cannot use this to alter or complete a handshake; the practical effect is that a peer could send handshake messages that should be encrypted in plaintext without rustls rejecting the connection. This issue affects rustls versions 0.23.13 through 0.23.44 inclusive. Original reportSummaryRustls (tested version 0.23.44, and it appears still an issue on latest master though I have not tested this) accepts a TLS 1.3 server flight where a plaintext EncryptedExtensions is packed into the same record as the ServerHello. This is very similar to Go's CVE-2025-61730 fixed in https://github.com/golang/go/commit/5046bdf8a612b35a2c1a9e168054c1d5c65e7dd7 DetailsIt appears This is insufficient per RFC 8446 section 5.1's
ImpactAn on path attacker can inject plaintext messages that are accepted. Tool Use DisclosureThis was discovered by a new TLS/DTLS test suite currently under construction. The specific testcase was inspired by the Go CVE. Other tested implementations (Botan, OpenSSL, BoringSSL, Go, wolfSSL) reject this protocol flow. Daybreak Blue reviewed the rustls code to identify probable root cause. Fixed in
0.23.45
References
Updated Oct 27, 2026 · Source: OSV.dev
CVE-2024-11738
GHSA-qg5g-gv98-5ffh
RUSTSEC-2024-0399
Nov 25, 2024
rustls network-reachable panic in `Acceptor::accept`
Medium
Network
Low
None
None
A bug introduced in rustls 0.23.13 leads to a panic if the received TLS ClientHello is fragmented. Only servers that use Servers that use Servers that use Servers that use Fixed in
0.23.18
References Updated Sep 10, 2026 · Source: OSV.dev |
0.23.13
unknown
Dependencies (27)
+ 19 more
Changelog
Compare changes
|
|
0.23.12
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.12
unknown
Dependencies (27)
+ 19 more
Changelog
Compare changes
|
|
0.23.11
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.11
unknown
Dependencies (27)
+ 19 more
Changelog
Compare changes
|
|
0.23.10
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.10
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.9
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.9
unknown
Dependencies (26)
+ 18 more
Changelog
Compare changes
|
|
0.23.8
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.8
unknown
Dependencies (20)
+ 12 more
Changelog
Compare changes
|
|
0.23.7
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.7
unknown
Dependencies (20)
+ 12 more
Changelog
Compare changes
|
|
0.23.6
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.6
unknown
Dependencies (20)
+ 12 more
Changelog
Compare changes
|
|
0.21.12
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.21.12
unknown
Dependencies (11)
+ 3 more
Changelog
Compare changes
|
|
0.21.11
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.21.11
unknown
Dependencies (11)
+ 3 more
Changelog
Compare changes
|
|
0.22.4
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.22.4
unknown
Dependencies (14)
+ 6 more
Changelog
Compare changes
|
|
0.23.5
unknown
3 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev |
0.23.5
unknown
Dependencies (20)
+ 12 more
Changelog
Compare changes
|
|
0.23.4
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
CVE-2024-32650
GHSA-6g7w-8wpp-frhj
RUSTSEC-2024-0336
Apr 19, 2024
Denial of Service Vulnerability in Rustls Library
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
DetailsVerified at When using a blocking rustls server, if a client send a
PoC
Also note that the server thread is stuck in this infinite loop even if the client closes the socket. ImpactThis is a DOS. A multithread non-async server that uses Affected versions
0.20
Fixed in
0.21.11
0.22.4
0.23.5
References
Updated Sep 10, 2026 · Source: OSV.dev |
0.23.4
unknown
Dependencies (17)
+ 9 more
Changelog
Compare changes
|
|
0.22.3
unknown
4 CVEs
GHSA-w44r-93j7-qv28
RUSTSEC-2026-0349
Oct 27, 2026
rustls: An unauthenticated ServerHello poisons the per-name key-exchange record, so later ClientHellos carry only a classical X25519 share
3.7
/ 10
Low
Network
High
None
None
Unchanged
Low
None
None
SummaryThe client records the server-selected key-exchange group per server name when it processes the ServerHello, before the server is authenticated. A network attacker can answer one connection attempt for a target name with a ServerHello that selects X25519 and close the connection. Later ClientHellos for that name carry one X25519 share while supported_groups still lists X25519MLKEM768 first. If the server accepts that share instead of sending a HelloRetryRequest, the handshake completes with classical key exchange only and no error. An attacker that answers one connection attempt for the target name with a ServerHello selecting X25519 changes every later ClientHello of that client for that name, for as long as the entry stays in the store. No certificate or completed handshake is needed: it parses the ClientHello, sends the ServerHello, and closes. TLS 1.3 transcript binding stops an on-path attacker from editing the ClientHello of one connection. It does not stop the attacker from steering the client's prediction state beforehand, because that state is written from an unauthenticated message. What does not trigger it
ImpactIf the genuine server picks the group for which a share is present, instead of sending a HelloRetryRequest for its preferred hybrid group, the handshake completes with classical key exchange only, between two peers that both support the hybrid group. No error is raised. The confidentiality of recorded sessions against a future quantum adversary is lost for those connections (harvest now, decrypt later). There is no key compromise and no authentication bypass. Note that this behaviour is discussed at length in draft-ietf-tls-key-share-prediction so the actual security impact is largely down to a server policy decision. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-c8m5-c952-6cm4
RUSTSEC-2026-0346
Oct 27, 2026
Rustls: Session Debug formatting exposes TLS master secrets and resumption PSKs
4.0
/ 10
Medium
Local
High
High
Required
Unchanged
High
None
None
SummaryFormatting a client session value with Debug exposes its TLS 1.2 master secret or TLS 1.3 resumption PSK. A custom session store that logs these values can disclose keys to readers of the logs. Ordinary connection and built-in cache diagnostics remain redacted, and the session-store interface already warns that its values are sensitive. DetailsDerived formatters traverse the session's secret-bearing fields. This conflicts with the project's explicit key-material redaction policy. Proof of conceptCustom ImpactSuch store implementations could leak the master secret for the TLS connection. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
GHSA-h2v8-394m-p7vv
RUSTSEC-2026-0348
Oct 27, 2026
Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
SummaryThe built-in (but disabled by default) Brotli certificate decoder bounds the output buffer but accepts an input-selected history window. A header of five bytes can specify a 1 GiB window allocation. A peer can abort a process whose allocator cannot satisfy that request. A client must enable Brotli and connect to the peer; a server must enable Brotli and request a client certificate. Neither direction requires a trusted attacker certificate. Detailsrustls calls ImpactClient applications that enable the Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression. AcknowledgementThanks to OpenAI OutboundDisclosures@openai.com for the disclosure. Fixed in
0.23.46
0.24.0-dev.2
References
Updated Oct 27, 2026 · Source: OSV.dev
CVE-2024-32650
GHSA-6g7w-8wpp-frhj
RUSTSEC-2024-0336
Apr 19, 2024
Denial of Service Vulnerability in Rustls Library
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Summary
DetailsVerified at When using a blocking rustls server, if a client send a
PoC
Also note that the server thread is stuck in this infinite loop even if the client closes the socket. ImpactThis is a DOS. A multithread non-async server that uses Affected versions
0.20
Fixed in
0.21.11
0.22.4
0.23.5
References
Updated Sep 10, 2026 · Source: OSV.dev |
0.22.3
unknown
Dependencies (14)
+ 6 more
Changelog
Compare changes
|