Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-15538

CVE-2026-15538: PrimeReact RCE Vulnerability

CVE-2026-15538 is a remote code execution vulnerability in PrimeReact up to version 10.9.8 affecting the ObjectUtils.mutateFieldData function. This article covers technical details, affected versions, impact, and mitigation.

Published:

CVE-2026-15538 Overview

CVE-2026-15538 is a prototype pollution vulnerability affecting PrimeFaces PrimeReact versions up to 10.9.8. The flaw resides in the ObjectUtils.mutateFieldData function within the component API. Attackers can manipulate the Field argument to trigger improperly controlled modification of object prototype attributes [CWE-94]. The vulnerability is exploitable remotely and requires low privileges.

The maintainers were notified through an issue report but have not responded. This vulnerability only affects product versions that are no longer supported by the maintainer, meaning no official patch is planned.

Critical Impact

Remote attackers with low privileges can pollute JavaScript object prototypes through the Field parameter, potentially leading to application logic tampering, denial of service, or downstream code execution in dependent components.

Affected Products

  • PrimeFaces PrimeReact versions up to and including 10.9.8
  • The vulnerable ObjectUtils.mutateFieldData API function
  • Applications embedding unsupported PrimeReact releases in their frontend stack

Discovery Timeline

  • 2026-07-13 - CVE-2026-15538 published to NVD
  • 2026-07-13 - Last updated in NVD database

Technical Details for CVE-2026-15538

Vulnerability Analysis

The vulnerability exists in ObjectUtils.mutateFieldData, a utility function used by PrimeReact components to mutate object fields based on a supplied Field argument. When the function traverses or assigns properties using a caller-controlled field path, it fails to filter reserved keys such as __proto__, constructor, or prototype.

An attacker who controls the Field value can walk into the base Object.prototype. Any property written there becomes visible to every JavaScript object in the runtime. This class of flaw is categorized as improperly controlled modification of object prototype attributes and maps to [CWE-94] Improper Control of Generation of Code.

Exploitation is network-based and requires only low privileges, with no user interaction. Because the maintainer has marked the affected versions end-of-life, applications running these releases will not receive a vendor fix.

Root Cause

The root cause is missing key sanitization inside ObjectUtils.mutateFieldData. The function accepts a dotted field path and recursively descends into a target object without validating segment names against a denylist. Segments such as __proto__.polluted therefore reach the underlying assignment logic and modify the shared prototype chain.

Attack Vector

An attacker submits a crafted Field value through any application surface that ultimately reaches ObjectUtils.mutateFieldData. Typical entry points include form submissions, JSON API bodies, or component props derived from user-controlled request data. Once the prototype is polluted, downstream logic reading properties on generic objects observes attacker-injected values, which can bypass authorization checks, alter conditional flows, or trigger gadget chains that lead to code execution.

See the GitHub Issue #8553 and VulDB entry for CVE-2026-15538 for additional technical context.

Detection Methods for CVE-2026-15538

Indicators of Compromise

  • Request payloads containing __proto__, constructor.prototype, or prototype tokens in field name parameters
  • Unexpected properties appearing on plain JavaScript objects at runtime, such as {}.polluted === true
  • Frontend errors or altered behavior in PrimeReact components after processing untrusted input
  • Application logs showing calls to ObjectUtils.mutateFieldData with dotted paths originating from user input

Detection Strategies

  • Perform a software composition analysis scan to identify primereact versions at or below 10.9.8 in package.json and package-lock.json files
  • Instrument the browser or Node.js runtime to detect writes to Object.prototype, for example by freezing the prototype with Object.freeze(Object.prototype) in non-production builds and observing thrown errors
  • Deploy web application firewall rules that inspect JSON bodies and query strings for prototype pollution key patterns
  • Review application telemetry for anomalous property access on shared objects following user input processing

Monitoring Recommendations

  • Continuously monitor dependency manifests for vulnerable PrimeReact versions across all frontend repositories
  • Log and alert on WAF matches for prototype pollution signatures on endpoints that feed data to PrimeReact components
  • Track error rates and behavioral deltas in PrimeReact-heavy pages after deployments, which can reveal successful pollution attempts

How to Mitigate CVE-2026-15538

Immediate Actions Required

  • Inventory all applications using PrimeReact and identify instances at version 10.9.8 or earlier
  • Sanitize all user-controlled input paths that flow into ObjectUtils.mutateFieldData, rejecting segments equal to __proto__, constructor, or prototype
  • Freeze Object.prototype at application startup using Object.freeze(Object.prototype) where compatibility allows
  • Deploy WAF rules to block prototype pollution key patterns in inbound requests

Patch Information

No official patch is available. The maintainer has confirmed that affected versions are no longer supported and has not responded to the reported GitHub issue. Organizations should plan migration to a supported major release of PrimeReact or an alternative component library. Consult the PrimeReact repository for current supported versions.

Workarounds

  • Wrap calls to ObjectUtils.mutateFieldData with a validator that rejects field paths containing reserved prototype keys
  • Replace unsupported PrimeReact releases with a currently supported major version or an alternative UI library
  • Convert plain-object data structures passed to PrimeReact components into Map instances or objects created with Object.create(null) to eliminate the prototype chain
  • Apply strict input schemas using libraries such as zod or ajv to enforce allowed field names before they reach component APIs

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.