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
View

Attack ChainAIDerived

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

  1. Access
    Send crafted JSON with __proto__ key
  2. Delivery
    Application passes input to defaultsDeep() without sanitization
  3. Exploit
    defaultsDeep() writes to Object.prototype
  4. Execution
    All process objects inherit injected properties
  5. Impact
    Logic bypass or denial of service achieved

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 that the consuming application passes untrusted, user-controlled input to the defaultsDeep() function without prior key sanitization. If the application accepts structured input (e.g., JSON API bodies, query parameters parsed as objects) and feeds it to defaultsDeep() - a common pattern for configuration merging or default-value injection - then remote unauthenticated exploitation is possible (per CVSS PR:N). Exploitation is limited to Node.js applications that (1) import @phun-ky/defaults-deep versions below 2.0.5 and (2) expose an integration path between external input and the defaultsDeep() call. Applications that only pass internal, developer-controlled objects to defaultsDeep() are not exploitable. The vulnerability does not affect browser environments in isolation - it targets server-side Node.js process memory.

Impact

The CVSS 3.1 score of 7.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L) reflects worst-case conditions: a public-facing endpoint that passes raw user input to defaultsDeep() with no prior sanitization, requiring zero authentication or interaction. In practice, real-world risk is substantially conditional - exploitation requires an application integration path where untrusted data reaches the function, which is a non-trivial deployment assumption for a utility library. No EPSS score was provided in the input data, limiting probabilistic exploitation assessment. No CISA KEV listing and no confirmed public POC exist, meaning this is currently theoretical-to-low real-world risk for most deployments. The impact triad (C:L/I:L/A:L) reflects that prototype pollution is rarely a direct RCE primitive but can enable logic bypasses, property injection into framework internals, or denial of service depending on downstream code patterns. For applications that directly proxy API request bodies into defaultsDeep(), the risk elevation is real and immediate.

Exploit ScenarioDerived

An attacker sends a POST request to an application endpoint that accepts JSON, embedding a payload such as {"__proto__": {"isAdmin": true}} or {"constructor": {"prototype": {"polluted": "yes"}}}. If the application passes this body directly to defaultsDeep(), Object.prototype is modified in the running Node.js process, causing every subsequent object property lookup for isAdmin or polluted to return the attacker-injected value, potentially bypassing authorization checks or triggering unexpected application behavior.

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

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

Alert me

AnalysisAIv1 – Jul 31, 2026

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.

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.

Affected VersionsENISA

defaults-deep < 2.0.5

Affected Packages

npm @phun-ky/defaults-deep fix: 2.0.5
euvd defaults_deep fix: 2.0.5

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

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

Technical ContextAI · show details

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.

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

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.

Latest POC

1 public PoC link from github

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

Applications using @phun-ky/defaults-deep are at risk from prototype pollution attacks that could compromise process integrity and enable unauthorized code execution through untrusted input. Patches are available and remediation requires immediate inventory and deployment planning across all affected systems.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Low
niche npm utility library, limited known enterprise adoption
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA CIRCL GitHub VulDB

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 Yes
EPSS 0.3%
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

56
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: +20
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