Applying a patch with a fuzzFactor can be very very slow
Los mantenedores suelen responder en 1 día
@json-open-source ya está trabajando en esto.
Desde el 1/10/2026.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- javascript
- Área
- security
Línea de trabajo
Comienza en los puntos de entrada applyPatch(...) y applyPatches(...) y sigue la lógica de coincidencia difusa de parches descrita en el informe. Reproduce los casos de control y los casos high-fuzzFactor preparados para medir la ralentización. Se considera terminado cuando los parches difusos preparados ya no provocan un uso excesivo de CPU, mientras el comportamiento normal de aplicación difusa permanece intacto.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- JavaScript
- Estrellas
- 9.2k
- Forks
- 555
- Merge medio
- 1 d 9 h
- PR fusionados (30 d)
- 5
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de kpdecker/jsdiff
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Migrating to ESM onlyAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
kpdecker/jsdiff#703 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 45/100
kpdecker/jsdiff#684 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
reversing a text diff?Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
kpdecker/jsdiff#629 · 7 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
kpdecker/jsdiff#624 · 6 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de kpdecker/jsdiff
Issues similares
-
Edit: Monumental TV [PY]Abiertochannels:edit check:passed
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 94/100
lidofinance/docs#1033 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día