Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAttacker crafts schema with reserved field or method name
-
DeliverySchema submitted to application accepting untrusted input
-
ExploitApplication loads schema via protobufjs JSON/reflection path
-
InstallClient triggers affected API path (verify/toObject/RPC invocation)
-
C2Runtime reads schema data in place of internal helper
-
ExecuteDeterministic exception or stack-exhausting recursion triggered
-
ImpactDenial of service on affected processing path
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
|
| Exploitation Conditions | Exploitation requires all three of the following conditions to be satisfied simultaneously: (1) The application must run an unpatched version of protobufjs (7.x at or below 7.6.2, or 8.x between 8.0.0 and 8.5.0) or protobufjs-cli (1.x at or below 1.3.2, or 2.x between 2.0.0 and 2.5.0). (2) The application must load or use a schema or protobufjs JSON descriptor containing at least one of three specific reserved names: a field named exactly |
| Impact | The vendor-assigned CVSS 3.1 score of 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L) accurately represents the worst-case network-accessible scenario where an application accepts untrusted schemas from external parties, but it overstates risk for the much more common deployment pattern of fully trusted, pre-compiled schemas. Real-world exploitability is gated behind three concurrent deployment conditions (unpatched version, schema containing a specific reserved name, and the application reaching the precise affected API path), which meaningfully narrows the practical attack surface beyond what the raw CVSS implies. No EPSS score was provided in the intelligence, so exploitation probability cannot be quantified. The vulnerability is not present in CISA KEV, and no public proof-of-concept exploit code has been identified, both of which indicate low current weaponization. The 'RCE' tag in the source metadata is erroneous and should be disregarded - the vendor advisory unambiguously states no code execution path is known. This is a genuine, addressable risk for multi-tenant or API-driven applications that dynamically load user-supplied or third-party protobuf schemas, but represents low operational urgency for applications operating exclusively with trusted, internally-controlled schemas. |
| Exploit ScenarioDerived | An attacker operating against a multi-tenant gRPC gateway that accepts user-supplied .proto schema files submits a service definition containing a method whose generated protobufjs helper resolves to |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 15, 2026
Schema-name shadowing in protobufjs (npm packages protobufjs and protobufjs-cli) enables denial of service when an attacker can supply or influence protobuf schemas containing field or service method names that collide with JavaScript runtime-significant identifiers used by the protobufjs runtime. Affected names - specifically a field named hasOwnProperty, a field or oneof named $type via JSON/reflection descriptors, and service methods whose generated helper resolves to rpcCall - cause the runtime to read schema-controlled data in place of expected internal helpers, producing deterministic exceptions or uncontrolled recursion (CWE-674) across decode, verification, serialization, and RPC invocation paths. No public exploit has been identified and no active exploitation is confirmed; the misleading 'RCE' tag in the intelligence metadata is directly contradicted by the vendor advisory, which explicitly states the issue is not known to allow code execution.
RemediationAI
Upgrade protobufjs to version 7.6.3 (for the 7.x series) or 8.6.0 (for the 8.x series), and upgrade protobufjs-cli to version 1.3.3 (for the 1.x series) or 2.5.1 (for the 2.x series). These fix versions are confirmed by the vendor advisory at https://github.com/protobufjs/protobuf.js/security/advisories/GHSA-f38q-mgvj-vph7. If immediate upgrade is not feasible, the vendor-documented workaround is to reject untrusted schema input entirely - do not load protobuf schemas or protobufjs JSON descriptors from external or user-controlled sources until patched. If untrusted schemas must be accepted, implement pre-load validation that inspects field names, oneof names, and service method generated helper names and rejects any that match hasOwnProperty, $type, or rpcCall; note that this requires understanding protobufjs name-generation logic to enumerate all rpcCall-colliding method names. For applications using only trusted schemas, rename any fields, oneofs, or service methods using the problematic identifiers, or avoid invoking the affected API paths (verify, toObject, reflected JSON serialization, RPC invocation) on types containing those names as a compensating control - though this may limit application functionality.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 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
protobufjs (pkg:npm/protobufjs) is the canonical JavaScript/TypeScript implementation of Protocol Buffers for Node.js and browser environments. The library generates runtime objects and service stubs from schema definitions, attaching internal helpers such as hasOwnProperty (inherited from Object.prototype), $type (reflected type metadata used in JSON serialization), and rpcCall (base RPC service helper) directly onto generated message and service objects. JavaScript's prototype-based property lookup means that if a schema defines a field or method using one of these reserved names, the generated object's own-property assignment shadows the prototype-chain or runtime-assigned helper. When protobufjs subsequently attempts to call what it believes is an internal utility, it instead invokes or reads the schema-derived value, causing either a TypeError (if the value is not callable) or recursive self-invocation leading to stack exhaustion - the class of failure described by CWE-674 (Uncontrolled Recursion). The vulnerability surfaces in verify, toObject, required-field decode post-checks, reflected JSON serialization, and RPC service invocation. Companion package protobufjs-cli (pkg:npm/protobufjs-cli) is also affected because it performs schema loading and code generation using the same library.
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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Network-reachable schema injection requires no authentication; availability impact is partial and scoped to the affected API processing path only, with no confidentiality or integrity impact.
Primary rating from Vendor (https://github.com/protobufjs/protobuf.js).
CVSS VectorVendor: https://github.com/protobufjs/protobuf.js
DescriptionCVE.org
Summary
protobufjs accepted certain schema-derived names that could collide with properties used by protobufjs runtime helpers. The known affected names are fields named hasOwnProperty, field or oneof names such as $type when loaded through protobufjs JSON/reflection descriptors, and service methods whose generated helper name is rpcCall.
When affected message or service types were used, protobufjs could read schema-controlled data where it expected an own-property helper, reflected type metadata, or the base RPC helper. This could cause deterministic exceptions or recursive calls in affected decode post-checks, verification, object conversion, reflected JSON serialization, or protobufjs RPC helper invocation.
Impact
An attacker who can provide or influence protobuf schemas or protobufjs JSON descriptors may be able to make affected message or service types unusable, resulting in denial of service for the affected processing path.
Applications using only trusted schemas are affected only if those schemas contain one of the problematic names and the application reaches the affected API path.
The issue is not known to allow code execution by itself.
Preconditions
- The application must use an affected protobufjs version.
- The application must load or use a schema or protobufjs JSON descriptor containing one of the problematic names:
- a field named
hasOwnProperty, - a field or oneof named
$typethrough protobufjs JSON/reflection descriptor input, - or a service method whose generated helper name is
rpcCall. - The application must reach the affected API path for that name: required-field decode post-checks,
verify, ortoObjectforhasOwnProperty; reflected message JSON serialization for$type; or protobufjs RPC service invocation forrpcCall.
Workarounds
Do not load protobuf schemas or protobufjs JSON descriptors from untrusted sources with affected versions. If untrusted schemas or descriptors must be accepted, validate schema-derived field, oneof, and service method names before loading and reject the problematic names described above.
Applications using trusted schemas can avoid the issue by renaming affected fields or service methods, or by avoiding the affected API path.
Blast Radius
ecosystem impact- 1,832 npm packages depend on protobufjs (158 direct, 1,675 indirect)
Ecosystem-wide dependent count for version 8.0.0.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
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.
EUVD-2026-38307
GHSA-f38q-mgvj-vph7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB