Cyber Resilience

CVE-2026-24001

DoS in Kpdecker Jsdiff ≤ 3.5.1

Published
22 January 2026
Modified
15 July 2026
Patch / advisory
CVSS Score v4 2.7
Click a component to see what it means
Raw vectorCVSS: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:U/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
EPSS Score 0.0057 45th percentile
Risk Priority 34 floored blend · peak EPSS

CVSS and EPSS are reproduced from their sources (NVD, FIRST EPSS). Risk Priority is our own derived reading, not an NVD score.

Summary

CVE-2026-24001 is a low-severity Uncontrolled Resource Consumption (CWE-400) vulnerability in Kpdecker Jsdiff. Its CVSS base score is 2.7 (Low).

Operationally, exploitation aligns with the MITRE ATT&CK technique Endpoint Denial of Service (T1499); ranked at the 45th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.

The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SC-5 (Denial-of-service Protection) — see the control section below for these in your framework.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

CVE-2026-24001 is a denial-of-service vulnerability in jsdiff, a JavaScript library for text differencing. In versions prior to 8.0.3, 5.2.2, 4.0.4, and 3.5.1, the parsePatch method enters an infinite loop when processing patches whose filename headers contain line break characters such as \r, \u2028, or \u2029, leading to unbounded memory consumption and process crash. The applyPatch method is similarly affected when called with a string representation of a patch, as it internally invokes parsePatch. Additionally, a related ReDOS issue causes O(n³) parsing time for malicious patch headers containing those characters. Other library methods remain unaffected. The vulnerability is rated 7.5 on CVSS 3.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) and maps to CWE-400 (Uncontrolled Resource Consumption) and CWE-1333 (Inefficient Regular Expression Complexity).

Attackers can exploit this remotely with no privileges or user interaction by supplying a maliciously crafted patch to applications that invoke parsePatch or applyPatch on untrusted input. No large payloads are required, rendering input size limits ineffective. Even applications generating their own patches may be vulnerable if users can control filename headers, such as by specifying files for diffing. Successful exploitation results in denial of service via memory exhaustion and process termination.

The jsdiff security advisory (GHSA-73rr-hh4g-fpgx) and related GitHub fixes recommend upgrading to versions 8.0.3, 5.2.2, 4.0.4, or 3.5.1, which address both the infinite loop and ReDOS issues (see commit 15a1585230748c8ae6f8274c202e0c87309142f5 and pull request #649). As a workaround, applications should reject patches containing \r, \u2028, or \u2029 characters before parsing.

EU & UK References

Vulnerability Data

jsdiff is a JavaScript text differencing implementation. Prior to versions 8.0.3, 5.2.2, 4.0.4, and 3.5.1, attempting to parse a patch whose filename headers contain the line break characters `\r`, `\u2028`, or `\u2029` can cause the `parsePatch` method to enter an…

more

infinite loop. It then consumes memory without limit until the process crashes due to running out of memory. Applications are therefore likely to be vulnerable to a denial-of-service attack if they call `parsePatch` with a user-provided patch as input. A large payload is not needed to trigger the vulnerability, so size limits on user input do not provide any protection. Furthermore, some applications may be vulnerable even when calling `parsePatch` on a patch generated by the application itself if the user is nonetheless able to control the filename headers (e.g. by directly providing the filenames of the files to be diffed). The `applyPatch` method is similarly affected if (and only if) called with a string representation of a patch as an argument, since under the hood it parses that string using `parsePatch`. Other methods of the library are unaffected. Finally, a second and lesser interdependent bug - a ReDOS - also exhibits when those same line break characters are present in a patch's *patch* header (also known as its "leading garbage"). A maliciously-crafted patch header of length *n* can take `parsePatch` O(*n*³) time to parse. Versions 8.0.3, 5.2.2, 4.0.4, and 3.5.1 contain a fix. As a workaround, do not attempt to parse patches that contain any of these characters: `\r`, `\u2028`, or `\u2029`.

CWE(s)

Related Threats

MITRE ATT&CK Enterprise Techniques

T1499 Endpoint Denial of Service Impact
Adversaries may perform Endpoint Denial of Service (DoS) attacks to degrade or block the availability of services to users.
T1499.001 OS Exhaustion Flood Impact
Adversaries may launch a denial of service (DoS) attack targeting an endpoint's operating system (OS).
T1498 Network Denial of Service Impact
Adversaries may perform Network Denial of Service (DoS) attacks to degrade or block the availability of targeted resources to users.
T1499.002 Service Exhaustion Flood Impact
Adversaries may target the different network services provided by systems to conduct a denial of service (DoS).
T1499.003 Application Exhaustion Flood Impact
Adversaries may target resource intensive features of applications to cause a denial of service (DoS), denying availability to those applications.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2025-5890Shared CWE-1333, CWE-400
CVE-2026-11478Shared CWE-1333, CWE-400
CVE-2025-58451Shared CWE-1333, CWE-400
CVE-2025-2833Shared CWE-1333, CWE-400
CVE-2026-10691Shared CWE-1333, CWE-400
CVE-2023-34104Shared CWE-1333, CWE-400
CVE-2025-4727Shared CWE-1333, CWE-400
CVE-2025-3986Shared CWE-1333, CWE-400
CVE-2026-10291Shared CWE-1333, CWE-400
CVE-2025-5892Shared CWE-1333, CWE-400

Affected Assets

kpdecker
jsdiff
≤ 3.5.1 · 4.0.0 — 4.0.4 · 5.0.0 — 5.2.2

Mitigating Controls

Mitigating Controls (NIST 800-53 r5) AI

Developer testing and evaluation can discover inefficient regex patterns via performance or static analysis.

SC-5 directly limits the effects of resource-exhaustion events that constitute uncontrolled consumption.

SC-6 enforces explicit allocation limits on resources, structurally preventing the weakness from occurring.

Development standards and tools can require safe regex construction and forbid known exponential patterns.

Process isolation confines resource consumption to separate domains, reducing blast radius without stopping the root flaw.

Input validation can constrain data that would otherwise trigger worst-case regex complexity.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.IR-04 mostly match
prevents

Explicitly requires monitoring and maintaining resource capacity, directly addressing uncontrolled consumption to preserve availability.

PR.PS-06 mostly match
prevents

Secure SDLC practices directly prevent inefficient regex via reviews, static analysis, and safe libraries.

DE.CM-09 partial match
prevents

Continuous monitoring of computing resources can detect resource exhaustion but does not itself enforce allocation limits.

ID.RA-01 partial match
prevents

Vulnerability identification processes can discover ReDoS issues in existing code but do not stop their introduction.

PR.IR-03 partial match
prevents

Resilience mechanisms such as avoiding single points of failure indirectly reduce impact of resource exhaustion.

PR.PS-01 partial match
prevents

Hardened configuration baselines can include resource quotas and limits that constrain consumption.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

finds

Resource-utilization monitoring and alerting on bottlenecks or overloads limits the impact of denial-of-service or resource-exhaustion attacks.

finds

Security testing can detect and reject regex patterns with exponential worst-case complexity.

prevents

By continuously monitoring utilization, stress-testing peak loads, and maintaining documented plans to scale or throttle resources, the control directly limits an attacker’s ability to drive a system into uncontrolled resource exhaustion.

finds

Pre-agreed severity-based prioritization and resource allocation during incident triage reduce the likelihood that an attacker-induced resource exhaustion will overwhelm the organization before corrective action is taken.

mitigates

Business-continuity plans that include resource-management controls reduce the likelihood that an attacker can trigger uncontrolled resource consumption by forcing the system into a degraded or fallback state.

mitigates

Defining RTOs and capacity requirements for ICT services during business-impact analysis forces organizations to provision sufficient resources and throttling mechanisms, reducing the likelihood that an attacker can induce denial-of-service through uncontrolled resource consumption.

References