Skip to main content

ts-deepmerge EUVDEUVD-2026-37991

| CVE-2026-12644 MEDIUM
Uncaught Exception (CWE-248)
2026-06-19 snyk GHSA-87mf-gv2c-c62c
5.5
CVSS 4.0 · Vendor: snyk
Share

Severity by source

Vendor (snyk) PRIMARY
5.5 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
5.3 MEDIUM

Network-reachable with no authentication required (PR:N); impact is limited to a process crash with no data exposure or integrity change, so C:N/I:N/A:L.

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

Primary rating from Vendor (snyk).

CVSS VectorVendor: snyk

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

4
Patch available
Jun 19, 2026 - 08:46 EUVD
Source Code Evidence Fetched
Jun 19, 2026 - 06:40 vuln.today
Analysis Generated
Jun 19, 2026 - 06:40 vuln.today
CVSS changed
Jun 19, 2026 - 06:22 NVD
5.3 (MEDIUM) 5.5 (MEDIUM)

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 191 npm packages depend on ts-deepmerge (50 direct, 145 indirect)

Ecosystem-wide dependent count for version 8.0.0.

DescriptionCVE.org

Versions of the package ts-deepmerge before 8.0.0 are vulnerable to Uncaught Exception due to the improper handling of built-in Object.prototype methods (such as toString, valueOf). When user-controlled input contains these keys with non-function values, the resulting merged object becomes broken - any string context operation throws a TypeError, crashing the application.

AnalysisAI

Uncaught Exception in ts-deepmerge before 8.0.0 allows unauthenticated remote attackers to crash Node.js applications by supplying JSON payloads that contain Object.prototype method names (e.g., toString, valueOf) mapped to non-function values, causing any subsequent string-context operation on the merged object to throw a TypeError. The vulnerability is distinct from classic prototype pollution - it does not escalate privileges or leak data, but reliably corrupts the merged object's callable methods, making DoS trivially achievable against any network-exposed merge endpoint that accepts untrusted input. A public proof-of-concept exists (GitHub Gist, Snyk SNYK-JS-TSDEEPMERGE-17339141), and the CVSS 4.0 E:P supplemental metric confirms exploit code is available; no confirmed active exploitation (CISA KEV) has been identified at time of analysis.

Technical ContextAI

ts-deepmerge is a TypeScript/JavaScript npm library for recursively merging plain objects, widely used in Node.js applications for configuration merging and data aggregation. The root cause class is CWE-248 (Uncaught Exception): during key iteration in the merge() function, the library previously blocked only three dangerous keys - __proto__, constructor, and prototype - the classic prototype pollution trifecta. It failed to block Object.prototype method keys such as toString, valueOf, hasOwnProperty, isPrototypeOf, propertyIsEnumerable, and toLocaleString. When a caller merges a user-controlled object containing, for example, {"toString": 42}, the merged output object has its toString property overwritten with the integer 42. Any subsequent implicit string coercion - template literals, string concatenation, console.log, JSON serialization paths that call toString - invokes the property as a function, finds a non-callable primitive, and throws a TypeError. Because ts-deepmerge does not catch this, the exception propagates unhandled and crashes the process. The fix commit (305a058 on voodoocreation/ts-deepmerge) introduces a UNSAFE_KEYS Set containing all nine dangerous key names and gates every key assignment through a membership check. The affected CPE is cpe:2.3:a:n/a:ts-deepmerge:*:*:*:*:*:*:*:*.

RemediationAI

Upgrade ts-deepmerge to version 8.0.0 or later, which introduces the UNSAFE_KEYS blocklist covering __proto__, constructor, prototype, toString, valueOf, hasOwnProperty, isPrototypeOf, propertyIsEnumerable, and toLocaleString. The upstream fix is available at https://github.com/voodoocreation/ts-deepmerge/commit/305a05831a462fb2c353d3cbbff55a0733286f8c and the Snyk advisory is at https://security.snyk.io/vuln/SNYK-JS-TSDEEPMERGE-17339141. If an immediate upgrade is not feasible, apply input sanitization before calling merge(): use a JSON schema validator (e.g., ajv with a strict allowlist of permitted keys) to reject any payload containing the nine unsafe key names - this adds a dependency but provides reliable defense. A simpler compensating control is to filter user-supplied objects with a recursive function that deletes keys matching the unsafe set before passing data to merge(); the trade-off is that this silently drops fields, which may introduce data-loss bugs if not handled explicitly. Wrapping merge() calls in try/catch prevents process crashes but does not fix the underlying object corruption and must not be treated as a security remediation.

More in N A

View all
CVE-2024-51092 CRITICAL POC
9.1 May 08

LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr

CVE-2025-15684 MEDIUM POC
5.5 Aug 12

Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han

CVE-2024-45257 HIGH POC
7.3 May 08

A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi

CVE-2025-15687 LOW POC
2.1 Aug 12

Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc

CVE-2025-15686 LOW POC
2.1 Aug 12

Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula

CVE-2025-67888 HIGH POC
7.3 May 08

Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root

CVE-2024-53326 HIGH POC
7.3 May 08

LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(

CVE-2026-38360 CRITICAL POC
9.8 May 08

Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti

CVE-2026-30623 CRITICAL POC
9.8 Jul 15

Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr

CVE-2026-67917 CRITICAL POC
9.8 Aug 17

SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg

CVE-2026-75337 CRITICAL POC
9.8 Aug 27

Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ

CVE-2026-31072 CRITICAL POC
9.8 May 19

Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali

Share

EUVD-2026-37991 vulnerability details – vuln.today

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