CVE-2026-28794
Prototype Pollution in @orpc/client JSON Deserializer Enables RCE
Publication date: 2026-03-06
Last updated on: 2026-03-10
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| orpc | orpc | to 1.13.6 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-1321 | The product receives input from an upstream component that specifies attributes that are to be initialized or updated in an object, but it does not properly control modifications of attributes of the object prototype. |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
[{'type': 'paragraph', 'content': "CVE-2026-28794 is a prototype pollution vulnerability in the @orpc/client package, specifically in the StandardRPCJsonSerializer's JSON deserialization process. The vulnerability allows unauthenticated remote attackers to inject arbitrary properties into the global Object.prototype by exploiting unsafe handling of object path segments such as '__proto__' and 'constructor' during deserialization."}, {'type': 'paragraph', 'content': 'This injection persists for the lifetime of the Node.js process and affects all objects, enabling attackers to modify or add properties globally. The root cause is the deserializer processing attacker-controlled path segments without validating or sanitizing dangerous JavaScript object keys.'}, {'type': 'paragraph', 'content': 'The issue was fixed by adding explicit checks to ensure each path segment exists as an own property before proceeding with deserialization, preventing access to prototype-related properties and thus blocking prototype pollution.'}] [1, 2]
How can this vulnerability impact me? :
[{'type': 'paragraph', 'content': 'This vulnerability can have severe impacts including privilege escalation, denial of service, and remote code execution.'}, {'type': 'list_item', 'content': "Privilege Escalation / Authorization Bypass: Attackers can inject properties like 'role' into Object.prototype, causing authorization checks (e.g., if (user.role === 'admin')) to be bypassed globally."}, {'type': 'list_item', 'content': 'Denial of Service (DoS): Overwriting built-in methods or corrupting object states can crash the application or cause unhandled exceptions.'}, {'type': 'list_item', 'content': 'Remote Code Execution (RCE): If prototype pollution gadgets exist in the application or dependencies, attackers may execute arbitrary code.'}] [2]
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
I don't know
How can this vulnerability be detected on my network or system? Can you suggest some commands?
[{'type': 'paragraph', 'content': "This vulnerability can be detected by monitoring for suspicious RPC JSON deserialization requests that attempt to inject prototype-related properties such as '__proto__' or 'constructor' into the system."}, {'type': 'paragraph', 'content': "A practical detection method is to look for POST requests targeting RPC endpoints with payloads containing the 'maps' or 'meta' arrays that include dangerous keys like '__proto__' or 'constructor'."}, {'type': 'paragraph', 'content': 'For example, you can use network monitoring tools or web server logs to search for such payloads.'}, {'type': 'list_item', 'content': 'Use curl or similar tools to test if your system is vulnerable by sending a crafted POST request like: \n\ncurl -X POST http://localhost:4321/rpc/planet/create \\\n -F \'data={"json":{},"meta":[],"maps":[["__proto__","role"]]}\' \\\n -F \'0=admin\''}, {'type': 'list_item', 'content': "Search your logs for requests containing '__proto__' or 'constructor' in JSON payloads to identify potential exploitation attempts."}] [2]
What immediate steps should I take to mitigate this vulnerability?
The primary and immediate mitigation step is to upgrade the @orpc/client package to version 1.13.6 or later, where the vulnerability has been patched.
The patch enforces strict validation and sanitization of object keys during JSON deserialization, preventing prototype pollution.
Until the upgrade can be applied, consider implementing network-level protections such as blocking or filtering RPC requests containing suspicious payloads with prototype-related keys.
Additionally, review your application code and dependencies for any prototype pollution gadgets that could be exploited in conjunction with this vulnerability.