Skip to main content

protobuf.js CVE-2026-44289

HIGH
Uncontrolled Recursion (CWE-674)
2026-05-12 https://github.com/protobufjs/protobuf.js GHSA-685m-2w69-288q
7.5
CVSS 3.1 · Vendor: https://github.com/protobufjs/protobuf.js
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify exposed protobuf endpoint
  2. Delivery
    Craft deeply nested protobuf binary
  3. Exploit
    Send malicious payload over network
  4. Execution
    Trigger unbounded recursion in decoder
  5. Persist
    Exhaust JavaScript call stack
  6. Impact
    Crash target process

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
Exploitation Conditions

The application must decode protobuf binary data from attacker-controlled sources such as HTTP request bodies, WebSocket messages, message queue payloads, or uploaded files. The crafted input must contain deeply nested protobuf structures specifically nested group tags or nested message fields that trigger the recursive decoding path in protobuf.js versions 7.5.5 or earlier, or 8.0.0 through 8.0.1. Standard protobuf schema with nested message definitions is sufficient; no exotic language features or non-default configurations are required. Exploitation is NOT limited by authentication (PR:N in CVSS vector) and requires no user interaction (UI:N), meaning any network-accessible protobuf decoding endpoint is vulnerable. Rate limiting or input size restrictions do not prevent exploitation unless they specifically validate nesting depth. Applications using JSON encoding instead of binary protobuf, or those that do not decode external protobuf data, are not affected.

Impact

Real-world risk is moderate to high for applications exposing protobuf decoding to untrusted network input. CVSS vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) indicates remote unauthenticated exploitation with low complexity targeting availability only. This aligns with a denial-of-service scenario rather than data breach or code execution. No EPSS score provided, no CISA KEV listing, and no public POC identified at time of analysis, suggesting exploitation is not yet widespread. However, the technical barrier is low - crafting deeply nested protobuf payloads is straightforward with standard protobuf libraries. Applications at highest risk include API gateways, microservices using gRPC-like protocols, message queue consumers, and file processing services that decode user-supplied protobuf data. The vulnerability is deterministic and easily weaponized once an attacker identifies a protobuf decoding endpoint. Patch availability in both 7.x and 8.x branches reduces urgency, but unmaintained dependencies downstream may delay fixes. The impact is limited to process crashes (recoverable with orchestration like Kubernetes) rather than persistent compromise, but repeated exploitation can sustain service outages.

Exploit ScenarioDerived

An attacker identifies a microservice API endpoint that accepts protobuf-encoded requests for processing sensor data. They craft a malicious protobuf binary containing 10,000 levels of nested message fields using a standard protobuf compiler with custom schema. Sending this payload in an HTTP POST request causes the Node.js service to decode the binary, triggering unbounded recursion in protobuf.js. Within milliseconds, the JavaScript call stack exhausts available memory, crashing the service process with a stack overflow error. If the service lacks auto-restart mechanisms, it remains offline until manual intervention. An attacker can repeat this attack to sustain denial of service against all instances behind a load balancer.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – May 12, 2026

Remote denial of service in protobuf.js (npm package) allows unauthenticated attackers to crash Node.js processes by sending crafted protobuf payloads with deeply nested structures. The vulnerability affects the binary decoding path where unbounded recursion exhausts the JavaScript call stack. Version 7.5.6 and 8.0.2 patches are available. Applications decoding untrusted protobuf data over network APIs, message queues, or file uploads are at immediate risk. CVSS 7.5 (High) reflects network attack vector with no authentication required.

RemediationAI

Upgrade to patched versions immediately: protobuf.js 7.5.6 for the 7.x branch or 8.0.2 for the 8.x branch, as confirmed in GitHub releases (https://github.com/protobufjs/protobuf.js/releases/tag/protobufjs-v7.5.6 and https://github.com/protobufjs/protobuf.js/releases/tag/protobufjs-v8.0.2). The fix backports input hardening that limits recursion depth during binary decoding (commit 75392ea). If immediate upgrade is not feasible, implement the following compensating controls: reject protobuf messages exceeding a reasonable nesting depth at application boundaries before decoding (trade-off: requires custom validation logic and may reject legitimate deeply nested data structures); isolate protobuf decoding in separate worker processes or containers with aggressive restart policies to contain crash impact (trade-off: adds latency and architectural complexity); or disable acceptance of protobuf binary input from untrusted sources and use JSON alternatives temporarily (trade-off: breaks protocol compatibility and may reduce performance). Review all npm dependencies to ensure transitive protobuf.js usage is updated, as many libraries bundle it indirectly.

Affected Packages

npm protobufjs fix: 7.5.6, 8.0.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

This vulnerability affects protobuf.js (pkg:npm/protobufjs), a pure JavaScript implementation of Protocol Buffers used for serializing structured data in Node.js and browser environments. The flaw is a classic unbounded recursion issue (CWE-674: Uncontrolled Recursion) in the binary decoder. Protocol Buffers support nested message fields and group tags, which the decoder processes recursively. Without depth limiting, an attacker can construct a protobuf binary with arbitrarily deep nesting that forces the decoder into recursive calls until the JavaScript call stack is exhausted. This affects both the path that skips unknown group fields during decoding and the generated code for decoding nested message fields. Versions 7.5.5 and earlier, plus 8.0.0 through 8.0.1, lack input validation on nesting depth. The fix in 7.5.6 and 8.0.2 (commit 75392ea) introduces input hardening to limit recursion depth during binary decoding.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/protobufjs/protobuf.js) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 7.5 HIGH

Primary rating from Vendor (https://github.com/protobufjs/protobuf.js).

CVSS VectorVendor: https://github.com/protobufjs/protobuf.js

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionCVE.org

Summary

protobufjs could recurse without a depth limit while decoding nested protobuf data. This affected both skipping unknown group fields and generated decoding of nested message fields.

A crafted protobuf binary payload could cause the JavaScript call stack to be exhausted during decoding.

Impact

An attacker who can provide protobuf binary data decoded by an application may be able to crash the process or otherwise cause decoding to fail with a stack overflow.

This affects applications that decode untrusted protobuf binary input with affected versions.

Preconditions

  • The application must decode protobuf binary data influenced by an attacker.
  • The crafted input must contain deeply nested protobuf structures, such as nested group tags or nested message fields.
  • The affected decoder path must process the crafted input.

Workarounds

Avoid decoding untrusted protobuf binary data with affected versions. If immediate upgrade is not possible, reject excessively nested messages at an outer protocol boundary where feasible, or isolate protobuf decoding in a process that can be safely restarted.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1,832 npm packages depend on protobufjs (158 direct, 1,675 indirect)

Ecosystem-wide dependent count for version 8.0.0.

Executive ViewAI

Why It Matters

CVE-2026-44289 is a remote denial of service vulnerability in the protobuf.js npm package that allows unauthenticated attackers to crash Node.js application processes by sending specially crafted protobuf messages. Any organization running protobuf.js in production environments that process untrusted protobuf data-including those using message queues, APIs, or file upload services-faces immediate service availability risk and potential business continuity impact.

Business Impact: High
Compensating Controls

Apply vendor patch (upgrade to protobuf.js version 7.5.6, 8.0.2, or later). If immediate patching is not possible: implement network-level rate limiting on protobuf message endpoints; add request size limits to reject payloads exceeding expected protobuf message sizes; monitor Node.js process memory and CPU for anomalous behavior; implement health checks with automated process restart on failure; consider restricting protobuf decoding to internal services only until patching is complete.

Threat Intelligence Overview

EPSS Score
0.0%
Top 86% exploitable
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Affected Products (CPE)CVE.org

pkg:npm/protobufjs
pkg:npm/protobufjs

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy