GNU awk: исправлены четыре уязвимости, одна из которых потенциально вела к выполнению кода

vulnerability

Разработчики проекта GNU выпустили обновление интерпретатора языка программирования awk (gawk) версии 5.4.1, в котором закрыты четыре уязвимости различной степени серьёзности. Одна из них - переполнение буфера в расширении readdir - потенциально могла позволить атакующему добиться выполнения произвольного кода, хотя практическая эксплуатация этого сценария пока не подтверждена. Остальные проблемы ограничиваются аварийным завершением программы или истощением ресурсов операционной системы.

Детали уязвимостей

Уязвимости были обнаружены в исходном коде gawk, охватывают все версии вплоть до 5.4.0 включительно и затрагивают как пакеты из репозиториев дистрибутивов, так и собранные вручную бинарные файлы. Наиболее близка к критической проблема CVE-2026-40553: переполнение стека (stack-based buffer overflow) обнаружено в функции ftype() файла extension/readdir.c. В описании уязвимости указано, что она может привести не только к аварийному завершению процесса, но и к выполнению кода, однако исследователи не смогли подтвердить, насколько реализуем этот вектор. Тем не менее, при локальном доступе и возможности передать специально сформированный скрипт awk злоумышленник теоретически может получить контроль над системой. По шкале CVSS v4.0 этой уязвимости присвоен средний уровень опасности (5.1) - в первую очередь из-за локального вектора атаки и необходимости запуска скрипта пользователем.

Ещё три уязвимости относятся к категориям использования после освобождения и целочисленного переполнения. Уязвимость CVE-2026-40467 зафиксирована в файле io.c в процедуре do_getline_redir(). Ошибка заключается в том, что освобождённая область памяти продолжает использоваться, что в большинстве случаев вызывает аварийное завершение программы. Хотя эксплуатация этого недостатка вряд ли приведёт к утечке данных или выполнению кода, при обработке вредоносного ввода будет потеряна стабильность awk-сценариев.

Две другие проблемы - CVE-2026-40468 и CVE-2026-40469 - находятся в файле builtin.c и связаны с целочисленным переполнением. Первая из них (CVE-2026-40468) потенциально приводит к полному истощению памяти операционной системы: при определённых условиях переполнение позволяет атакующему записать произвольные байты в область кучи (heap) gawk, что может быть использовано для перезаписи метаданных и объектов программы. Этот вектор особенно опасен в многопользовательских средах, где злоумышленник может подать скрипт, потребляющий всю доступную память и тем самым вызывающий отказ в обслуживании. Уязвимости присвоен низкий уровень опасности (2.1 по CVSS v4.0) из-за низкой вероятности успешного угадывания адресов памяти.

Вторая проблема с целочисленным переполнением - CVE-2026-40469 - проявляется в функции do_sub() и затрагивает только 32-битные сборки gawk. На таких платформах переполнение также может привести к перезаписи кучи, но последствия ограничиваются аварийным завершением программы - выполнение кода в данном случае маловероятно. Уровень опасности той же - 5.1 (средний). Примечательно, что 64-битные системы этой уязвимостью не затронуты.

Все четыре уязвимости были обнаружены и сообщены разработчикам gawk до публичного раскрытия. Выпуск версии 5.4.1 стал доступен в репозиториях проекта и в виде исходных кодов 13 июля 2026 года. В официальном бюллетене GNU сообщается, что обновление рекомендуется всем пользователям, независимо от того, используют ли они gawk из репозиториев Linux-дистрибутивов или собрали его самостоятельно.

Для защиты от описанных проблем необходимо как можно скорее обновить gawk до версии 5.4.1. Пользователи дистрибутивов на основе Debian, Red Hat, Arch и других могут получить обновление через штатные менеджеры пакетов после синхронизации зеркал. Тем, кто собирает gawk из исходников, следует загрузить актуальный архив с сайта GNU. Временных обходных мер для частичной защиты не предложено - единственный надёжный способ - обновление. Риск эксплуатации снижается, если администраторы ограничивают выполнение awk-скриптов из непроверенных источников, однако это не исключает атаки через сценарии, которые обрабатывают внешние данные (например, логи или файлы конфигурации).

Эта волна исправлений напоминает, что даже зрелые и широко распространённые утилиты командной строки не застрахованы от ошибок управления памятью. В корпоративной среде, где gawk часто используется в скриптах автоматизации и процессах обработки данных, обновление следует провести в первую очередь. Хотя все уязвимости требуют локального доступа для использования, их совокупность - от отказа в обслуживании до потенциального выполнения кода - делает патч критически важным для систем, где доверенные пользователи могут запускать произвольные awk-сценарии.

Ссылки

Комментарии: 0