Applying a patch with a fuzzFactor can be very very slow
Maintainer antworten meist innerhalb von 1 Tag
@json-open-source arbeitet bereits daran.
Seit 01.10.2026.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- javascript
- Bereich
- security
Rechercherichtung
Beginne bei den Einstiegspunkten applyPatch(...) und applyPatches(...) und verfolge die im Bericht beschriebene Logik zur unscharfen Patch-Zuordnung. Reproduziere die Kontrollfälle und die erstellten high-fuzzFactor-Fälle, um die Verlangsamung zu messen. Als erledigt gilt die Aufgabe, wenn erstellte unscharfe Patches keine übermäßige CPU-Zeit mehr auslösen, während das normale Verhalten bei der unscharfen Anwendung intakt bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Thanks to the following five security researchers for reporting this:
- [email protected] (Ziyue), https://zyy0530.github.io/
- [email protected] (Chenchen), https://7thparkk.github.io/
- [email protected] (Strick), https://str1ckl4nd.github.io/
- [email protected] (Liyi), https://lzhou1110.github.io/
- [email protected] (Maurice), http://maurice.busystar.org/
Finding 1: Fuzzy patch application can cause algorithmic complexity DoS
Affected behavior
applyPatchandapplyPatchessupport fuzzy patch matching. With crafted hunks and a highfuzzFactor, the matching logic can end up exploring many alternatives recursively and spend a large amount of CPU time on a single input.Affected entrypoints
`applyPatch(...)` `applyPatches(...)`Reproduction notes
In our reproduction, a normal control case completed in under 1 ms, while a crafted fuzzy patch took about 7.7 seconds on the same setup:
control time: 0.568181 ms
exploit time: 7737.472789 ms
slowdown: 13617.9717xThe issue appears to come from recursive branch exploration in the fuzzy patch application logic.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 9.2k
- Forks
- 555
- Ø Merge
- 1 T. 9 Std.
- Gemergte PRs (30 T.)
- 5
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus kpdecker/jsdiff
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
Migrating to ESM onlyOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
kpdecker/jsdiff#703 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 45/100
kpdecker/jsdiff#684 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
reversing a text diff?Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
kpdecker/jsdiff#629 · 7 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
kpdecker/jsdiff#624 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in kpdecker/jsdiff
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 73/100
WordPress/create-block-theme#907 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 93/100