Уязвимость в утилите diff3 из состава GNU diffutils позволяет атакующему, контролирующему вывод программы diff, инициировать запись за границы выделенной памяти. Проблема связана с ошибками вычислений при работе с диапазонами строк и уже исправлена разработчиками.
Уязвимость CVE-2026-53910
Ошибка, зарегистрированная под идентификатором CVE-2026-53910, относится к категории переполнения буфера в куче (heap-based buffer overflow). Причиной стали множественные переполнения целых чисел со знаком (signed integer overflow) в алгоритме сопоставления строк. В результате некорректной арифметики формировались искажённые значения, которые затем использовались для выделения памяти и установки границ циклов.
При обработке специально созданного дифф-вывода эти переполнения приводили к тому, что приложение выделяло недостаточный объём памяти. На последующих этапах внутренней обработки это вызывало запись данных за границы выделенного буфера (out-of-bounds writes). Технически уязвимость заключается в том, что злоумышленник может передать утилите diff3 управляемый вывод программы diff. Если атакующий способен указать вредоносный скрипт через параметр "--diff-program", он получает полный контроль над содержимым, которое обрабатывает diff3.
Вектор атаки предполагает, что злоумышленник уже имеет возможность запускать произвольные команды в локальной системе или контролировать вывод некой подконтрольной ему утилиты. Рейтинг CVSS 4.0 для данной уязвимости составляет 2,1 - это низкий уровень опасности. Низкий балл объясняется тем, что атака требует локального доступа (AV:L), не требует привилегий (PR:N), но для успешной эксплуатации необходимо каким-то образом передать утилите вредоносные входные данные. Вектор указывает на частичное воздействие на целостность и доступность (VI:L, VA:L) в изолированной среде.
Разработчики GNU уже выпустили исправление. Оно включено в коммит "9ff04d5b84743e331e80b589335a52c5480d1815". Версии diffutils до 3.12 включительно считаются подверженными уязвимости. Пользователям рекомендуется обновить пакет до версии, содержащей данный коммит, или установить патч из репозитория проекта.
Последствия эксплуатации могут варьироваться от аварийного завершения приложения до удалённого выполнения кода - в зависимости от окружения и схемы защиты памяти. Следует отметить, что diff3 редко используется в интерактивном режиме как самостоятельная утилита, однако его применяют в автоматизированных сценариях слияния файлов, в том числе в системах контроля версий и CI/CD-конвейерах. Несмотря на низкий уровень опасности, интеграция утилиты в автоматизированные процессы повышает потенциальный ущерб в случае, если злоумышленник сможет контролировать входные данные.
Подобные уязвимости в классических UNIX-утилитах, работающих с текстовыми данными, возникают нечасто, но при обнаружении требуют оперативного исправления, поскольку эти инструменты встроены в базовые системные цепочки. Разработчики дистрибутивов, вероятно, включат патч в очередные стабильные обновления. Администраторам систем, где diff3 используется в скриптах слияния или автоматической обработке патчей, стоит отследить поступление обновлений и применить их в кратчайшие сроки.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-53910
- https://cgit.git.savannah.gnu.org/cgit/diffutils.git/commit/?id=73ed7ce85cc78effb94daf028c9af6b4e5252e50
- https://cgit.git.savannah.gnu.org/cgit/diffutils.git/commit/?id=9ff04d5b84743e331e80b589335a52c5480d1815