Skip to main content

defaults-deep CVE-2026-54737

| EUVDEUVD-2026-51592 HIGH
Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution) (CWE-1321)
2026-07-31 https://github.com/phun-ky/defaults-deep GHSA-mj3g-7xcc-x4vh
7.3
CVSS 3.1 · Vendor: https://github.com/phun-ky/defaults-deep
Share

Severity by source

Vendor (https://github.com/phun-ky/defaults-deep) PRIMARY
7.3 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
vuln.today AI
7.3 HIGH

Network vector and no privileges required reflect worst-case API exposure; limited C/I/A impact consistent with prototype pollution's indirect, application-dependent consequences.

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

Primary rating from Vendor (https://github.com/phun-ky/defaults-deep).

CVSS VectorVendor: https://github.com/phun-ky/defaults-deep

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
Low

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 31, 2026 - 18:21 vuln.today
Analysis Generated
Jul 31, 2026 - 18:21 vuln.today
CVE Published
Jul 31, 2026 - 17:49 github-advisory
HIGH 7.3

DescriptionCVE.org

Impact

A prototype pollution vulnerability exists in @phun-ky/defaults-deep prior to version 2.0.5.

The library recursively merged user-supplied objects without filtering unsafe property names such as __proto__, constructor, and prototype. An attacker able to supply crafted input could cause properties to be written to Object.prototype, resulting in prototype pollution affecting all objects within the running process.

Applications that pass untrusted input to defaultsDeep() may be impacted. Depending on how the application uses merged objects, this could lead to unexpected behavior, logic bypasses, denial of service, or other security issues.

Patches

This issue has been fixed in version 2.0.5.

Users should upgrade to version 2.0.5 or later.

The fix prevents unsafe prototype-related keys (__proto__, constructor, and prototype) from being processed during recursive merge operations and includes regression tests covering known prototype pollution vectors.

Workarounds

Users unable to upgrade should ensure that untrusted input is sanitized before being passed to defaultsDeep().

At a minimum, applications should reject or remove the following property names from all levels of user-controlled objects:

  • __proto__
  • constructor
  • prototype

Upgrading to a patched version remains the recommended mitigation.

AnalysisAI

Prototype pollution in @phun-ky/defaults-deep prior to version 2.0.5 allows remote unauthenticated attackers to write arbitrary properties to Object.prototype by supplying crafted objects containing keys such as __proto__, constructor, or prototype to the defaultsDeep() function. The root cause is that the library performed recursive object merging without filtering these special property names, enabling full process-wide prototype chain manipulation. No public exploit code or CISA KEV listing has been identified at time of analysis, but the attack class is well-understood and exploitation is straightforward wherever untrusted input reaches the affected function.

Technical ContextAI

CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes) describes the root cause: the defaultsDeep() function in @phun-ky/defaults-deep (npm package, CPE pkg:npm/@phun-ky_defaults-deep) recursively traverses and merges source objects into a target without sanitizing property names at any depth level. JavaScript's prototype chain means that assigning to target['__proto__']['x'] = value writes to Object.prototype, making the property 'x' visible on every subsequently created plain object in the same V8 process. The same effect can be achieved via the 'constructor' and 'prototype' keys. This pattern is a known class of vulnerabilities in deep-merge utility libraries (e.g., the historical lodash, merge, and jQuery incidents), and the fix - confirmed in the PR diff at commit 807dba9 - adds an explicit blocklist guard for these three key names during recursive traversal.

RemediationAI

Upgrade @phun-ky/defaults-deep to version 2.0.5 or later, which is the vendor-confirmed fixed release available at https://github.com/phun-ky/defaults-deep/releases/tag/2.0.5 and patched via commit 807dba930f8718f9126cad59d949b8fd3539b059. For teams unable to upgrade immediately, the vendor-recommended workaround is to sanitize all untrusted input before passing it to defaultsDeep() by recursively removing or rejecting object keys named __proto__, constructor, and prototype at every nesting level. Note that this workaround is operationally fragile - incomplete traversal depth or missed input vectors will leave the application exposed - so patching to 2.0.5 is strongly preferred. No additional compensating controls (WAF rules, network restrictions) are effective against this vulnerability class since it is a library-level API contract issue, not a network protocol flaw.

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-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-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

CVE-2025-57347 CRITICAL POC
9.8 Sep 24

A vulnerability exists in the 'dagre-d3-es' Node.js package version 7.0.9, specifically within the 'bk' module's addConf

CVE-2025-57321 CRITICAL POC
9.8 Sep 24

A Prototype Pollution vulnerability in the util-deps.addFileDepend function of magix-combine-ex versions thru 1.2.10 all

CVE-2024-45435 CRITICAL POC
9.8 Aug 29

Chartist 1.x through 1.3.0 allows Prototype Pollution via the extend function. Rated critical severity (CVSS 9.8), this

Share

CVE-2026-54737 vulnerability details – vuln.today

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