← На главную

Команда depthfirst нашла уязвимость в NGINX для выполнения кода без логина

14.05.2026 17:17 · hackernews

Команда depthfirst обнаружила критическую уязвимость CVE-2026-42945 в модуле ngx_http_rewrite_module сервера NGINX, который действует с 2008 года. Этот баг позволяет выполнить код злоумышленника удаленно без авторизации, если сервер обрабатывает директивы rewrite или set. Вместе с этим найдены еще три проблемы памяти: CVE-2026-42946, CVE-2026-40701 и CVE-2026-42934. Исследователи автономно нашли их в источнике кода NGINX сразу после одной клика по системе анализа безопасности depthfirst. Уязвимость возникает из-за особенностей работы скриптового движка, который использует двухэтапный процесс: сначала вычисляется размер буфера, потом копируются данные. Флаг is_args в главном движке включается, когда замена rewrite содержит знак вопроса, но расчет длины выполняется на новом под-движке с нулевыми значениями. Первый этап видит is_args равным нулю и возвращает длину захвата как есть. Во втором этапе флаг стоит на единице, и система вызывает ngx_escape_uri с флагом NGX_ESCAPE_ARGS, расширяя каждый побитовый символ на три байта. Копирование данных переполняет недообеспеченный буфер в памяти данными URI, которые контролирует атакующий. Эксплуатация использует трюк с перестановкой памяти между запросами, чтобы испортить указатель cleanup соседней структуры ngx_pool_t. Для этого злоумышленник заполняет POST-запросы определенными данными, так как байты URI не могут содержать нули. Указатель перенаправляется на поддельную ngx_pool_cleanup_s, которая вызывает систему при уничтожении пула. Тестирование проводилось на Ubuntu 24.04.3 LTS. Затронуты версии от 0.6.27 до 1.30.0 для Open Source и от R32 до R36 для NGINX Plus. Обновления доступны в версиях 1.31.0, 1.30.1 и специальных патчах R36 P4, R35 P2 и R32 P6. Драйвер системы использует скрипт setup.sh для сборки контейнера и docker compose для запуска уязвимого сервера. Инструмент python3 poc.py позволяет получить shell с помощью команды --shell. Подробнее обо всех деталях бага читайте в технической выписке на официальном сайте.

Читать оригинал →