
Cloud Vulnerability DB
A community-led vulnerabilities database
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).
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).
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.
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.
dref npm package at version 0.1.2 or earlier, particularly any endpoint that passes user-controlled input to lib.set.__proto__.pollutedKey as the property path argument to lib.set.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
})();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.child_process.exec or eval, the attacker may escalate to arbitrary code execution (Researcher Gist, OrangeShield PoC).TypeError or property-related errors across unrelated code paths; errors referencing Object.prototype or unexpected properties on plain objects.{}.__proto__ during runtime inspection.dref's lib.set function, particularly inputs containing __proto__, constructor, or prototype as path segments.dref version 0.1.2 in node_modules/dref/package.json — confirming the vulnerable version is in use.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.
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.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."