Вышло обновление консольного инструмента нечёткого поиска fzf до версии 0.73.1. Разработчики закрыли две уязвимости средней степени опасности, которые могли приводить к аварийному завершению приложения или блокировке HTTP-сервера. Проблемы зарегистрированы в базе CVE под идентификаторами CVE-2026-53432 и CVE-2026-53433.
Детали уязвимостей
Первая уязвимость связана с целочисленным переполнением в функции FuzzyMatchV2. При обработке входной строки длиной около 2 200 000 байт и шаблона длиной 999 байт возникает выход за допустимые границы. Среда выполнения Go обнаруживает некорректные границы среза и немедленно завершает процесс с невосстанавливаемой паникой. Таким образом, потенциальная атака может привести к сбою программы. Уязвимости присвоен идентификатор CVE-2026-53432, классификация CWE-190 (целочисленное переполнение или обёртывание). Вектор CVSSv4.0 оценивает её как среднюю по тяжести (5.6 балла) с локальным доступом и низкой сложностью эксплуатации.
Вторая проблема затрагивает режим работы --listen, в котором fzf выступает в роли однопоточного HTTP-сервера. Обнаружена неэффективная обработка тела запроса из-за повторяющейся конкатенации строк. Алгоритм имеет квадратичную временную сложность O(n²). Специально сформированный POST-запрос с множеством небольших сегментов вызывает чрезмерную загрузку процессора. Поскольку сервер однопоточный, единственный вредоносный запрос монополизирует его и блокирует обработку всех остальных клиентов. Результат - отказ в обслуживании. Этот сценарий описан как CVE-2026-53433, тип CWE-407 (неэффективная алгоритмическая сложность). Оценка CVSSv4.0 - 5.7 балла, средний уровень опасности, требуется привилегия локального запуска.
Обе уязвимости затрагивают версии fzf до 0.73.1 включительно. Инструмент широко используется разработчиками, системными администраторами и продвинутыми пользователями для интерактивного поиска по файлам, истории команд и результатам других команд. Он встраивается в оболочки, редакторы (например, Vim, Neovim) и системы управления версиями. Режим --listen позволяет отправлять данные и команды через HTTP, что удобно для интеграции в веб-интерфейсы и автоматизации. Именно этот режим подвержен DoS-уязвимости.
Обычные пользователи, которые запускают fzf только как локальный фильтр без HTTP-сервера, не подвержены риску эксплуатации второй уязвимости. Однако первая проблема (целочисленное переполнение) потенциально может быть активирована при обработке больших объёмов данных - например, при поиске в файлах размером в несколько мегабайт с использованием длинных шаблонов. На практике комбинация таких параметров встречается редко, но разработчики классифицировали уязвимость как актуальную.
В официальном бюллетене безопасности, опубликованном на странице релиза fzf, рекомендуется как можно скорее обновиться до версии 0.73.1. Патч доступен для всех поддерживаемых платформ (32- и 64-битные системы). Для пользователей, использующих менеджеры пакетов (Homebrew, APT, Scoop), обновление можно выполнить стандартными командами. - "brew upgrade fzf", "apt upgrade fzf", "scoop update fzf". Тем, кто собирает fzf из исходного кода, необходимо скачать новый релиз с GitHub.
Отдельно разработчики советуют обратить внимание на режим --listen. Если не требуется удалённое управление, его лучше отключить. В противном случае после обновления убедиться, что доступ к порту ограничен (например, через файрвол или привязку к локальному адресу 127.0.0.1). Это снизит риск эксплуатации DoS-уязвимости.
Обе проблемы были обнаружены и документированы независимыми исследователями. Сообщество fzf оперативно отреагировало и выпустило исправление. Ситуация демонстрирует, что даже в зрелых и популярных инструментах могут скрываться алгоритмические дефекты, которые при определённых условиях превращаются в уязвимости. Для инструментов с открытым исходным кодом быстрое реагирование и частота релизов остаются ключевыми факторами поддержания безопасности.
Пользователям рекомендуется проверить установленную версию fzf с помощью команды "fzf --version" и при необходимости выполнить обновление. Это защитит систему от потенциальных сбоев и отказов в обслуживании, вызванных эксплуатацией описанных уязвимостей.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-53432
- https://www.cve.org/CVERecord?id=CVE-2026-53433
- https://github.com/junegunn/fzf/commit/7963a2c6586c0b9eaa89b8995de8f0e08cf8a4ce
- https://github.com/junegunn/fzf/commit/ccedd064ca56921a4235219516b3d834f60e7b91