Description
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.
Published: 2026-09-17
Score: 8.2 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service (service unusable due to resource exhaustion)
Action: Apply Patch
AI Analysis

Impact

The vulnerability arises from an unbounded recursive descent when decoding protobuf messages that contain self-referential or cyclic embedded message types. During the decode/build_message/value_for_field call chain the library does not enforce a nesting-depth limit, allowing an attacker to send a relatively small payload that generates a deep recursion chain. The recursive frames are non-tail-recursive, consuming significant CPU cycles, heap memory, and BEAM scheduler slots, which can eventually exhaust the node and bring the service offline.

Affected Systems

This issue affects the elixir‑protobuf:protobuf library from releases 0.8.0 up to and including 0.16.1. Any application that uses Protobuf.Decoder to interpret data that can be controlled by an adversary is susceptible.

Risk and Exploitability

The CVSS score of 8.2 indicates high severity, but the EPSS score of less than 1 % suggests a low likelihood of widespread exploitation at this time. The vulnerability is not yet listed in the CISA KEV catalog. An attacker can exploit it by sending a crafted protobuf that references cyclic embedded messages; the attack vector is typically network‑based where the service accepts external protocol buffers. Successful exploitation would lead to denial of service through CPU and memory exhaustion, potentially impacting availability of the entire node.

Generated by OpenCVE AI on September 19, 2026 at 02:37 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade elixir‑protobuf to version 0.16.1 or newer, which includes a depth limit check in Protobuf.Decoder.value_for_field.
  • If an immediate upgrade is not feasible, replace or wrap Protobuf.Decoder calls with a recursion‑depth guard that aborts after a configurable limit, thereby preventing excessive resource consumption.
  • Restrict decoding of external protobuf data to trusted sources and validate schemas for self‑referential or cyclic messages before deserialization.

Generated by OpenCVE AI on September 19, 2026 at 02:37 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-rv48-qqj5-crxg Protobuf: Unbounded recursion depth in embedded-message decoding
History

Mon, 21 Sep 2026 22:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 18 Sep 2026 21:30:00 +0000

Type Values Removed Values Added
First Time appeared Protobuf
Protobuf protobuf
Vendors & Products Protobuf
Protobuf protobuf

Fri, 18 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-770
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Important


Thu, 17 Sep 2026 18:30:00 +0000

Type Values Removed Values Added
Description 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.
Title Elixir protobuf: Unbounded recursion depth in embedded-message decoding
Weaknesses CWE-674
References
Metrics cvssV4_0

{'score': 8.2, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N'}


Subscriptions

Protobuf Protobuf
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-21T21:03:54.370Z

Reserved: 2026-06-15T15:30:40.318Z

Link: CVE-2026-54451

cve-icon Vulnrichment

Updated: 2026-09-21T21:03:47.349Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-17T19:16:50.360

Modified: 2026-09-24T21:16:28.120

Link: CVE-2026-54451

cve-icon Redhat

Severity : Important

Publid Date: 2026-09-17T18:19:25Z

Links: CVE-2026-54451 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-19T02:45:16Z

Weaknesses
  • CWE-674

    Uncontrolled Recursion

  • CWE-770

    Allocation of Resources Without Limits or Throttling