Skip to main content

protobufjs CVE-2026-44292

MEDIUM
Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution) (CWE-1321)
2026-05-12 https://github.com/protobufjs/protobuf.js GHSA-fx83-v9x8-x52w
5.3
CVSS 3.1 · GitHub Advisory
View

Attack ChainAIDerived

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

  1. Recon
    Parse attacker JSON input
  2. Delivery
    Extract plain object with `__proto__` property
  3. Exploit
    Pass object to message constructor
  4. Install
    Constructor copies `__proto__` to message instance
  5. C2
    Message prototype chain modified
  6. Execute
    Application calls inherited method or performs type check
  7. Impact
    Attacker-controlled prototype behavior executed

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The application must pass an attacker-controlled plain object to a generated protobufjs message constructor (e.g., new GeneratedMessage(plainObject) or similar creation helper). The attacker-controlled object must contain an own enumerable __proto__ property, which is achievable via JSON.parse() of attacker-supplied JSON or via direct object literal construction. The application must rely on inherited properties, prototype methods, or prototype-based type checks (instanceof) on the resulting message instances for the prototype injection to cause observable impact. Applications that exclusively decode binary protobuf data (using methods that parse .proto binary format directly, not from plain objects) are not affected. Non-default configuration is not a limiting factor; the vulnerability exists in default message constructor behavior.

Impact

CVSS 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) indicates network-accessible unauthenticated exploitation with low attack complexity, but confidentiality and availability are not impacted-only integrity of the message instance prototype. EPSS score not provided. No CISA KEV status or public exploit code identified. Real-world risk is moderate but heavily dependent on application architecture: applications that only decode binary protobuf data from trusted sources face zero risk; applications accepting JSON input for message construction face elevated risk proportional to how downstream code relies on inherited properties, prototype methods, or instanceof checks on message objects. The per-instance scoping limits blast radius compared to global prototype pollution, but in frameworks or libraries that iterate over message instances and call inherited methods, exploitation could trigger unexpected behavior. The attack vector (network, no authentication, low complexity) and the requirement for attacker-controlled plain object input create a realistic attack surface in REST APIs or message brokers that accept JSON-to-protobuf conversion.

Exploit ScenarioDerived

A web service accepts JSON input via REST API and constructs protobufjs message objects from parsed JSON using code like new MyMessage(JSON.parse(userInput)). An attacker sends a JSON payload with an injected __proto__ property containing a malicious object, e.g., {"field1": "value", "__proto__": {"toString": function(){return "pwned"}}}. The message constructor copies this __proto__ property onto the message instance, modifying its prototype chain. If downstream code calls toString() on the message or performs instanceof checks expecting the original prototype, the attacker's injected prototype is invoked instead.

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

Prototype injection in protobufjs generated message constructors allows attackers controlling plain objects passed to message constructors to modify the prototype chain of individual message instances via an enumerable __proto__ property. Affects protobufjs versions 7.5.5 and earlier, and 8.0.0-8.0.1. This is a per-instance prototype pollution issue (not global) with impact dependent on downstream application behavior such as inherited property reliance or instanceof checks. No active exploitation confirmed; no public exploit identified at time of analysis.

RemediationAI

Upgrade to patched versions: protobufjs 7.5.6 or later for the 7.x branch, or 8.0.2 or later for the 8.x branch. Release notes available at https://github.com/protobufjs/protobuf.js/releases/tag/protobufjs-v7.5.6. Interim workaround if immediate upgrade is not feasible: sanitize or validate object keys before passing plain objects to generated message constructors, explicitly rejecting any object with an own __proto__ property using hasOwnProperty('__proto__') checks or by reconstructing the object to exclude prototype-altering keys. Alternatively, use Object.create(null) or other mechanisms to ensure input objects cannot define __proto__ as an own enumerable property. Note that sanitization adds processing overhead and maintainability burden, so patching is strongly preferred.

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 protocol buffer implementation that generates message constructors for binary protobuf encoding/decoding. The vulnerability exists in the message constructor code generation, which copies enumerable properties from a user-supplied plain object without filtering the special __proto__ key. In JavaScript, __proto__ is a special property that defines an object's prototype chain. When an object literal with an own enumerable __proto__ property (e.g., from parsed JSON input via JSON.parse()) is passed to a generated message constructor, the constructor blindly copies this property, causing the resulting message instance to inherit from the attacker-controlled prototype instead of the intended message prototype. This is distinct from global prototype pollution because it affects only the individual message instance, not Object.prototype or shared prototypes. The root cause is classified as CWE-1321 (Improperly Controlled Modification of Object-Prototype Attributes in JavaScript).

Know when Prototype Pollution gets its next vulnerability

  • 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:L/A:N
Red Hat 7.5 HIGH

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
Low
Availability
None

DescriptionGitHub Advisory

Summary

protobufjs generated message constructors copied enumerable properties from a provided properties object without filtering the __proto__ key. If an application constructed a message from an attacker-controlled plain object, an own enumerable __proto__ property could alter the prototype of that individual message instance.

Impact

An attacker who can control the properties object passed to a generated protobufjs message constructor or creation helper may be able to modify the prototype chain of the resulting message instance.

This is a per-instance prototype injection issue. It does not pollute Object.prototype or other global prototypes. The impact depends on downstream application behavior, such as relying on inherited properties, prototype methods, or instanceof checks for message objects.

Applications that only decode binary protobuf data, or that construct messages from trusted application-defined objects, are not directly affected by this issue.

Preconditions

  • The application must allow an attacker to control or influence a plain object used to construct a protobufjs message.
  • The object must contain an own enumerable __proto__ property, for example from parsed JSON input.
  • The application must pass that object to a generated message constructor or creation helper that copies arbitrary enumerable properties.

Workarounds

Do not pass attacker-controlled plain objects directly to generated message constructors with affected versions. If untrusted JSON input must be accepted, validate or sanitize object keys before constructing messages, and reject __proto__ properties.

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 80% exploitable
Threat Intel
1
1 source
Data Quality
3 sources
Confidence: Low
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.

Affected Products (CPE)GitHub Advisory

pkg:npm/protobufjs
pkg:npm/protobufjs
CVE-2026-34621 HIGH POC
8.6 Apr 11

Prototype pollution in Adobe Acrobat Reader versions 24.001.30356, 26.001.21367 and earlier enables arbitrary code execu

CVE-2021-23450 CRITICAL POC
9.8 Dec 17

All versions of package dojo are vulnerable to Prototype Pollution via the setObject function. Rated critical severity (

CVE-2024-56059 CRITICAL
9.8 Dec 18

Prototype pollution in the farinspace Partners WordPress plugin (versions up to and including 0.2.0) enables remote unau

CVE-2021-23383 CRITICAL POC
9.8 May 04

The package handlebars before 4.7.7 are vulnerable to Prototype Pollution when selecting certain compiling options to co

CVE-2020-7788 CRITICAL POC
9.8 Dec 11

This affects the package ini before 1.3.6. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitabl

CVE-2020-28271 CRITICAL POC
9.8 Nov 12

Prototype pollution vulnerability in 'deephas' versions 1.0.0 through 1.0.5 allows attacker to cause a denial of service

CVE-2023-38894 CRITICAL POC
9.8 Aug 16

A Prototype Pollution issue in Cronvel Tree-kit v.0.7.4 and before allows a remote attacker to execute arbitrary code vi

CVE-2024-24292 CRITICAL POC
9.8 Mar 28

A Prototype Pollution issue in Aliconnect /sdk v.0.0.6 allows an attacker to execute arbitrary code via the aim function

CVE-2023-26121 CRITICAL POC
10.0 Apr 11

All versions of the package safe-eval are vulnerable to Prototype Pollution via the safeEval function, due to improper s

CVE-2021-23449 CRITICAL POC
10.0 Oct 18

This affects the package vm2 before 3.9.4 via a Prototype Pollution attack vector, which can lead to execution of arbitr

CVE-2024-39011 CRITICAL POC
9.8 Jul 30

Prototype Pollution in chargeover redoc v2.0.9-rc.69 allows attackers to execute arbitrary code or cause a Denial of Ser

CVE-2024-38988 CRITICAL POC
9.8 Mar 28

alizeait unflatto <= 1.0.2 was discovered to contain a prototype pollution via the method exports.unflatto at /dist/inde

Vendor StatusVendor

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