Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Заставить чужой Wget зависнуть можно одним числом. Спасибо древней технологии из 90-х OPIE/S-KEY

Если для скачивания файлов используется GNU Wget, обычное подключение к FTP-серверу может надолго загрузить процессор компьютера. Специалисты обнаружили в популярной консольной утилите уязвимость CVE-2026-16599 (5,1), которая позволяет удалённой стороне заставить программу вычислить MD5-хеш до примерно 2,1 млрд раз и фактически зависнуть на продолжительное время.

Проблема затрагивает все версии GNU Wget до 1.25.0 включительно. Wget широко применяется для автоматической загрузки файлов и поддерживает HTTP, HTTPS и FTP, поэтому утилиту часто запускают из сценариев, заданий cron и других автоматизированных процессов. Уязвимость находится в механизме FTP-аутентификации OPIE/S-KEY, основанном на одноразовых паролях.

Во время такой аутентификации FTP-сервер отправляет клиенту специальный запрос с порядковым номером. Wget использовал полученное от сервера число как количество повторений при вычислении ключа на основе MD5, но не проверял верхнюю границу значения. В результате сервер мог передать чрезвычайно большое число и заставить клиента последовательно выполнять огромное количество криптографических операций.

По данным CERT Polska, чтобы использовать уязвимость, достаточно контролировать FTP-сервер либо получить возможность перехватывать и изменять FTP-трафик между сервером и клиентом. Если в ответе указать число, близкое к максимальному значению целого типа, Wget может выполнить около 2,1 млрд операций MD5. Вместо быстрого ответа программа надолго занимает процессор и перестаёт нормально выполнять текущую задачу.

Параметр --timeout от такого сценария не спасает. Согласно документации Wget, тайм-ауты контролируют сетевые операции. Как только Wget получает вредоносный запрос, задержка возникает уже внутри вычислительного цикла, поэтому сетевой таймер не прерывает затратную обработку.

Разработчики исправили ошибку предельно прямым способом. В коде Wget порядковый номер OPIE/S-KEY теперь ограничен значением 9999. Если сервер присылает большее число, клиент прекращает процедуру входа вместо запуска огромного цикла вычислений. Исправление внесли 20 июня 2026 года, а CERT Polska раскрыла подробности уязвимости 25 августа, согласовав публикацию с разработчиками.

На момент раскрытия последним опубликованным тегом классической ветки GNU Wget остаётся версия 1.25.0, которую CERT Polska относит к уязвимым. Пользователям и администраторам стоит проверить пакеты своих дистрибутивов и установить сборку с исправлением, как только обновление станет доступно в используемом репозитории.

SecurityLab