CVE-2026-24001
Published: 22 January 2026
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 Application or System Exploitation (T1499.004); ranked at the 6.7th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.
The strongest mitigations our analysis identified are NIST 800-53 SI-10 (Information Input Validation) and SI-2 (Flaw Remediation).
Deeper analysis
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
- 🇪🇺 ENISA EUVD: EUVD-2026-2424
Vulnerability details
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 TechniquesAI
Why these techniques?
CVE enables remote application DoS via crafted input triggering infinite loop/ReDOS and memory exhaustion in jsdiff parsePatch/applyPatch.
CVEs Like This One
Affected Assets
Mitigating Controls
Mitigating Controls (NIST 800-53 r5) AI
Flaw remediation directly addresses the vulnerability by requiring timely upgrade of jsdiff to patched versions 8.0.3, 5.2.2, 4.0.4, or 3.5.1 that fix the infinite loop and ReDOS issues.
Information input validation enables rejection of untrusted patches containing disallowed line break characters ( , \u2028, \u2029) in filename or patch headers before invoking parsePatch or applyPatch.
Denial-of-service protection implements resource limits and validation to mitigate memory exhaustion and process crashes from malicious patch parsing.