GitHub Advisoryadvisory · crates.io
GHSA-h2v8-394m-p7vv Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.
LOW
Official page ↗
- Ecosystem
- crates.io
- Packages
- rustls
- Severity
- Low
- CVSS vector
- CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
- Weaknesses
- CWE-770
- Reviewed
- 2026-10-27
Affected packages
• crates.io rustls: < 0.23.46 → fixed in 0.23.46
• crates.io rustls: >= 0.24.0-dev.1, < 0.24.0-dev.2 → fixed in 0.24.0-dev.2
Description
Summary
The 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.
Details
rustls calls `BrotliDecompress` which enables Brotli's large-window extension. rustls applies a limit to certificates, but this applies to the decompressed result, and not to any internal allocations the process requires.
Impact
Client applications that enable the `brotli` feature will be vulnerable to malicious servers. Server applications that enable the `brotli` feature and enable client authentication will be vulnerable to malicious clients.
Potential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression.
Acknowledgement
Thanks to OpenAI [email protected] for the disclosure.
Related
Weakness · CWE (1)
- CWE-770 Allocation of Resources Without Limits or Throttling weakness
References
- https://github.com/rustls/rustls/security/advisories/GHSA-h2v8-394m-p7vv web
- https://github.com/rustls/rustls/pull/3297 web
- https://github.com/rustls/rustls/pull/3354 web
- https://github.com/rustls/rustls/commit/1aa987af37d0d79b98781d345895ac0059ce345c web
- https://github.com/rustls/rustls/commit/402b7b78b7ae87d59e19cf07ee07f3fc19e6537e web
- https://github.com/rustls/rustls package
- https://github.com/rustls/rustls/releases/tag/v/0.23.46 web
- https://rustsec.org/advisories/RUSTSEC-2026-0348.html web