Skip to main content

tRPC CVE-2025-68130

HIGH
Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution) (CWE-1321)
2025-12-16 security-advisories@github.com
8.5
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach Next.js Server Action endpoint
  2. Delivery
    Submit FormData with __proto__ field names
  3. Exploit
    formDataToObject pollutes Object.prototype
  4. Execution
    Injected properties alter application logic
  5. Impact
    Bypass authorization or crash service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the application to use tRPC's experimental experimental_caller / experimental_nextAppDirCaller Next.js App Router adapter with FormData normalization active (the adapter calls formDataToObject(input) when normalizeFormData is set and the input is a FormData instance). The attacker must be able to reach a tRPC mutation exposed as a Next.js Server Action and submit multipart FormData whose field names use bracket/dot notation containing __proto__, constructor, or prototype keys. Limiting factors: this is NOT a default tRPC configuration (the adapter is explicitly experimental), the vulnerable code path exists only in @trpc/server versions >=10.27.0,<10.45.3 and >=11.0.0,<11.8.0, and the vendor assigns PR:L implying the mutation endpoint is reachable at a low privilege level - though whether that specific Server Action requires authentication is application-dependent. No special user interaction beyond submitting the form is needed.

Impact

This is a genuine, prioritizable issue but one that is gated by a specific deployment condition rather than a broadly exposed default. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) scores 8.5 and reflects network reachability, low complexity, and high integrity impact (VI:H/SI:H) consistent with a prototype-pollution-driven authorization bypass, with secondary availability/DoS (VA:L) and confidentiality (VC:L) effects. Countering that severity, the EPSS score is low (0.40%, 32nd percentile), it is NOT on CISA KEV, and exploitation is confined to applications using the experimental experimental_caller / experimental_nextAppDirCaller Next.js App Router adapter - a narrow, non-default configuration. The GitHub Security Advisory includes a concrete, working proof-of-concept (field names such as __proto__[isAdmin]=true), so publicly available exploit code exists, but POC availability is distinct from active exploitation and there is no evidence of exploitation in the wild. Net: real priority for teams running the affected experimental adapter (patch promptly), but low widespread-exploitation urgency otherwise. One signal to verify: the vendor chose PR:L, implying an authenticated/reachable mutation, yet whether a given Server Action endpoint requires authentication is application-specific - teams whose affected mutation is publicly reachable should treat the privilege requirement as effectively PR:N.

Exploit ScenarioDerived

An attacker submits a crafted multipart FormData payload to a Next.js Server Action that is backed by tRPC's experimental nextAppDirCaller, using malicious field names like __proto__[isAdmin]=true or __proto__[role]=superadmin. The vulnerable formDataToObject recursively walks the bracket/dot path without filtering dangerous keys, polluting Object.prototype so that every object in the process inherits attacker-controlled properties, enabling authorization bypass or denial of service. A detailed working proof-of-concept is published in the GitHub Security Advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 13, 2026

Prototype pollution in tRPC's @trpc/server package, specifically within the formDataToObject function used by the experimental Next.js App Router adapter, allows authenticated remote attackers to modify Object.prototype via crafted FormData field names, potentially leading to authorization bypass, denial of service, or other impacts. Affected versions are 10.27.0 through 10.45.2 and 11.0.0 through 11.7.x when using experimental_nextAppDirCaller; fixed in 10.45.3 and 11.8.0. No public exploit code or active exploitation is confirmed at time of analysis, and EPSS is 0.40% (32nd percentile); the vulnerability is gated by the specific deployment condition of using the experimental adapter with FormData normalization enabled.

RemediationAI

Vendor-released patch: upgrade @trpc/server to version 10.45.3 or 11.8.0. For those unable to upgrade immediately, avoid using the experimental experimental_nextAppDirCaller or experimental_caller adapter, or disable the normalizeFormData option if it is not required, as this prevents the vulnerable code path from being invoked. If the adapter must be used, implement input validation to reject FormData field names containing __proto__, constructor, or prototype before they reach the handler. Note that disabling normalization may break functionality if the application expects FormData to be converted to nested objects. Additionally, restrict network access to tRPC mutations exposed as Next.js Server Actions to trusted users. See the vendor advisory at https://github.com/trpc/trpc/security/advisories/GHSA-43p4-m455-4f4j for more details.

Affected Packages

npm @trpc/server fix: 10.45.3, 11.8.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Root cause is CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes). The vulnerable formDataToObject function in @trpc/server (specifically src/unstable-core-do-not-import/http/formDataToObject.ts) processes FormData field names with bracket/dot notation (e.g., user[name]) to build nested objects. Its internal set() function recursively assigns properties without validating dangerous keys such as __proto__, constructor, or prototype. When an attacker submits FormData with a field name like __proto__[isAdmin], the function traverses into Object.prototype and injects properties, polluting all objects. This is only reachable when the application uses tRPC's experimental experimental_caller or experimental_nextAppDirCaller adapter with normalizeFormData enabled, which calls formDataToObject on incoming FormData. The affected package is the npm package @trpc/server in versions >=10.27.0,<10.45.3 and >=11.0.0,<11.8.0. The CVSS vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L) indicates network exploitation with low privileges required, no user interaction, and high integrity impact.

Know when Prototype Pollution gets its next vulnerability

  • 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

Vendor (github) PRIMARY 8.5 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:L/SC:L/SI:H/SA:L
vuln.today AI 7.6 HIGH

Network-reachable FormData submission with low complexity; PR:L reflects a reachable mutation endpoint, with high integrity impact from prototype-pollution authorization bypass and lower confidentiality/availability (DoS) effects.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:L/SC:L/SI:H/SA:L

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
High
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
High
Subsequent system: Availability
Low

DescriptionCVE.org

tRPC allows users to build and consume fully typesafe APIs without schemas or code generation. Starting in version 10.27.0 and prior to versions 10.45.3 and 11.8.0, a A prototype pollution vulnerability exists in @trpc/server's formDataToObject function, which is used by the Next.js App Router adapter. An attacker can pollute Object.prototype by submitting specially crafted FormData field names, potentially leading to authorization bypass, denial of service, or other security impacts. Note that this vulnerability is only present when using experimental_caller / experimental_nextAppDirCaller. Versions 10.45.3 and 11.8.0 fix the issue.

Executive ViewAI

Why It Matters

@trpc/server, the TypeScript API framework embedded in many internally and externally facing Node.js applications, carries a prototype pollution flaw in its experimental Next.js App Router adapter that allows a user with an application account to alter shared object behavior and potentially bypass authorization checks or render a service unavailable. Exposure is limited to teams that have enabled the experimental adapter with FormData normalization, but those deployments are often customer-facing production systems. Leadership should treat this as a contained but genuine integrity risk to application access controls, requiring a coordinated dependency upgrade rather than an emergency outage.

Business Impact: Medium
Compensating Controls

Apply vendor patch. Until the upgrade to @trpc/server 10.45.3 or 11.8.0 is complete, interim mitigations include disabling the experimental Next.js App Router caller (experimental_nextAppDirCaller) or turning off FormData normalization for affected routes, and rejecting or sanitizing FormData field names that contain prototype-related keys such as __proto__, constructor, or prototype before they reach the normalization function.

Threat Intelligence Overview

EPSS Score
0.4%
Top 68% exploitable
Prevalence
Medium
popular TypeScript RPC library, but vulnerable experimental Next.js adapter is niche
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Medium

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2026-34621 HIGH POC
8.6 Apr 11

Prototype pollution in Adobe Acrobat Reader versions 24.001.30356, 26.001.21367 and earlier enables arbitrary code execu

CVE-2021-23450 CRITICAL POC
9.8 Dec 17

All versions of package dojo are vulnerable to Prototype Pollution via the setObject function. Rated critical severity (

CVE-2024-56059 CRITICAL
9.8 Dec 18

Prototype pollution in the farinspace Partners WordPress plugin (versions up to and including 0.2.0) enables remote unau

CVE-2021-23383 CRITICAL POC
9.8 May 04

The package handlebars before 4.7.7 are vulnerable to Prototype Pollution when selecting certain compiling options to co

CVE-2020-7788 CRITICAL POC
9.8 Dec 11

This affects the package ini before 1.3.6. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitabl

CVE-2020-28271 CRITICAL POC
9.8 Nov 12

Prototype pollution vulnerability in 'deephas' versions 1.0.0 through 1.0.5 allows attacker to cause a denial of service

CVE-2023-38894 CRITICAL POC
9.8 Aug 16

A Prototype Pollution issue in Cronvel Tree-kit v.0.7.4 and before allows a remote attacker to execute arbitrary code vi

CVE-2024-24292 CRITICAL POC
9.8 Mar 28

A Prototype Pollution issue in Aliconnect /sdk v.0.0.6 allows an attacker to execute arbitrary code via the aim function

CVE-2023-26121 CRITICAL POC
10.0 Apr 11

All versions of the package safe-eval are vulnerable to Prototype Pollution via the safeEval function, due to improper s

CVE-2021-23449 CRITICAL POC
10.0 Oct 18

This affects the package vm2 before 3.9.4 via a Prototype Pollution attack vector, which can lead to execution of arbitr

CVE-2024-39011 CRITICAL POC
9.8 Jul 30

Prototype Pollution in chargeover redoc v2.0.9-rc.69 allows attackers to execute arbitrary code or cause a Denial of Ser

CVE-2024-38988 CRITICAL POC
9.8 Mar 28

alizeait unflatto <= 1.0.2 was discovered to contain a prototype pollution via the method exports.unflatto at /dist/inde

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy