Выявлена критичная уязвимость «HaProxy».

9 сентября 2021 г. 12:37
 8298

В балансировщике нагрузки была обнаружена критическая уязвимость в системе безопасности.

В HAProxy, широко используемом балансировщике нагрузки с открытым исходным кодом и прокси-сервере, была обнаружена критическая уязвимость в системе безопасности, которая может быть использована злоумышленниками для «контрабанды» HTTP-запросов, способная привести к несанкционированному доступу к конфиденциальным данным и выполнению произвольных команд, открывая возможность для целого ряда атак.

Отслеживаемая как CVE-2021-40346, уязвимость целочисленного переполнения имеет рейтинг критичности 8.6 по системе оценки CVSS и была устранена в HAProxy версий 2.0.25, 2.2.17, 2.3.14 и 2.4.4.

HTTP Request Smuggling, как следует из названия, является атакой на веб-приложение, которая изменяет способ обработки веб-сайтом последовательностей HTTP-запросов, полученных от более чем одного пользователя. Также называемая десинхронизацией HTTP, эта техника использует преимущества несоответствий в разборе того, как внешние и внутренние серверы обрабатывают запросы от отправителей.

Внешние серверы обычно представляют собой балансировщики нагрузки или обратные прокси-серверы, которые используются веб-сайтами для управления цепочкой входящих HTTP-запросов через одно соединение и перенаправления их на один или несколько внутренних серверов. Поэтому очень важно, чтобы запросы обрабатывались правильно на обоих концах, чтобы серверы могли определить, где заканчивается один запрос и начинается следующий. В противном случае может возникнуть сценарий, при котором вредоносный контент, добавленный к одному запросу, попадает в начало следующего запроса.

Другими словами, из-за проблемы, связанной с тем как внешние и внутренние серверы определяют начало и конец каждого запроса с помощью заголовков Content-Length и Transfer-Encoding, конец вредоносного HTTP-запроса вычисляется неправильно, в результате чего вредоносное содержимое остается необработанным одним сервером, но добавляется в начало следующего входящего запроса в цепочке.

«Атака стала возможной благодаря использованию уязвимости целочисленного переполнения, которая позволила достичь неожиданного состояния в HAProxy при разборе HTTP-запроса - в частности, в логике, которая работает с заголовками Content-Length» - сообщили исследователи из JFrog Security в отчете, опубликованном во вторник.

В потенциальном реальном сценарии атаки данный баг может быть использован для запуска атаки контрабанды HTTP-запросов с целью обхода правил ACL (список контроля доступа), определенных HAProxy, который позволяет пользователям определять пользовательские правила для блокировки вредоносных запросов.

После раскрытия информации авторы HAProxy устранили уязвимость, добавив проверку размера длины имени и значения. «В качестве меры смягчения последствий достаточно проверить, что в любом сообщении присутствует не более одного заголовка content-length» - отметил Вилли Тарро, создатель и ведущий разработчик HAProxy, в коммите на GitHub, опубликованном 3 сентября.

Клиентам, которые не могут обновить программное обеспечение до вышеупомянутых версий, рекомендуется добавить приведенный ниже фрагмент в конфигурацию прокси для защиты от атак:

http-request deny if { req.hdr_cnt(content-length) gt 1 }

http-response deny if { res.hdr_cnt(content-length) gt 1 }

Источник: https://thehackernews.com

Системы Информационной Безопасности