Новая версия nginx 1.27.0 c устранением 4 уязвимостей в реализации HTTP/3

Представлен первый выпуск новой основной ветки nginx 1.27.0, в рамках которой будет продолжено развитие новых возможностей. Одновременно сформирован выпуск nginx 1.26.1, относящийся к параллельно поддерживаемой стабильной ветке, в которую вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В следующем году на базе основной ветки 1.27.x будет сформирована стабильная ветка 1.28. Код проекта написан на языке Си и распространяется под лицензией BSD.

В новых выпусках устранены 4 уязвимости, затрагивающие экспериментальный модуль ngx_http_v3 (отключён по умолчанию), обеспечивающий поддержку протокола HTTP/3, использующего протокол QUIC в качестве транспорта для HTTP/2. Проблемы проявляются только при активации модуля ngx_http_v3_module и выставлении опции «quic» в директиве «listen». О подверженности уязвимостям форков Angie и FreeNginx пока ничего не сообщается.

Уязвимость CVE-2024-34161 приводит к утечке содержимого памяти рабочего процесса на системах с MTU, выставленным в значение больше 4096 байт. Утечка содержимого памяти возникает в случае отправки кадров CRYPTO, используемых при согласовании соединения, на стадии после отправки клиентом финализирующего сообщения.

Уязвимости CVE-2024-31079, CVE-2024-32760 и CVE-2024-35200 вызваны повреждением памяти и позволяют удалённому атакующему добиться аварийного завершения рабочего процесса nginx через установку специально оформленного сеанса на базе протокола QUIC. При этом для уязвимостей CVE-2024-31079 и CVE-2024-32760 не исключаются и другие последствия атаки (потенциальная возможность выполнения кода атакующего?). Детали не приводятся, но судя по исправлениям в коде уязвимости вызваны обращением к уже освобождённой памяти (use-after-free), неверным выделением памяти под массив, разыменованием нулевого указателя и отсутствием должной проверки размера помещаемых в буфер данных.

Среди не связанных с устранением уязвимостей изменений в nginx 1.27.0:

  • В директивах «proxy_limit_rate», «fastcgi_limit_rate», «scgi_limit_rate» и «uwsgi_limit_rate» добавлена поддержка указания переменных.
  • Снижено потребление памяти при обработке долгоживущих запросов в конфигурациях, в которых используются директивы «gzip», «gunzip», «ssi», «sub_filter» или «grpc_pass».
  • Решены проблемы со сброкой в GCC 14 при использовании опции «—with-atomic».
  • Исправлены ошибки в реализации HTTP/3.

Дополнительно можно отметить публикацию новой основной ветки FreeNginx 1.27.0, форка Nginx, развиваемого Максимом Дуниным, одним из ключевых разработчиков Nginx. FreeNginx позиционируется как некоммерческий проект, обеспечивающий разработку кодовой базы Nginx без корпоративного вмешательства. В новой версии улучшена обработка ошибок во время чтения тела запроса, налажена сборка в NetBSD 10.0 и улучшена запись PID-файлов (в директиву «pid» добавлен параметр «off»).

Источник: opennet.ru