blaze — это библиотека Scala для построения асинхронных конвейеров с упором на сетевой ввод-вывод. До версий 0.23.18 и 1.0.0-M42 blaze-server может объединять поля трейлера фрагментированного тела HTTP/1.1 в Request.headers. Поскольку поля трейлера контролируются злоумышленником, удаленный клиент, не прошедший проверку подлинности, может вводить произвольные имена и значения заголовков, включая заголовки X-Forwarded-For и внутренние заголовки авторизации, которые фронтальный прокси-сервер очищает из раздела заголовка запроса, минуя решения о доверии на основе заголовков в приложении.
Это затрагивает любое приложение http4s, использующее BlazeServerBuilder через HTTP/1.1, чьи маршруты или промежуточное программное обеспечение доверяют заголовкам набора прокси, включая X-Forwarded-For, X-Real-IP и X-Forwarded-Host. Если фронтальный прокси удаляет или нормализует эти заголовки, но пересылает фрагментированные тела с неповрежденными трейлерами, злоумышленник может подделать IP-адрес клиента для списков разрешений, ограничений скорости или аудита, подделать схему https или внедрить внутренние заголовки авторизации. Также поддерживается расширенный трейлер Connection: close, позволяющий под контролем злоумышленника завершать объединенные серверные соединения.
Эта проблема исправлена в версиях 0.23.18 и 1.0.0-M42.
Показать оригинальное описание (EN)
blaze is a Scala library for building asynchronous pipelines, with a focus on network IO. Prior to 0.23.18 and 1.0.0-M42, blaze-server can merge HTTP/1.1 chunked-body trailer fields into Request.headers. Because trailer fields are attacker-controlled, an unauthenticated remote client can inject arbitrary header names and values, including X-Forwarded-For and internal authorization headers, that a fronting proxy sanitized from the request-header section, bypassing header-based trust decisions in the application. Any http4s application using BlazeServerBuilder over HTTP/1.1 whose routes or middleware trust proxy-set headers, including X-Forwarded-For, X-Real-IP, and X-Forwarded-Host, is affected. If a fronting proxy strips or normalizes those headers but forwards chunked bodies with trailers intact, an attacker can spoof client IP for allow-lists, rate limits, or auditing, forge the https scheme, or inject internal authorization headers. A promoted Connection: close trailer is also honored, allowing attacker-controlled termination of pooled backend connections. This issue is fixed in versions 0.23.18 and 1.0.0-M42.
Характеристики атаки
Последствия
Строка CVSS v3.1