Web-серверы и HTTP-прокси-серверы по-прежнему уязвимы к HTTP Request Smuggling

12.08.2020
Web-серверы и HTTP-прокси-серверы по-прежнему уязвимы к HTTP Request Smuggling

Далеко не новая атака HTTP Request Smuggling не теряет свою актуальность. Впервые задокументированная в 2005 году, она с завидной регулярностью всплывает в различных исследованиях. В частности, новым методам этой атаки было посвящено выступление экспертов компании SafeBreach Labs на конференции BlackHat 2020.

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

Атака возможна благодаря тому, что спецификация HTTP-протокола позволяет применять разные способы указания заголовка «Content-Length» и заголовка «Transfer-Encoding». Новые методы используют:

  • поле «Content-Length» с мусорной добавкой, например, «Content-Length abcde: 20», которое разные прокси и Web-серверы интерпретируют по-своему,

  •  различную обработку незаконченного запроса в совокупности с «замусоренным» полем «Content-Length» – Cache poisoning attack для отдельных web-серверов, например, Abyss,

  •  особенности отработки полей в HTTP/1.2 и ModSecurity Core Rule Set (CRS) в серверах, отличных от IIS, Apache и nginx.

В скоуп атаки попадают варианты инфраструктур с серверами и ПО: IIS, Apache, nginx, node.js, Abyss, Tomcat, Varnish, lighttpd, Squid, Caddy, Traefik, HAproxy.

Методами защиты от атаки являются:

  • нормализация HTTP-заголовков,

  • фиксация одного соединения для одного запроса для прокси-серверов,

  • для IIS, Apache и nginx работает Mod_Security + CRS.

«Атаки, подобные HTTP Request Smuggling/Desync, которые по сути своей являются атаками на логику процессора HTTP-протокола, блокируются качественной настройкой межсетевых экранов уровня приложений (WAF) и политик защиты в них. Например, в F5 ASM/AWAF для противодействия данному типу атак в политике защиты веб-приложения включается блокировка запросов с определенными типами нарушений синтаксиса (Chunked request with Content-Length header, Unparsable request content и др.) протокола HTTP в совокупности с включением релевантных сигнатур (HTTP Desync Attack Attempt, HTTP Response Splitting и др.).

Безопасность веб-приложений – непростая тема, поэтому важно внедрение и эксплуатацию WAF доверять профессионалам, которые учтут все особенности web-приложений и инфраструктуры, на которой они развернуты, а также актуальные для них риски», – комментирует главный инженер инженерного центра Angara Professional Assistance (входит в группу компаний Angara) Михаил Смирнов.

Источник: CISOClub