{"schema":"threatline.record/2","record":{"id":"GHSA-h2v8-394m-p7vv","aliases":["GHSA-h2v8-394m-p7vv","RUSTSEC-2026-0348"],"summary":"Rustls: Brotli certificate decompression can allocate an attacker-controlled amount of memory up to 1 GiB before authentication.","details":"### Summary\n\nThe 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.\n\n### Details\n\nrustls 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.\n\n### Impact\n\nClient 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.\n\nPotential for denial of service due to memory exhaustion from peers sending malicious Brotli-encoded certificates, for applications that enable Brotli decompression.\n\n### Acknowledgement\nThanks to OpenAI [OutboundDisclosures@openai.com](mailto:OutboundDisclosures@openai.com) for the disclosure.","categories":["Libraries & packages"],"product":"rustls","vendor":"","ecosystem":"rust","affected_ranges":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-h2v8-394m-p7vv","source_modified_at":"2026-10-27T16:08:36Z","fetched_at":"2026-10-27T16:27:21.584480Z","package":{"ecosystem":"rust","name":"rustls"},"range":"< 0.23.46"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-h2v8-394m-p7vv","source_modified_at":"2026-10-27T16:08:36Z","fetched_at":"2026-10-27T16:27:21.584480Z","package":{"ecosystem":"rust","name":"rustls"},"range":">= 0.24.0-dev.1, < 0.24.0-dev.2"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-h2v8-394m-p7vv","source_modified_at":"2026-10-27T16:15:05.337819489Z","fetched_at":"2026-10-27T16:27:21.584480Z","package":{"name":"rustls","ecosystem":"crates.io","purl":"pkg:cargo/rustls"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.23.46"}]}],"versions":[]},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-h2v8-394m-p7vv","source_modified_at":"2026-10-27T16:15:05.337819489Z","fetched_at":"2026-10-27T16:27:21.584480Z","package":{"name":"rustls","ecosystem":"crates.io","purl":"pkg:cargo/rustls"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0.24.0-dev.1"},{"fixed":"0.24.0-dev.2"}]}],"versions":[]}],"fixed_versions":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-h2v8-394m-p7vv","source_modified_at":"2026-10-27T16:08:36Z","fetched_at":"2026-10-27T16:27:21.584480Z","package":{"ecosystem":"rust","name":"rustls"},"version":"0.23.46"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-h2v8-394m-p7vv","source_modified_at":"2026-10-27T16:08:36Z","fetched_at":"2026-10-27T16:27:21.584480Z","package":{"ecosystem":"rust","name":"rustls"},"version":"0.24.0-dev.2"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-h2v8-394m-p7vv","source_modified_at":"2026-10-27T16:15:05.337819489Z","fetched_at":"2026-10-27T16:27:21.584480Z","package":{"name":"rustls","ecosystem":"crates.io","purl":"pkg:cargo/rustls"},"version":"0.23.46"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-h2v8-394m-p7vv","source_modified_at":"2026-10-27T16:15:05.337819489Z","fetched_at":"2026-10-27T16:27:21.584480Z","package":{"name":"rustls","ecosystem":"crates.io","purl":"pkg:cargo/rustls"},"version":"0.24.0-dev.2"}],"cvss":3.7,"severity":"Low","kev":{"listed":false},"epss":{"probability":null,"percentile":null,"score_date":null},"published_at":"2026-10-27T16:08:36Z","modified_at":"2026-10-27T16:15:05.337819489Z","provenance":[{"source":"GitHub Advisory Database","url":"https://github.com/advisories/GHSA-h2v8-394m-p7vv","fetched_at":"2026-10-27T16:27:21.584480Z","source_modified_at":"2026-10-27T16:08:36Z"},{"source":"OSV","url":"https://osv.dev/vulnerability/GHSA-h2v8-394m-p7vv","fetched_at":"2026-10-27T16:27:21.584480Z","source_modified_at":"2026-10-27T16:15:05.337819489Z"}],"sources":["GitHub Advisory Database","OSV"],"references":[{"url":"https://github.com/rustls/rustls/security/advisories/GHSA-h2v8-394m-p7vv","source":"GitHub Advisory Database"},{"url":"https://github.com/rustls/rustls/pull/3297","source":"GitHub Advisory Database"},{"url":"https://github.com/rustls/rustls/pull/3354","source":"GitHub Advisory Database"},{"url":"https://github.com/rustls/rustls/commit/1aa987af37d0d79b98781d345895ac0059ce345c","source":"GitHub Advisory Database"},{"url":"https://github.com/rustls/rustls/commit/402b7b78b7ae87d59e19cf07ee07f3fc19e6537e","source":"GitHub Advisory Database"},{"url":"https://github.com/rustls/rustls/releases/tag/v/0.23.46","source":"GitHub Advisory Database"},{"url":"https://rustsec.org/advisories/RUSTSEC-2026-0348.html","source":"GitHub Advisory Database"},{"url":"https://github.com/advisories/GHSA-h2v8-394m-p7vv","source":"GitHub Advisory Database"}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"ecosystem","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-27T16:15:05.337819489Z","content_hash":"39c5e46d3e1c4a1ddc4cc06f54038f4aa3e3aa56213cdca477c62fde984cea52"}}
