Skip to main content

protobufjs CVE-2026-44294

MEDIUM
Improper Input Validation (CWE-20)
2026-05-12 https://github.com/protobufjs/protobuf.js GHSA-2pr8-phx7-x9h3
5.3
CVSS 3.1 · GitHub Advisory
View

Attack ChainAIDerived

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

  1. Recon
    Attacker crafts malicious schema
  2. Delivery
    Hosts schema on API or file
  3. Exploit
    Application loads untrusted schema
  4. Install
    Embedded control character in field name
  5. C2
    Code generation triggered (encode/decode)
  6. Execute
    JavaScript SyntaxError thrown
  7. Impact
    Message type unusable
  8. Step 8
    Application denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

The application must explicitly load a protobuf schema or JSON descriptor from a source that an attacker can influence or control. This includes remote sources (API responses, user-uploaded files, external configuration services), local files if writable by untrusted processes, or in-memory schema objects constructed from untrusted input. The crafted schema must contain at least one field name or oneof name with one or more control characters (Unicode categories Cc: Other, Control, such as U+000A line feed, U+0009 tab, U+000D carriage return, U+000C form feed, or other non-printing characters). The application must then trigger code generation by calling an operation on a message of the affected type: calling .encode(), .decode(), .verify(), .fromObject(), .toObject(), or similar methods, or accessing the message constructor. If the application only loads and uses hardcoded, application-defined schemas built into the binary or configuration files not writable by attackers, this vulnerability does not apply. The attack vector is remote (AV:N) only in the sense that schema injection can originate over the network; however, local schema file injection or in-process message object injection by other processes/code paths also satisfies the preconditions.

Impact

This vulnerability presents moderate real-world risk with important caveats. The CVSS score of 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L) correctly reflects a network-accessible denial of service with low attack complexity and no authentication required-however, the severity is inherently limited because the impact is availability only (A:L), not confidentiality or integrity. Exploitation probability is straightforward: any attacker who can inject or influence a schema definition can trigger the denial of service. The real-world risk depends entirely on deployment context. Applications accepting schemas from untrusted sources (e.g., user uploads, third-party APIs, config files) face significant risk; those using only hardcoded, application-defined schemas face none. The CVSS vector and preconditions align: network vector is accurate because schema injection can occur remotely (via API, file upload, etc.), and AC:L reflects that once a malicious schema is loaded, the denial of service is guaranteed. No special exploitation conditions exist-the attack surface is the schema loading mechanism itself. No public exploit code has been identified beyond the proof-of-concept implicit in the vulnerability description (a field name with a newline character). This is not an 'in the wild' exploitation risk but rather a supply-chain or API security risk for applications that do not validate untrusted schemas.

Exploit ScenarioDerived

An attacker hosting a malicious gRPC service or API endpoint provides a crafted protobuf schema or JSON descriptor where a message field is named with a newline character (e.g., 'fieldName injected'). When a client application using protobufjs loads this schema via fetch, API call, or config file and then attempts to serialize or deserialize a message of that type, the code generation phase fails with a SyntaxError, causing the application to crash or become unable to communicate with the endpoint. No code execution occurs, but the availability impact is complete: the affected message type becomes unusable for the lifetime of the application process.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – May 12, 2026

Denial of service in protobufjs allows remote attackers to crash runtime code generation by providing crafted protobuf schemas or JSON descriptors containing unescaped control characters in field names. When affected message types perform encode, decode, verify, or conversion operations, the generated JavaScript code fails to compile, rendering those types unusable. This affects applications that load untrusted schemas; those using only application-defined schemas are not impacted. No code execution is known to occur.

RemediationAI

Upgrade to protobufjs version 7.5.6 or later for the 7.x branch, or version 8.0.2 or later for the 8.x branch. These versions include input hardening and fix the control character escaping issue in generated code. Patched versions are available at 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. If immediate patching is not possible and the application must load untrusted schemas, implement validation middleware before schema loading: reject any schema or JSON descriptor containing field or oneof names with control characters (newlines, tabs, carriage returns, form feeds, or other characters outside the printable ASCII range 0x20-0x7E). This validation must occur before passing the schema to protobufjs load(), loadSync(), or fromJSON() functions, and the rejection should return an error to the caller rather than attempting to sanitize the schema, since sanitization may create unintended behavior changes in legitimate field names.

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

protobufjs is a JavaScript implementation of Protocol Buffers that dynamically generates property accessor functions and message codec code at runtime from schema definitions. The vulnerability exists in the code generation phase where field and oneof names from schema input are embedded directly into JavaScript function bodies without proper escaping of control characters (such as newlines, tabs, or other non-printing characters defined in CWE-20: Improper Input Validation). When control characters are present in a field name, they break the syntax of the generated JavaScript code, causing a SyntaxError during the eval or Function constructor invocation that compiles the generated code. The vulnerability affects the runtime serialization/deserialization pipeline: any operation triggering code generation (encode, decode, verify, fromObject, toObject) will fail if a malicious schema has been loaded.

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

GitHub Advisory PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
SUSE MEDIUM
Red Hat 5.3 MEDIUM

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

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

DescriptionGitHub Advisory

Summary

protobufjs generated JavaScript property accessors from schema-controlled field and oneof names. Certain control characters in field names were not escaped before being embedded into generated function bodies. A crafted schema or JSON descriptor could therefore cause generated encode, decode, verify, or conversion functions to fail during compilation.

Impact

An attacker who can provide or influence a protobuf schema or JSON descriptor may be able to make affected message types unusable by causing protobufjs runtime code generation to throw a syntax error.

This is a denial of service issue for applications that load untrusted schemas or descriptors. Applications that only use trusted, application-defined schemas are not directly affected by this issue.

The issue is not known to allow code execution by itself.

Preconditions

  • The application must allow an attacker to control or influence a protobuf schema or JSON descriptor.
  • The crafted input must define a field name containing control characters that reach generated JavaScript property access.
  • The application must perform an operation that triggers protobufjs code generation for the affected type, such as encode, decode, verify, fromObject, or toObject.

Workarounds

Do not load protobuf schemas or JSON descriptors from untrusted sources with affected versions. If untrusted schemas must be accepted, validate field names before loading them and reject names containing control characters.

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.

Threat Intelligence Overview

EPSS Score
0.1%
Top 75% exploitable
Threat Intel
1
1 source
Data Quality
4 sources
Confidence: Medium
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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

Affected Products (CPE)GitHub Advisory

pkg:npm/protobufjs
pkg:npm/protobufjs

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise High Performance Computing 12 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected
SUSE Linux Enterprise Module for SAP Applications 15 SP7 Not-Affected
SUSE Linux Enterprise Module for Web and Scripting 15 SP7 Not-Affected

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