CVE-2026-54451
published 2026-09-17CVE-2026-54451: Elixir protobuf is a pure Elixir implementation of Google Protobuf. From 0.8.0 until 0.16.1, services that decode attacker-controlled protobuf bytes with…
PriorityP345high8.2CVSS 4.0
AVNACLATPPRNUINVCNVINVAHSCNSINSANEXCRXIRXARXMAVXMACXMATXMPRXMUIXMVCXMVIXMVAXMSCXMSIXMSAXSXAUXRXVXREXUX
EPSS
0.52%
43.6th percentile
Elixir protobuf is a pure Elixir implementation of Google Protobuf. From 0.8.0 until 0.16.1, services that decode attacker-controlled protobuf bytes with Protobuf.Decoder can be taken offline when the schema contains a self-referential or cyclic message type. In lib/protobuf/decoder.ex, Protobuf.Decoder.value_for_field/3 handles an embedded?: true field by recursively entering the decode / build_message / handle_value / value_for_field call chain without enforcing a nesting-depth limit. Deeply nested embedded fields retain non-tail recursive frames, allowing a comparatively small request to consume substantial CPU and memory, pin a BEAM scheduler, and exhaust the node. This issue is fixed in version 0.16.1.
Affected
8 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| elixir-protobuf | protobuf | — | — |
| protobuf | — | — | |
| protobuf | >= 0.8.0 < 0.16.1 | 0.16.1 | |
| llvm | llvm | — | — |
| nvidia | openshell | — | — |
| openshift | ose-rhel-coreos-8 | — | — |
| openshift | ose-rhel-coreos-9 | — | — |
| rust-lang | rust | — | — |
CVSS provenance
nvdv4.08.2HIGHCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vendor_redhat8.2HIGH
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
Red Hat
protobuf: Elixir protobuf: Denial of Service via unbounded recursion in message decoding
vendor_redhat·2026-09-17·CVSS 8.2
CVE-2026-54451 [HIGH] CWE-770 protobuf: Elixir protobuf: Denial of Service via unbounded recursion in message decoding
protobuf: Elixir protobuf: Denial of Service via unbounded recursion in message decoding
A flaw was found in Elixir protobuf, a pure Elixir implementation of Google Protobuf. An attacker can craft protobuf messages with a self-referential or cyclic message type. When these messages are decoded by the `Protobuf.Decoder` component, specifically the `value_for_field` function, an unbounded recursion occurs due to the lack of a nesting-depth limit. This excessive recursion consumes substantial CPU and memory resources, leading to a Denial of Service (DoS) by taking the affected service offline.
Package: jaeger (Red Hat Hardened Images) - Affected
Package: llvm (Red Hat Hardened Images) - Affected
Package: openshell (Red Hat Hardened Images) - Affected
Package: protobuf (Red Hat Hardened I
GHSA
Protobuf: Unbounded recursion depth in embedded-message decoding
ghsa·2026-07-15
CVE-2026-54451 [HIGH] CWE-674 Protobuf: Unbounded recursion depth in embedded-message decoding
Protobuf: Unbounded recursion depth in embedded-message decoding
### Summary
Unbounded recursion depth in `Protobuf.Decoder` (Hex package `protobuf`, versions `>= 0.8.0, >` (tag `0x0A` = field 1, wire type 2). Use an iolist with a running byte-size to keep generation O(depth).
3. POST the body (a few MB at `depth = 1_000_000`) as `application/x-protobuf` to any endpoint that calls `Tree.decode/1`.
4. The non-tail `decode(bin, type)` in `value_for_field/3` re-enters once per nesting level, accumulating a frame per level. The decode burns seconds of CPU and hundreds of MB on the victim node; a few concurrent requests exhaust it.
### Impact
Unauthenticated, network-reachable request-amplification denial of service against any service that decodes attacker-influenced protobuf bytes into a
No detection rules found.
No public exploits indexed.
https://github.com/elixir-protobuf/protobuf/commit/352d1769a0ef575a8d18c3f9620609efdb73e2bchttps://github.com/elixir-protobuf/protobuf/commit/b8efa97790eece3d2d0e8e7c31a45ed409fe5338https://github.com/elixir-protobuf/protobuf/releases/tag/v0.16.1https://github.com/elixir-protobuf/protobuf/security/advisories/GHSA-rv48-qqj5-crxghttps://github.com/elixir-protobuf/protobuf/security/advisories/GHSA-rv48-qqj5-crxg
2026-09-17
Published