Помимо устранения уязвимостей, версия веб-сервера Apache 2.4.58 привносит и небольшое количество нововведений.
Итак, какие же уязвимости закрыла версия 2.4.58? Во-первых, это уязвимость CVE-2023-45802, которая создаёт условия для исчерпания свободной памяти из-за отложенного освобождения памяти после сброса потока HTTP/2 пакетом с флагом RST. Так как память освобождается не сразу после обработки флага RST, а только после закрытия соединения, атакующий может значительно повысить потребление памяти, отправляя новые запросы и сбрасывая их RST-пакетом, но при этом не закрывая соединение.
Во-вторых, уязвимость CVE-2023-43622 — бесконечная блокировка обработки соединения HTTP/2, если оно было открыто с выставлением в 0 начального размера скользящего окна. Уязвимость может использоваться для организации отказа в обслуживании через исчерпание лимита на максимально допустимое число открытых соединений.
В-третьих, это уязвимость в mod_macro под номером CVE-2023-31122, приводящая к чтению данных из области вне выделенного буфера.
Среди нововведений можно отметить следующее:
- В mod_http2 добавлена поддержка использования протокола WebSocket поверх потока в соединении HTTP/2 (RFC 8441). Для включения WebSocket поверх HTTP/2 предложена директива ‘H2WebSockets on|off’;
- В mod_http2 добавлена директива ‘H2EarlyHint name value’ для добавления заголовков в ответ «103 Early Hints»;
- В mod_http2 появилась директива ‘H2ProxyRequests on|off’ для управления включением обработки запросов по протоколу HTTP/2 в конфигурации прокси;
- В mod_http2 добавлена директива ‘H2MaxDataFrameLen n’ для ограничения максимального размера тела ответа в байтах, передаваемого в одном DATA-кадре в HTTP/2. По умолчанию задан лимит в 16КБ;
- Обновлён файл mime.types, в котором расширение «.js» привязано к типу ‘text/javascript’ вместо ‘application/javascript’ и добавлены расширения: «.mjs» (с типом ‘text/javascript’) и «.opus» (‘audio/ogg’). Добавлены MIME-типы и расширения, применяемые в WebAssembly;
- Модуль mod_tls (альтернатива mod_ssl на языке Rust) переведён на использование библиотеки rustls-ffi 0.9.2+;
- В модуль mod_md добавлена директива ‘MDMatchNames all|servernames’ для управления сопоставлением MDomains с содержимым VirtualHosts;
- В модуль mod_md введена директива ‘MDChallengeDns01Version’ для выбора версии протокола ACME, используемого при верификации через DNS;
- В mod_md разрешено использование директивы MDChallengeDns01 для отдельных доменов;
- В mod_dav добавлена директива ‘DavBasePath’ для настройки пути к корню репозитория WebDav;
- В mod_alias появилась директива ‘AliasPreservePath’ для использования в качестве полного пути значения Alias в блоке Location;
- В mod_alias добавлена директива ‘RedirectRelative’, допускающая перенаправление с использованием относительных путей;
- В директиву ErrorLogFormat добавлены спецификаторы формата %{z} и %{strftime-format};
- В mod_deflate введена директива ‘DeflateAlterETag’ для управления изменением ETag при использовании сжатия;
- Проведена оптимизация производительности функции send_brigade_nonblocking();
- В mod_status обеспечено удаление дубликатов ключей «BusyWorkers» и «IdleWorkers», и добавлен новый счётчик «GracefulWorkers».
Скачать свежую версию Apache можно по этой ссылке.
Статьи по теме: