CVE-2026-54269: protobufjs Name Collision Denial of Service Vulnerability
protobufjs is a widely-used library that converts Protocol Buffer schema definitions into JavaScript code. Versions before 8.6.0 and 7.6.3 contain a flaw where certain field or service names—particularly hasOwnProperty, $type, and rpcCall—can collide with names reserved by protobufjs's internal runtime helpers. When a schema uses these conflicting names, the library may read attacker-controlled data from the schema instead of accessing its own safety mechanisms, potentially causing the application to crash or enter infinite loops during message decoding, validation, or RPC operations.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
- Weaknesses (CWE)
- CWE-674, CWE-754
- Affected products
- 2 configuration(s)
- Published / Modified
- 2026-06-22 / 2026-06-24
NVD description (verbatim)
protobufjs compiles protobuf definitions into JavaScript (JS) functions. Prior to 8.6.0 and 7.6.3, 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. This vulnerability is fixed in 8.6.0 and 7.6.3.
1 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability stems from insufficient name-space isolation in protobufjs's runtime helper generation. The library compiles protobuf descriptors into JavaScript objects, but does not adequately protect against collision with schema-derived field names. Specifically: (1) message fields named 'hasOwnProperty' can shadow the Object prototype method; (2) field or oneof names like '$type' can collide with protobufjs's own type metadata property; (3) service method names that generate a helper named 'rpcCall' can collide with the RPC invocation utility. These collisions cause the runtime to read schema data where it expects internal helper functions or metadata, leading to type confusion or incorrect control flow. The affected code paths include message decoding post-checks, field verification, object conversion, reflected JSON serialization, and RPC helper dispatch—all of which can trigger exceptions or unbounded recursion when helpers are replaced by schema-controlled values.
Business impact
Applications using protobufjs to parse untrusted or attacker-supplied Protocol Buffer schemas face denial-of-service risk. An attacker who can influence or inject a malicious schema definition (whether through a man-in-the-middle attack, compromise of a schema repository, or direct protocol manipulation) can cause the application to crash or hang, disrupting availability. This is particularly concerning for microservices architectures or API gateways that dynamically load schemas, where a single malicious schema could affect many downstream consumers. The impact is limited to availability; no confidentiality or integrity breach is possible.
Affected systems
All applications using protobufjs versions prior to 8.6.0 (8.x branch) or prior to 7.6.3 (7.x branch) are affected. This includes direct use of the protobufjs library and indirect use through the protobufjs-cli tool for code generation. Any system that loads or processes Protocol Buffer schemas from untrusted sources, or that exposes schema loading to user input, is at risk. Organizations using older LTS or pinned versions should verify their exact version and update accordingly.
Exploitability
The vulnerability requires that an attacker can supply or influence a Protocol Buffer schema that will be compiled and used by the affected application. Exploitability depends on the threat model: if schemas are hardcoded and immutable, risk is minimal; if schemas are loaded from external sources, configuration files, or user input, exploitability is high. No authentication or user interaction is required to trigger the flaw once a malicious schema is loaded. The attack is deterministic—specific schema field names will reliably cause the condition. However, the vulnerability has not been added to the CISA KEV catalog, suggesting either limited real-world exploitation or recent discovery.
Remediation
Update protobufjs to version 8.6.0 or later (8.x series) or version 7.6.3 or later (7.x series). Review all code paths that load Protocol Buffer schemas to ensure they validate schema sources and reject schemas from untrusted origins. If schemas must be loaded dynamically, implement schema whitelisting or cryptographic verification. Audit existing schemas for use of the problematic names (hasOwnProperty, $type, rpcCall) and rename fields if found. Consider pinning or strictly version-controlling schema definitions to prevent injection.
Patch guidance
The vendor has released fixes in the 8.6.0 and 7.6.3 releases. Users on the 8.x branch should update to 8.6.0 or later; users on the 7.x branch should update to 7.6.3 or later. Both patches address the name-collision issue by ensuring that internal helpers and metadata properties cannot be shadowed by schema-derived names. Verify the patch version in your package lock file or dependency manager output. If you maintain custom builds or forks of protobufjs, backport the relevant fixes or upgrade to the patched version. Test thoroughly in a staging environment, particularly with any custom or legacy schemas, before deploying to production.
Detection guidance
Monitor for unexpected exceptions or hangs in protobufjs message decoding or RPC dispatch, especially if schemas were recently added or modified. Log schema loading events and their sources; alert if schemas are loaded from unexpected locations. Use static analysis tools to scan .proto files for field names that match the problematic set (hasOwnProperty, $type, rpcCall). In running applications, watch for crashes with stack traces pointing to protobufjs decode, verify, or RPC helper functions. If possible, enable debug logging in protobufjs to trace which schema names are being compiled.
Why prioritize this
Although the CVSS score is moderate (5.3, MEDIUM severity) and limited to denial of service, the vulnerability should be prioritized based on your attack surface. If your organization loads schemas from external sources or user-controlled locations, patch immediately. If schemas are entirely static and vendor-controlled, the risk is lower but still warrants timely patching as a precaution. The fix is straightforward (version bump) and has been available since mid-2026, so delay increases exposure unnecessarily.
Risk score, explained
The CVSS 3.1 score of 5.3 reflects a network-accessible vulnerability (AV:N) with low complexity (AC:L), no privilege requirement (PR:N), and no user interaction (UI:N). The impact is limited to availability (A:L; no confidentiality or integrity impact), resulting in a MEDIUM severity rating. The scope is unchanged (S:U), meaning the impact is confined to the affected component. The score does not account for the attacker's need to inject or influence a schema, which in some contexts may raise or lower practical risk.
Frequently asked questions
Can this vulnerability be exploited remotely without access to the application's schema?
Only if the application loads schemas from a remote or untrusted source (e.g., from a user-supplied file, a network endpoint, or a configuration service). If schemas are embedded in your code or loaded from protected, internal repositories only, remote exploitation is not possible. However, an internal or supply-chain attacker with write access to schema sources could still exploit it.
Does this affect schema definitions written in .proto text format, or only JSON/reflection descriptors?
The vulnerability specifically affects schemas loaded through protobufjs JSON or reflection descriptors at runtime. If you compile .proto files to JavaScript code using protoc or protobufjs code generation tools offline, and then run only the generated code, the risk is lower—though generated code should still be reviewed. The highest risk is applications that load schema definitions dynamically at runtime.
Will simply renaming my existing fields to avoid the problematic names (hasOwnProperty, $type, rpcCall) be a safe workaround?
Renaming fields is a valid temporary workaround if upgrading immediately is not possible, but it is not a long-term solution. You should still upgrade to the patched version, as the underlying issue is a library design flaw. Additionally, other protected names might exist or be added in future versions, so relying on manual avoidance is fragile.
What is the difference between the 7.x and 8.x patched versions, and which should I upgrade to?
Both branches are now patched: 7.6.3 and 8.6.0 respectively. The choice depends on your current version and compatibility requirements. If you are on 7.x and it meets your needs, upgrading within the 7.x branch (to 7.6.3) is lower-risk. If you are on 8.x or need features from 8.x, upgrade to 8.6.0. Review the release notes for breaking changes if jumping major versions.
This analysis is provided for informational purposes only and does not constitute professional security advice. Organizations should conduct their own risk assessment based on their specific environment, threat model, and business context. Patch versions and release dates are based on vendor advisories as of the publication date; verify current versions and availability with the protobufjs project before deploying. No liability is assumed for the accuracy or completeness of this information or for any damages arising from its use or misuse. Source: NVD (public-domain), retrieved 2026-07-28. Analysis generated by SEC.co (claude-haiku-4-5).
Affected vendors
Related vulnerabilities
- CVE-2026-48712HIGHprotobufjs Stack Exhaustion via Recursive Nesting - Denial of Service
- CVE-2025-7005MEDIUMAvast/AVG/Norton Antivirus Denial-of-Service via Malformed PE File
- CVE-2025-7010MEDIUMAvast Antivirus Stack Overflow DoS Vulnerability – VPS Definition Patch Required
- CVE-2025-71382MEDIUMMuPDF EPUB Denial of Service via Uncontrolled CSS Recursion
- CVE-2026-0269MEDIUMPAN-OS Tunnel Traffic Memory Corruption & Firewall Reboot DoS
- CVE-2026-40989MEDIUMSpring Cloud Function Infinite Recursion OOM Vulnerability
- CVE-2026-44740MEDIUMBilly Go Library Denial-of-Service via Input Validation Flaws
- CVE-2026-45664MEDIUMImageMagick MNG Coder Resource Limit Bypass (CVSS 5.3)