CVE-2026-44292
Medium · 5.3CVSS
5.3
EPSS
0.3%
Published
May 13, 2026
CISA due date
—
Cloudanix analysis
A flaw in a common software component for handling data could allow an attacker to subtly alter application data, potentially causing unexpected behavior or bypassing security checks.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerability allows for a limited form of prototype pollution in JavaScript applications using protobufjs. An attacker can supply a crafted plain object with an enumerable `__proto__` property during message construction. The library fails to filter this key, leading to the modification of the prototype of the individual message instance being created. This can alter the object's properties and methods, potentially leading to logic flaws, but does not affect the global Object prototype.
Why it matters to the business
Applications processing untrusted data with a vulnerable version of protobufjs may be susceptible to data integrity issues or business logic bypasses. An attacker could manipulate the behavior of specific operations, such as transaction processing or authorization checks, by altering the properties of data objects in-flight. While the CVSS score is medium and direct impact is limited, this could serve as a weak link in the application's security, potentially enabling more complex attacks.
How an attack unfolds
An attacker targets an application endpoint that accepts structured data (e.g., JSON) and uses a vulnerable version of protobufjs for deserialization. The attacker crafts a malicious payload containing a `__proto__` key, which points to an object with properties they wish to inject. When the backend service uses protobufjs to create a message from this payload, the library incorrectly copies the `__proto__` property, thereby polluting the newly created message instance's prototype. Subsequent code that interacts with this object may now execute with unintended logic. For example, a check for `if (message.isAdmin)` could unexpectedly pass if the attacker polluted the prototype with `isAdmin: true`.
How to fix it
Upgrade the protobufjs library to a patched version. The vulnerability is fixed in versions 7.5.6 and 8.0.2. For projects using the 7.x branch, update to version 7.5.6 or later. For projects using the 8.x branch, update to 8.0.2 or later. Update the dependency in your project's `package.json` file and run the appropriate package manager command (e.g., `npm install` or `yarn upgrade`) to install the fixed version.
How to confirm the fix worked
To validate the fix, inspect the project's dependency lock file (e.g., `package-lock.json` or `yarn.lock`) to ensure that the resolved version of `protobufjs` is 7.5.6+ or 8.0.2+. To detect exposure, use a Software Composition Analysis (SCA) tool to scan for vulnerable versions of `protobufjs` across all codebases. A programmatic test can also be written to attempt to construct a message with a `{"__proto__": {"polluted": true}}` payload and assert that the `polluted` property is not present on the resulting object.
Typical attack path
- An attacker identifies an application using a vulnerable version of the protobufjs library to process user-controlled input.
- The attacker crafts a malicious plain object or JSON payload containing a `__proto__` key.
- The payload is sent to the application, for example, via an API endpoint.
- The vulnerable protobufjs library processes the payload and creates a message object.
- During creation, the `__proto__` property from the payload is used to modify the prototype of the new message instance.
- Downstream application logic that relies on the properties of this object now behaves in an unexpected way, potentially leading to a security control bypass or data corruption.
How to detect it
Exploitation attempts can be detected by monitoring network traffic and application logs for inbound requests containing suspicious property names. Specifically, look for JSON or object literals in request bodies that include `__proto__` as a key. While not always malicious, its presence in user-supplied data is a strong indicator of a potential prototype pollution attempt. Correlate these findings with any subsequent application errors or anomalous behavior.
- "__proto__":
What your security team should do
- Use a Software Composition Analysis (SCA) tool to identify all applications using vulnerable versions of protobufjs and prioritize them for patching.
- Instruct development teams to upgrade protobufjs to version 7.5.6+ or 8.0.2+ immediately.
- Recommend development teams implement automated dependency scanning in CI/CD pipelines to prevent the introduction of new vulnerable components.
The record
protobufjs compiles protobuf definitions into JavaScript (JS) functions. Prior to 7.5.6 and 8.0.2, 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. This vulnerability is fixed in 7.5.6 and 8.0.2.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | protobufjs | 0 | 7.5.6 |
| npm | protobufjs | 8.0.0 | 8.0.2 |
Related vulnerabilities
- GHSA-fx83-v9x8-x52w protobuf.js: Prototype injection in generated message constructors Same vulnerability
- CVE-2026-54270 protobufjs compiles protobuf definitions into JavaScript (JS) functions. Also affects protobufjs
- CVE-2026-54269 protobufjs compiles protobuf definitions into JavaScript (JS) functions. Also affects protobufjs
- CVE-2026-48712 protobufjs compiles protobuf definitions into JavaScript (JS) functions. Also affects protobufjs
- GHSA-94rc-8x27-4472 protobufjs: Memory amplification from preserved unknown fields in binary decode Also affects protobufjs
- GHSA-wcpc-wj8m-hjx6 protobufjs: Denial of service through unbounded Any expansion during JSON conversion Also affects protobufjs
- GHSA-f38q-mgvj-vph7 protobufjs : Schema-derived names can shadow runtime-significant properties Also affects protobufjs
- GHSA-jggg-4jg4-v7c6 protobufjs: Denial of Service via unbounded recursive JSON descriptor expansion Also affects protobufjs