Description
oRPC is a tool that helps build APIs that are end-to-end type-safe and adhere to OpenAPI standards. Prior to 1.14.10, the @orpc/zod ZodSmartCoercionPlugin and experimental_ZodSmartCoercionPlugin collect object and record properties in plain objects and resolve shape keys through the prototype chain. A remote client that can reach a procedure with an object or record input can supply __proto__ to replace the prototype of the returned request object, allowing attacker-controlled inherited values to reach application lookups. For object schemas, keys such as constructor, toString, and __proto__ can instead resolve inherited members as Zod schemas and cause an unhandled TypeError before validation. The global Object.prototype, unrelated objects, other requests, and other users are not modified, and the availability effect is limited to crafted requests rather than persistent process-wide state. This issue is fixed in version 1.14.10.
Published: 2026-10-02
Score: 6.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Runtime errors caused by prototype injection
Action: Patch Immediately
AI Analysis

Impact

The defect in oRPC’s @orpc/zod ZodSmartCoercionPlugin allows a malicious client to inject a __proto__ key into an object or record input. When supplied, the plugin replaces the prototype of the internal request object, allowing inherited properties such as constructor, toString, and __proto__ itself to be interpreted as Zod schemas. This coerces the validation framework into processing attacker‑controlled values, which results in an unhandled TypeError before the data is validated. The vulnerability does not modify global Object.prototype, nor does it create persistent changes; the effect is confined to the crafted request and does not influence other users or requests.

Affected Systems

The issue affects any installation of the middleapi:orpc library that includes the @orpc/zod ZodSmartCoercionPlugin or experimental_ZodSmartCoercionPlugin and is running a version earlier than 1.14.10. Applications exposing procedures that accept unsanitized object or record inputs are susceptible until the plugin is updated or removed.

Risk and Exploitability

The reported CVSS score of 6.5 indicates a moderate severity. EPSS data is not available, making it difficult to estimate the likelihood of exploitation, and the vulnerability is not listed in CISA’s KEV catalog. The attack vector is remote: a client that can invoke the affected procedure can send the malicious __proto__ property, leading to a runtime failure. Because the impact is limited to the single request and does not persist across the application state, the risk is contained but still noticeable, especially if unhandled exceptions propagate to external users or logs.

Generated by OpenCVE AI on October 2, 2026 at 22:24 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade oRPC to version 1.14.10 or later, which removes the prototype resolution flaw.
  • If upgrading is not immediately possible, disable the @orpc/zod ZodSmartCoercionPlugin or experimental_ZodSmartCoercionPlugin on endpoints that accept object or record inputs.
  • Introduce request validation that rejects or sanitizes any __proto__ property before it reaches the plugin to prevent prototype manipulation.

Generated by OpenCVE AI on October 2, 2026 at 22:24 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-gcgf-fh7c-8gf2 @orpc/zod: Prototype injection in smart coercion
History

Mon, 05 Oct 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 02 Oct 2026 22:15:00 +0000

Type Values Removed Values Added
First Time appeared Middleapi
Middleapi orpc
Vendors & Products Middleapi
Middleapi orpc

Fri, 02 Oct 2026 20:15:00 +0000

Type Values Removed Values Added
Description oRPC is a tool that helps build APIs that are end-to-end type-safe and adhere to OpenAPI standards. Prior to 1.14.10, the @orpc/zod ZodSmartCoercionPlugin and experimental_ZodSmartCoercionPlugin collect object and record properties in plain objects and resolve shape keys through the prototype chain. A remote client that can reach a procedure with an object or record input can supply __proto__ to replace the prototype of the returned request object, allowing attacker-controlled inherited values to reach application lookups. For object schemas, keys such as constructor, toString, and __proto__ can instead resolve inherited members as Zod schemas and cause an unhandled TypeError before validation. The global Object.prototype, unrelated objects, other requests, and other users are not modified, and the availability effect is limited to crafted requests rather than persistent process-wide state. This issue is fixed in version 1.14.10.
Title @orpc/zod: Prototype injection in smart coercion
Weaknesses CWE-1321
CWE-915
References
Metrics cvssV3_1

{'score': 6.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-05T17:19:02.554Z

Reserved: 2026-10-01T14:20:19.153Z

Link: CVE-2026-103918

cve-icon Vulnrichment

Updated: 2026-10-05T17:18:47.942Z

cve-icon NVD

Status : Deferred

Published: 2026-10-02T20:17:00.067

Modified: 2026-10-06T15:18:12.170

Link: CVE-2026-103918

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-02T22:30:19Z

Weaknesses
  • CWE-1321

    Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')

  • CWE-915

    Improperly Controlled Modification of Dynamically-Determined Object Attributes