ЗАГОЛОВИК
В библиотеке probe-image-size до версии 7.4.0 обнаружена уязвимость отказа в обслуживании (CVSS 7.5 HIGH). Из-за неэффективного регулярного выражения SVG-парсер блокирует event loop Node.js при обработке специально сформированных данных. Уязвимость затрагивает все точки входа: probe.sync(), probe(stream) и probe(url).
Подробности
Уязвимость затрагивает пакет nodeca probe-image-size в версиях до 7.4.0. Проблема заключается в регулярном выражении /<[-_.:a-zA-Z0-9][^>]*>/, используемом в файлах lib/parse_sync/svg.js и lib/parse_stream/svg.js. Когда входные данные содержат множество символов «<» без закрывающего «>», регулярное выражение многократно сканирует весь буфер до конца, что приводит к квадратичной сложности обработки. Синхронный парсер (probe.sync()) преобразует и сканирует весь переданный буфер без ограничения на размер входных данных. Потоковый парсер при каждом полученном чанке повторно разбирает весь накопленный SVG-префикс, что позволяет атакующему усилить нагрузку за счёт управления размером чанков. В результате все точки входа — probe.sync(), probe(stream) и probe(url) — могут полностью загрузить CPU и заблокировать event loop Node.js. Это делает возможным отказ в обслуживании для любого сервиса, который обрабатывает SVG-изображения из недоверенных источников: загрузка аватаров, обработка пользовательского контента, превью по URL и т.п. Уязвимости присвоен рейтинг CVSS 7.5 (HIGH).Что делать
Основная рекомендация — обновить probe-image-size до версии 7.4.0 или выше. В этой версии проблема устранена. Если обновление невозможно в короткие сроки, примените компенсирующие меры: — ограничьте размер принимаемых SVG-файлов на уровне приложения или reverse proxy; — валидируйте и санитизируйте входные изображения до передачи в probe-image-size; — не передавайте в probe(url) URL из недоверенных источников без дополнительной проверки; — изолируйте обработку изображений в отдельном процессе или воркере с ограничением по CPU и таймаутами, чтобы блокировка event loop не затрагивала основной сервис; — рассмотрите отказ от парсинга SVG через данную библиотеку, если функциональность не критична. Также рекомендуется мониторить аномальную нагрузку CPU на сервисах, обрабатывающих изображения, как индикатор возможной эксплуатации. Итог CVE-2026-104861 — это классический пример DoS через неэффективный алгоритм (ReDoS-подобная квадратичная сложность) в популярной библиотеке. Уязвимость легко эксплуатируется и не требует аутентификации, если сервис обрабатывает пользовательские SVG. Единственное надёжное решение — обновление до 7.4.0. В качестве временной меры используйте ограничение размера входных данных и изоляцию обработки.Источник: CVE Project (cvelistV5)
