Представлен первый выпуск новой основной ветки nginx 1.21.0, в рамках которой будет продолжено развитие новых возможностей. Одновременно подготовлен корректирующий выпуск параллельно поддерживаемой стабильной ветки 1.20.1, в которой вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В следующем году на базе основной ветки 1.21.x будет сформирована стабильная ветка 1.22.
В новых версиях устранена уязвимость(CVE-2021-23017) в коде для разрешения имён хостов в DNS, которая может привести к краху или потенциально к выполнению кода атакующего. Проблема проявляется обработке определённых ответов DNS-сервера, приводящих к однобайтовому переполнению буфера. Уязвимость проявляется только при включении в настройках DNS-резолвера при помощи директивы “resolver“. Для совершения атаки злоумышленник должен иметь возможность подделать UDP-пакеты от DNS-сервера или получить контроль над DNS-сервером. Уязвимость проявляется начиная с выпуска nginx 0.6.18. Для устранения проблемы в старых выпусках можно использовать патч.
Изменения в nginx 1.21.0, не связанные с безопасностью:
- В директивах “proxy_ssl_certificate”, “proxy_ssl_certificate_key” “grpc_ssl_certificate”, “grpc_ssl_certificate_key”, “uwsgi_ssl_certificate” и “uwsgi_ssl_certificate_key” добавлена поддержка переменных.
- В почтовый прокси-модуль добавлена поддержка “pipelining” для передачи нескольких запросов POP3 или IMAP в одном соединении, а также добавлена новая директива “max_errors”, определяющая максимальное число ошибок протокола, после которых соединение будет закрыто.
- В модуль stream добавлен параметр “fastopen”, включающий режим “TCP Fast Open” для слушающих сокетов.
- Решены проблемы с экранированием спецсимволов при автоматическом редиректе с добавлением в конец слэша.
- Решена проблема с закрытием соединений с клиентами при использовании SMTP pipelining.