Description
Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in elixir-grpc grpc_core and grpc allows unauthenticated attackers to exhaust server memory via a compressed Erlang external term in a gRPC message body.
GRPC.Codec.Erlpack.decode/2 (grpc_core/lib/grpc/codec/erlpack.ex, and lib/grpc/codec/erlpack.ex before the package split) passes the message body to :erlang.binary_to_term/2. That function inflates a compressed term in full before it returns. The codec sets no limit on the decoded size, and its type checks run only on the decoded term. The server's max_body_size limit counts the compressed bytes of the request. A request with Content-Type: application/grpc+erlpack can therefore make the server allocate a term much larger than the request body.
This issue affects grpc: from 0.4.0 before 1.0.0; grpc_core: from 1.0.0 before 1.1.0.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| elixir-grpc | grpc | 0.4.0 – < 1.0.0 | 1.0.0 |
| elixir-grpc | grpc_core | 1.0.0 – < 1.1.0 | 1.1.0 |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| Hex | grpc | >= 0.4.0, < 1.0.0 | 1.0.0 | EEF-CVE-2026-121808 |
| Hex | grpc_core | >= 1.0.0, < 1.1.0 | 1.1.0 | EEF-CVE-2026-121808 |
References
- Memory exhaustion via compressed Erlang terms in the elixir-grpc Erlpack codec vendor-advisory related
- EEF CNA record for CVE-2026-121808 related
- OSV record EEF-CVE-2026-121808 related
- Introducing commit 25bcc56 in elixir-grpc/grpc related
- Fix commit 0332faa in elixir-grpc/grpc patch
- Fix commit d6bc56a in elixir-grpc/grpc patch