Vulnerability advisory

EEF-CVE-2026-111497

Out-of-bounds write in the Brotli decoder bundled with erl-brotli

Published Updated OSV record ↗
Severity
  • CVSS 4.0CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Affected versions

AffectedFixed in
0.3.0 to before 0.3.40.3.4Advisories →
Also listed as affected (4)

Repository

Affected commitsFixed by commit
GIT github.com/yjh0502/erl-brotli ↗
1e2af9bebba40ee292abf51e19ac831c2658ca47 to before 7498e1c743c71a99636e8f897b6b016433830d6d7498e1c743c71a99636e8f897b6b016433830d6d
Also listed as affected (2)
  • v0.3.2
  • v0.3.0

Description

Summary

Out-of-bounds Write vulnerability in the bundled Brotli decoder in yjh0502 erl-brotli allows an attacker who supplies a crafted Brotli-compressed stream to brotli:decode/1 to corrupt decoder state memory, disclose memory contents, crash the Erlang VM, or potentially execute code.

erl-brotli compiles its own copy of the Google Brotli C sources under c_src into a NIF, and brotli_decoder_decompress_stream in c_src/brotli_nif.c hands the input to BrotliDecoderDecompressStream. In c_src/dec/decode.c, DecodeBlockTypeAndLength returns false for a block switch in a category with at most one block type, and the non-streaming callers DecodeLiteralBlockSwitch, DecodeCommandBlockSwitch and DecodeDistanceBlockSwitch discard that result, so decoding continues with inconsistent state. The decoder runs inside a NIF, so memory corruption or a crash takes down the whole VM rather than the calling process. Because the package carries its own copy of the library, the Brotli version installed on the host does not matter.

This issue affects brotli: from 0.3.0 before 0.3.4.

Impact

An attacker who can get an application to decode a Brotli stream they control, for example an HTTP client that decompresses Content-Encoding: br responses with this package, can crash the Erlang VM and potentially run code inside it.

References

  • Codex
  • Claude Code
  • VS Code
  • GitHub Copilot
  • Cursor
  • Cline
  • Windsurf
  • Google Anti-gravity
  • OpenCode
  • Pi
  • Gemini CLI
  • Hermes Agent
  • Zed
  • Junie
  • Qwen Code
  • Kiro
  • Kilo Code
  • Factory Droid

Set up GitHits for your agents

Run this command:

<> bash
npx githits@latest init

What happens next:

  1. Opens your browser to authorize GitHits
  2. Asks whether to set up GitHits at the user or project level
  3. Detects your supported AI coding tools
  4. Lets you choose which tools to configure
  5. Configures the selected tools