Skip to main content

protobuf.js CVE-2026-59876

| EUVDEUVD-2026-42311 MEDIUM
Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution) (CWE-1321)
2026-07-08 GitHub_M GHSA-jfj6-75fj-8934
4.8
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Recon
    Identify service using protobufjs textformat extension
  2. Delivery
    Craft text-format protobuf message with __proto__ map key and attacker value
  3. Exploit
    Deliver payload via network request
  4. Install
    Parser assigns __proto__ via bare property assignment
  5. C2
    Returned map object's prototype chain poisoned
  6. Execute
    Downstream code reads or propagates tampered prototype
  7. Impact
    Confidentiality or integrity impact realized

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

Exploitation requires all of the following conditions simultaneously: (1) the application must explicitly import and use the non-default protobufjs/ext/textformat module - the standard binary protobuf encoding path is not affected; (2) the application must pass attacker-controlled data as input to the text-format parser; (3) the protobuf schema used must define one or more map fields with string keys, enabling the __proto__ key to be reached during parsing; and (4) downstream application code must act on the returned map object in a way that is sensitive to prototype chain modifications (e.g., iterating with for...in, checking for inherited properties, or passing the object to code that uses prototype-inherited values). The CVSS AC:H metric reflects this multi-condition requirement. What limits exploitation: the text-format extension is not imported by default and must be deliberately chosen; the vulnerable code path is isolated to map-key handling in that single extension; and meaningful impact requires prototype-pollution-susceptible downstream patterns that are not universal. Affected versions are strictly 8.2.0-8.6.4 - deployments on earlier or patched releases are not exposed.

Impact

The provided CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N, score 4.8 Medium) is well-calibrated for this vulnerability. The network attack vector reflects that applications receiving protobuf text-format data over the network can be targeted remotely. High attack complexity (AC:H) is appropriate and significant: exploitation requires the target application to have explicitly imported and deployed the non-default Text Format extension, to be parsing attacker-controlled input through that extension, AND for downstream code to behave insecurely in the presence of a poisoned prototype - a confluence of conditions not present in most deployments. The unscoped (S:U) rating is correct since prototype pollution here affects only the parsed object within the same process context. No EPSS score was included in the input data, so exploitation probability cannot be quantified numerically. No CISA KEV listing and no confirmed public POC code further reduce urgency. This is a real but narrow-scope vulnerability: for the majority of protobuf.js consumers using binary protobuf format, there is no exposure whatsoever. Risk is highest for Node.js services that ingest text-format protobuf from untrusted sources and use the result in property enumeration or prototype-inheriting code paths.

Exploit ScenarioDerived

An attacker sends a crafted HTTP request body containing a protobuf text-format payload with a map entry whose key is literally __proto__ to a Node.js service that uses protobufjs/ext/textformat to parse incoming messages. The parser assigns the attacker-supplied value to __proto__ on the returned map object, polluting the JavaScript object prototype chain for that object and any downstream code that inherits or enumerates its properties. If downstream application logic iterates over the map or uses inherited prototype values to make authorization or routing decisions, the attacker may be able to read unintended fields or cause the application to process data under a tampered object model. No public exploit code has been identified at time of analysis.

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

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

Alert me

AnalysisAIv1 – Jul 08, 2026

Prototype pollution in protobuf.js versions 8.2.0 through 8.6.4 allows network-reachable attackers to corrupt JavaScript object prototype chains via the Text Format extension, by supplying a map entry whose key is the reserved JavaScript token __proto__, causing the parser to overwrite the prototype of the returned map object instead of creating a literal own-property entry. Exploitation is constrained by high attack complexity - only applications explicitly using the optional /ext/textformat module and parsing attacker-controlled input are affected - and real-world impact is limited to partial confidentiality and integrity effects in downstream code that inherits or enumerates poisoned prototype properties. No active exploitation has been confirmed (not in CISA KEV) and no public exploit code has been identified at time of analysis.

RemediationAI

Vendor-released patch: 8.6.5 - upgrade the protobufjs npm package to version 8.6.5 or later, available at https://github.com/protobufjs/protobuf.js/releases/tag/protobufjs-v8.6.5. The upstream fix is documented in pull request https://github.com/protobufjs/protobuf.js/pull/2335 and commit 9f97fe413072d3beb52c74e62d88ea8adc9444d8. If immediate patching is not possible, the most effective workaround is to stop using the protobufjs/ext/textformat extension entirely and migrate to the default binary protobuf format, which is unaffected; this may require client-side changes if text-format is used for interoperability. If the text-format extension cannot be disabled, add an input validation layer that rejects or sanitizes map keys matching __proto__, constructor, or prototype before passing data to the parser - note this is a defense-in-depth measure only and should not replace patching.

Affected VersionsENISA

protobuf.js 8.2.0, < 8.6.5

Affected Packages

npm protobufjs fix: 8.6.5
euvd protobuf_js_8_2_0 fix: 8.6.5

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

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

Technical ContextAI · show details

protobuf.js is a widely-used JavaScript/TypeScript library that compiles Protocol Buffer (protobuf) schema definitions into JS functions for serializing and deserializing structured data. The optional Text Format extension (protobufjs/ext/textformat) provides human-readable protobuf serialization, distinct from the default binary wire format. The root cause is CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes - Prototype Pollution): the extension used ordinary bracket-notation property assignment (mapObject[key] = value) when constructing map return objects, without sanitizing keys against JavaScript reserved tokens. When key equals __proto__, the JavaScript engine interprets the assignment as a prototype chain mutation rather than a data property write. Safe alternatives include using Object.create(null) to produce prototype-less maps, using Object.defineProperty with explicit descriptor flags, or explicitly rejecting keys matching __proto__, constructor, and prototype. The affected CPE is cpe:2.3:a:protobufjs:protobuf.js:*:*:*:*:*:*:*:* for the version range 8.2.0-8.6.4.

Know when Protobufjs 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

Vendor (GitHub_M) PRIMARY MEDIUM
NVD 4.8 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
vuln.today AI 4.8 MEDIUM

AV:N for network-deliverable input; AC:H because textformat extension must be in explicit use and downstream code must exhibit prototype-pollution-susceptible patterns; PR:N as no authentication is needed to submit crafted input; no availability impact from prototype pollution alone.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Red Hat 4.8 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorNVD

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

Lifecycle Timeline

1
Patch available
Jul 08, 2026 - 17:01 EUVD

DescriptionNVD

protobufjs compiles protobuf definitions into JavaScript (JS) functions. From 8.2.0 until 8.6.5, the protobufjs Text Format extension parsed string-keyed map entries using ordinary property assignment, allowing a map entry with key __proto__ to change the prototype of the returned map object instead of creating an own map entry in protobufjs/ext/textformat. This issue is fixed in version 8.6.5.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Medium
popular npm library, but vulnerable textformat extension is optional and non-default
Threat Intel
1
1 source
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

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.2%
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
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Vendor StatusVendor

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