Обновление nginx 1.31.0 с устранением RCE-уязвимости, эксплуатируемой через HTTP-запрос

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 1437
Зарегистрирован: 20.08.2022

#

Обновление nginx 1.31.0 с устранением RCE-уязвимости, эксплуатируемой через HTTP-запрос
Дата публикации:Wed, 13 May 2026 23:20:09 +0300

Сформирован выпуск основной ветки nginx 1.31.0, в рамках которой продолжается развитие новых возможностей, а также выпуск параллельно поддерживаемой стабильной ветки nginx 1.30.1, в которую вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В обновлениях устранено 6 уязвимостей, наиболее опасная из которых допускает удалённое выполнение кода через отправку специально оформленного HTTP-запроса. Для angie и freenginx на момент написания новости исправления не опубликованы.
Уязвимость (CVE-2026-42945), которой присвоен критический уровень опасности, вызвана переполнением буфера в модуле ngx_http_rewrite_module, которое может быть эксплуатировано для выполнения кода с правами рабочего процесса nginx через отправку HTTP-запроса со специально оформленным URI. Проблема проявляется в конфигурациях с директивой "rewrite", в которой в регулярных выражениях используются подстановки масок при помощи неименованных переменных (например, $1 и $2), при условии, что в заменяющей строке имеется символ "?". Пример уязвимой конструкции:
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last; Выражения с именованными подстановками уязвимости не подвержены. Например, уязвимость не затрагивает конструкции:
rewrite ^/users/(?<user_id>[0-9]+)/profile/(?<section>.*)$ /profile.php?id=$user_id&tab=$section last; Уязвимость присутствует начиная с версии 0.6.27, выпущенной в марте 2008 года. Причиной появления уязвимости стало то, что буфер выделялся с расчётом, что в него будут записаны неэкранированные данные, а фактически копировались данные после выполнения экранирования спецсимволов, размер которых был больше, так как каждый символ "+", "%" и "&" кодировался не одним, а тремя байтами. Подобное рассогласование возникало из-за того, что при наличии в правиле rewrite символа "?" выставлялся флаг "e->is_args", при котором включалось экранирование, но выделение буфера осуществлялось при сброшенном флаге, при котором экранирование не применялось.
Другие уязвимости:
  • CVE-2026-42926 - возможность подстановки данных атакующего в проксируемый запрос при использовании в настройках директивы "proxy_set_body" и обращении к бэкенду через HTTP/2 (proxy_http_version=2). CVE-2026-40701 - обращение к памяти после её освобождения (use-after-free) в модуле ngx_http_ssl_module, возникающее при обработке ответов от DNS-сервера в конфигурациях с директивой "ssl_ocsp". CVE-2026-42946 - чтение из области за пределами буфера в модулях ngx_http_uwsgi_module и ngx_http_scgi_module, возникающее при обработке специально оформленного ответа. Проблема может привести к утечке содержимого памяти рабочего процесса или его аварийному завершению. CVE-2026-42934 - чтение из области за пределами буфера в рабочем процессе, возникающее при обработке ответов с декодированием из кодировки UTF-8 при использовании директивы "charset_map". Проблема может привести к утечке содержимого памяти рабочего процесса или его аварийному завершению. CVE-2026-40460 - уязвимость в реализации протокола HTTP/3, допускающая спуфинг IP-адреса для обхода авторизации или ограничений.
Улучшения, добавленные в выпуске nginx 1.31.0:
  • В состав включён модуль ngx_http_tunnel_module, реализующий возможность работы в виде прокси ("forward proxy"), перенаправляющего запросы на другой сервер при обращении клиента при помощи метода HTTP/1.1 CONNECT. Возможна настройка аутентификации обращения к прокси, используя директивы "auth_basic", "satisfy" и "auth_delay". В блок "upstream" добавлена директива "least_time", включающая метод балансировки нагрузки с передачей запроса серверу с наименьшими средним временем ответа и наименьшим числом активных соединений. В модуль "stream_proxy" добавлена директива "proxy_ssl_alpn" для задания списка протоколов, допустимых в расширении ALPN при подключении к проксируемому серверу. Например: "proxy_ssl_alpn h2 http/1.1". Обеспечено отклонение запросов по протоколам HTTP/2 и HTTP/3, включающим заголовки "Connection", "Proxy-Connection", "Keep-Alive", "Transfer-Encoding", "Upgrade". В модуле ngx_http_dav_module обеспечено отклонение запросов COPY и MOVE с повторяющимися исходным и целевым ресурсом или вложенными коллекциями. Уровень логгирования ошибок SSL "invalid alert", "record layer failure" и "SSL alert number N" понижен с "crit" до "info". В скрипт configure добавлен параметр "--without-http_upstream_sticky_module" для отключения сборки модуля http_upstream_sticky_module (параметр "--without-http_upstream_sticky" объявлен устаревшим).
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=65442

Жизнь за Нер'зула!

Ответить