The bug sits in the decoder. An invalid block switch was treated as "need more input" instead of a format error, so the streaming decoder kept appending bytes to an eight-byte internal buffer, per the Node.js advisory. Anyone who can hand your app Brotli data can corrupt process memory.
Fixed versions: Node.js 22.23.4, 24.22.1 and 26.12.1; Bun 1.4.4 (it bundles Brotli 1.2.1); upstream Brotli 1.0.10, 1.1.1 and 1.2.1. Envoy has its own advisory with patched releases.
Bun's advisory is the one to read if you use fetch. Bun sends Accept-Encoding with br by default and decodes Brotli responses on its own, so any server your app calls can feed the decoder. Executables built with bun build --compile embed the old runtime and stay affected until you rebuild them.
OpenAI says the root cause was fixed in Brotli's source in February but no release went out until now. Its agents hit it while red-teaming OpenAI's own training sandboxes.

