CVE-2026-24001
Fixed in a distro release EPSS <1%CVSS 2.7
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 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`.
Products: kpdecker jsdiff, Red Hat Satellite 6
Fixed upstream
| Ecosystem | Package | Fixed in |
|---|---|---|
| npm | diff | 8.0.3 |
| npm | diff | 5.2.2 |
| npm | diff | 4.0.4 |
| npm | diff | 3.5.1 |
Distro releases
| Release | Package | Fixed in |
|---|---|---|
| Chainguard | actions-runner | 2.331.0-r1 |
| Chainguard | argo-workflows-ui-3.6 | 3.6.17-r0 |
| Chainguard | argo-workflows-ui-3.7 | 3.7.8-r0 |
| Chainguard | code-server | 0 |
| Chainguard | commercial-gitlab-rails-ee-19.1 | 19.1.7-r3 |
| Chainguard | commercial-gitlab-rails-ee-19.2 | 19.2.7-r1 |
| Chainguard | commercial-gitlab-rails-ee-assets-19.1 | no fix |
| Chainguard | commercial-gitlab-rails-ee-assets-19.2 | 0 |
| Chainguard | commercial-gitlab-rails-ee-assets-19.3 | 0 |
| Chainguard | commercial-gitlab-rails-ee-assets-19.4 | 0 |
| Chainguard | commercial-gitlab-rails-ee-assets-19.5 | no fix |
| Chainguard | commercial-gitlab-rails-ee-assets-fips-19.1 | no fix |
| Chainguard | commercial-gitlab-rails-ee-assets-fips-19.2 | 0 |
| Chainguard | commercial-gitlab-rails-ee-assets-fips-19.3 | 0 |
| Chainguard | commercial-gitlab-rails-ee-assets-fips-19.4 | 0 |
| Chainguard | commercial-gitlab-rails-ee-assets-fips-19.5 | no fix |
| Chainguard | commercial-gitlab-rails-ee-fips-19.1 | 19.1.9-r0 |
| Chainguard | commercial-gitlab-rails-ee-fips-19.2 | 19.2.7-r1 |
| Chainguard | commercial-gitlab-rails-ee-fips-19.3 | 19.3.3-r1 |
| Chainguard | drupal-11.3 | 11.3.13-r3 |
| Chainguard | gitlab-rails-ce-18.1 | no fix |
| Chainguard | gitlab-rails-ce-18.5 | no fix |
| Chainguard | gitlab-rails-ce-19.0 | 19.0.10-r0 |
| Chainguard | gitlab-rails-ce-19.1 | 19.1.8-r4 |
| Chainguard | gitlab-rails-ce-19.1 | no fix |
| Chainguard | gitlab-rails-ce-19.2 | 19.2.6-r5 |
| Chainguard | gitlab-rails-ce-19.3 | 19.3.1-r7 |
| Chainguard | gitlab-rails-ce-assets-18.1 | no fix |
| Chainguard | gitlab-rails-ce-assets-18.10 | 0 |
| Chainguard | gitlab-rails-ce-assets-18.11 | 0 |
| Chainguard | gitlab-rails-ce-assets-18.2 | no fix |
| Chainguard | gitlab-rails-ce-assets-18.3 | no fix |
| Chainguard | gitlab-rails-ce-assets-18.4 | no fix |
| Chainguard | gitlab-rails-ce-assets-18.5 | no fix |
| Chainguard | gitlab-rails-ce-assets-18.6 | 0 |
| Chainguard | gitlab-rails-ce-assets-18.7 | 0 |
| Chainguard | gitlab-rails-ce-assets-18.8 | 0 |
| Chainguard | gitlab-rails-ce-assets-18.9 | 0 |
| Chainguard | gitlab-rails-ce-assets-19.0 | 0 |
| Chainguard | gitlab-rails-ce-assets-19.1 | 0 |
| Chainguard | gitlab-rails-ce-assets-19.2 | 0 |
| Chainguard | gitlab-rails-ce-assets-19.3 | 0 |
| Chainguard | gitlab-rails-ce-assets-19.4 | 0 |
| Chainguard | gitlab-rails-ce-assets-19.5 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-18.1 | no fix |
| Chainguard | gitlab-rails-ce-assets-fips-18.10 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-18.11 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-18.2 | no fix |
| Chainguard | gitlab-rails-ce-assets-fips-18.3 | no fix |
| Chainguard | gitlab-rails-ce-assets-fips-18.4 | no fix |
| Chainguard | gitlab-rails-ce-assets-fips-18.5 | no fix |
| Chainguard | gitlab-rails-ce-assets-fips-18.6 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-18.7 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-18.8 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-18.9 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-19.0 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-19.1 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-19.2 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-19.3 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-19.4 | 0 |
| Chainguard | gitlab-rails-ce-assets-fips-19.5 | 0 |
| Chainguard | gitlab-rails-ce-fips-18.1 | no fix |
| Chainguard | gitlab-rails-ce-fips-18.5 | no fix |
| Chainguard | gitlab-rails-ce-fips-19.0 | 19.0.9-r3 |
| Chainguard | gitlab-rails-ce-fips-19.1 | 19.1.8-r4 |
| Chainguard | gitlab-rails-ce-fips-19.2 | 19.2.6-r6 |
| Chainguard | gitlab-rails-ce-fips-19.3 | 19.3.1-r6 |
| Chainguard | graalvm-23-ce-nodejs | no fix |
| Chainguard | graalvm-24-ce-nodejs | 24.0.2-r8 |
| Chainguard | graalvm-25-ce-nodejs | 25.0.1-r3 |
| Chainguard | grafana-12.1 | 12.1.6-r0 |
| Chainguard | grafana-fips-12.1 | 12.1.6-r0 |
| Chainguard | katib-earlystopping | 0.19.0-r31 |
| Chainguard | katib-suggestion-goptuna-compat | no fix |
| Chainguard | katib-suggestion-hyperband | 0.19.0-r31 |
| Chainguard | katib-suggestion-hyperopt | 0.19.0-r31 |
| Chainguard | katib-suggestion-hyperopt | 0.19.0-r40 |
| Chainguard | katib-suggestion-nas-darts | 0.19.0-r31 |
| Chainguard | katib-suggestion-nas-enas | 0.19.0-r31 |
| Chainguard | katib-suggestion-optuna-enas | 0.19.0-r31 |
| Chainguard | katib-suggestion-pbt-enas | 0.19.0-r31 |
| Chainguard | katib-suggestion-skopt-enas | 0.19.0-r31 |
| Chainguard | katib-tfevent-metricscollector | 0.19.0-r31 |
| Chainguard | langfuse-2-worker | 2.95.12-r6 |
| Chainguard | langfuse-3-worker | 3.146.0-r2 |
| Chainguard | langfuse-fips-2-worker | 2.95.12-r6 |
| Chainguard | langfuse-fips-3-worker | 3.147.0-r1 |
| Chainguard | librechat | 0.8.1-r5 |
| Chainguard | npm | 11.8.0-r0 |
| Chainguard | prism | 5.14.3-r2 |
| Chainguard | redisinsight | 3.0.2-r1 |
| Chainguard | renovate | 42.94.1-r0 |
| Chainguard | renovate | 43.2.4-r0 |
| Chainguard | saf | 1.5.3-r1 |
| Chainguard | saf | 1.6.0-r0 |
| Chainguard | semaphore | 2.18.12-r2 |
| Chainguard | sqlpad | 7.5.7-r28 |
| Chainguard | thingsboard-tb-js-executor | 4.3.1.3-r1 |
| Chainguard | thingsboard-tb-js-executor-fips | 4.3.1.3-r1 |
| Chainguard | thingsboard-tb-web-ui | 4.3.1.3-r1 |
| Chainguard | thingsboard-tb-web-ui-fips | 4.3.1.3-r1 |
| Chainguard | tileserver-gl | 5.5.0-r2 |
| Chainguard | tileserver-gl-fips | 5.5.0-r3 |
| Chainguard | ts-patch | 4.0.1-r0 |
| Chainguard | vitess-21 | no fix |
| Chainguard | vitess-22 | 22.0.3-r0 |
| Chainguard | vitess-23 | 23.0.1-r0 |
| Debian 12 | node-diff | no fix |
| Debian 13 | node-diff | no fix |
| Debian 14 | node-diff | 5.2.2~dfsg+~5.2.3-1 |
| Ubuntu 16.04 LTS | node-diff | no fix |
| Ubuntu 18.04 LTS | node-diff | no fix |
| Ubuntu 20.04 LTS | node-diff | no fix |
| Ubuntu 22.04 LTS | node-diff | no fix |
| Ubuntu 24.04 LTS | node-diff | no fix |
| Ubuntu 25.10 | node-diff | no fix |
| Ubuntu 26.04 LTS | node-diff | no fix |
| Ubuntu 26.10 | node-diff | no fix |
| Wolfi | argo-workflows-ui-3.7 | 3.7.8-r0 |
| Wolfi | code-server | 0 |
| Wolfi | katib-earlystopping | 0.19.0-r31 |
| Wolfi | katib-suggestion-goptuna-compat | no fix |
| Wolfi | katib-suggestion-hyperband | 0.19.0-r31 |
| Wolfi | katib-suggestion-hyperopt | 0.19.0-r31 |
| Wolfi | katib-suggestion-hyperopt | 0.19.0-r40 |
| Wolfi | katib-suggestion-nas-darts | 0.19.0-r31 |
| Wolfi | katib-suggestion-nas-enas | 0.19.0-r31 |
| Wolfi | katib-suggestion-optuna-enas | 0.19.0-r31 |
| Wolfi | katib-suggestion-pbt-enas | 0.19.0-r31 |
| Wolfi | katib-suggestion-skopt-enas | 0.19.0-r31 |
| Wolfi | katib-tfevent-metricscollector | 0.19.0-r31 |
| Wolfi | langfuse-3-worker | 3.146.0-r2 |
| Wolfi | npm | 11.8.0-r0 |
| Wolfi | prism | 5.14.3-r2 |
| Wolfi | renovate | 43.2.4-r0 |
| Wolfi | renovate | 42.94.1-r0 |
| Wolfi | saf | 1.6.0-r0 |
| Wolfi | saf | 1.5.3-r1 |
| Wolfi | sqlpad | 7.5.7-r28 |
| Wolfi | thingsboard-tb-js-executor | 4.3.1.3-r1 |
| Wolfi | thingsboard-tb-web-ui | 4.3.1.3-r1 |
| Wolfi | tileserver-gl | 5.5.0-r2 |
| Wolfi | ts-patch | 4.0.1-r0 |
| Wolfi | vitess-23 | 23.0.1-r0 |