PHP2Shell: Read our blog on the critical RCE vulnerabilities affecting 70% of the Internet

CVE-2025-26278: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2025-26278 is a prototype pollution vulnerability in the lib.set function of the npm package dref v0.1.2 that allows unauthenticated remote attackers to cause a Denial of Service (DoS) by supplying a crafted payload. The vulnerability was published on September 25, 2025, and affects all versions of dref up to and including 0.1.2. It is classified as CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes). It carries a CVSS v3.1 base score of 7.5 (High) (Github Advisory).

Technical details

The root cause is improper input validation in the lib.set function (specifically Object.setValue at node_modules/dref/lib/index.js:80:21), which processes deeply nested object property paths without sanitizing keys such as __proto__ (Researcher Gist). An attacker can pass a crafted key like __proto__.pollutedKey to the lib.set function, causing unintended modification of the global Object.prototype shared across all JavaScript objects in the Node.js process. No authentication or user interaction is required, and the attack is conducted over the network. Beyond DoS, the advisory notes that if polluted properties propagate to sensitive Node.js APIs (e.g., exec, eval), the impact could escalate to remote code execution depending on application context (Researcher Gist, OrangeShield PoC).

Impact

The primary confirmed impact is Denial of Service — a remote, unauthenticated attacker can corrupt the global prototype chain of the Node.js application, causing crashes or unexpected behavior across all objects in the process. There is no direct confidentiality or integrity impact in the base case; however, the advisory warns that prototype pollution can escalate to arbitrary command execution if the polluted properties reach sensitive APIs such as exec or eval within the host application (Researcher Gist). The scope of impact depends on how deeply the dref library is integrated into the consuming application.

Exploitability

A public proof-of-concept (PoC) exists in two locations: a researcher gist by tariqhawis and a dedicated PoC repository by OrangeShieldInfos (Researcher Gist, OrangeShield PoC). Despite the availability of PoC code, there is no evidence of active in-the-wild exploitation at this time (Github Advisory). The EPSS score is approximately 0.041–0.145% (35th percentile), indicating a low but non-negligible probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog.

Exploitation steps

  1. Identify target: Locate a Node.js application that uses the dref npm package at version 0.1.2 or earlier, particularly any endpoint that passes user-controlled input to lib.set.
  2. Craft the payload: Construct a key string using prototype pollution syntax, e.g., __proto__.pollutedKey as the property path argument to lib.set.
  3. Trigger the vulnerable function: Send a crafted request to the application endpoint that invokes lib.set(someObj, "__proto__.pollutedKey", <value>) — for example:
(async () => {
  const lib = await import('dref');
  var someObj = {};
  lib.set(someObj, "__proto__.pollutedKey", 123);
  console.log({}.__proto__); // pollutedKey: 123
})();
  1. Achieve DoS: The injected property is now present on Object.prototype, affecting all objects in the Node.js process. Depending on the application, this can cause type errors, infinite loops, or crashes, resulting in service unavailability.
  2. Escalate (conditional): If the application passes prototype-accessible properties to sensitive APIs like child_process.exec or eval, the attacker may escalate to arbitrary code execution (Researcher Gist, OrangeShield PoC).

Indicators of compromise

  • Logs: Node.js application logs showing unexpected TypeError or property-related errors across unrelated code paths; errors referencing Object.prototype or unexpected properties on plain objects.
  • Process: Node.js process crashes or restarts without clear application-level cause; unexpected properties appearing on {}.__proto__ during runtime inspection.
  • Network: Unusual or malformed input to application endpoints that invoke dref's lib.set function, particularly inputs containing __proto__, constructor, or prototype as path segments.
  • File System: Presence of dref version 0.1.2 in node_modules/dref/package.json — confirming the vulnerable version is in use.

Mitigation and workarounds

The GitHub Advisory Database notes that no patched version of dref has been officially released (all versions ≤ 0.1.2 are affected), so the primary recommendation is to remove or replace the dref dependency with an alternative library that safely handles deep object references (Github Advisory). As interim mitigations: (1) implement strict input validation to reject keys containing __proto__, constructor, or prototype before passing them to lib.set; (2) use Object.freeze(Object.prototype) at application startup to prevent prototype modification; (3) monitor and filter user-controlled input reaching the lib.set function. Organizations should audit their dependency trees using tools like npm audit to identify exposure.

Community reactions

The vulnerability was reported by researcher tariqhawis (advisory created December 2024, CVE assigned September 2025) and a separate PoC was published by OrangeShieldInfos (Researcher Gist, OrangeShield PoC). Red Hat and GitLab have both indexed the advisory, indicating awareness in the broader ecosystem (Github Advisory). No significant broader media coverage or vendor statements beyond the advisory have been identified.

Additional resources


Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-whwv-ppvg-jwgxHIGH7.4
  • JavaScript logoJavaScript
  • @veritasacta/verify
NoYesOct 23, 2026
GHSA-q96h-922g-m3h3MEDIUM6.5
  • JavaScript logoJavaScript
  • @zereight/mcp-gitlab
NoYesOct 24, 2026
GHSA-83jp-cppw-c3v6MEDIUMN/A
  • JavaScript logoJavaScript
  • llm-fw
NoYesOct 24, 2026
GHSA-j68c-59h4-h9hgMEDIUMN/A
  • JavaScript logoJavaScript
  • @k2b/cloud
NoYesOct 24, 2026
GHSA-cf8x-9m69-3gg3HIGHN/A
  • JavaScript logoJavaScript
  • bun
NoYesOct 24, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management