URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 118093
[ Назад ]

Исходное сообщение
"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."

Отправлено opennews , 08-Авг-19 13:13 
Раскрыты (https://portswigger.net/blog/http-desync-attacks-request-smu... детали новой атаки на сайты, использующие модель фронтэнд-бэкенд, например, работающие через сети доставки контента, балансировщики или прокси. Атака позволяет через отправку определённых запросов вклиниваться в содержимое других запросов, обрабатываемых в том же потоке между фронтэндом и бэкендом. Предложенный метод успешно применён для организации атаки, позволяющей перехватывать параметры аутентификации пользователей сервиса PayPal, который выплатил исследователям около 40 тысяч долларов в рамках программы информирования о наличии неисправленных уязвимостей. Атака также применима для сайтов, использующих сеть доставки контента Akamai.


Суть проблемы в том, что фронтэнды и бэкенды зачастую обеспечивают разный уровень поддержки протокола HTTP, но при этом инкапсулируют запросы разных пользователей в общий канал. Для связи принимающего запросы фронтэнда и обрабатывающего запросы бэкенда устанавливается долгоживующее TCP-соединение, через которое транслируются запросы пользователей, передаваемые по цепочке, один следом за другим с разделением средствами протокола HTTP. Для разделения запросов могут использоваться заголовки "Content-Length" (определяет общий размер данных в запросе) и "Transfer-Encoding: chunked (https://ru.wikipedia.org/wiki/Chunked_transfer_encoding)" (позволяет передавать данные по частям, указывая блоки разного размера в формате "{размер}\r\n{блок}\r\n{размер}\r\n{блок}\r\n0").


Проблема возникает если фронтэнд поддерживает только "Content-Length", но игнорирует "Transfer-Encoding: chunked" (например, так поступал CDN Akamai) или наоборот. В случае поддержки Transfer-Encoding: chunked" на обеих сторонах для атаки могут использоваться особенности реализации парсеров HTTP-заголовков (например, когда фронтэнд игнорирует строки вида "Transfer-Encoding: xchunked", " Transfer-Encoding: chunked", "Transfer-Encoding:[tab]chunked", "X: X[\n]Transfer-Encoding: chunked", "Transfer-Encoding[\n]: chunked" или "Transfer-Encoding : chunked", а бэкенд успешно обрабатывает их).


В этом случае атакующий может отправить запрос, в котором одновременно указаны заголовки  "Content-Length" и "Transfer-Encoding: chunked", но размер в "Content-Length"  не соответствует размеру chunked-цепочки, которая меньше фактического значения. Если фронтэнд обработает и перенаправит запрос в соответствии с "Content-Length", а бэкенд будет ожидать завершения блока на основе "Transfer-Encoding: chunked",  то конец данных на основании "Transfer-Encoding: chunked" будет определён раньше и оставшийся хвост запроса атакующего окажется вначале следующего запроса, т.е. атакующий получит возможность прикрепления произвольных данных к началу чужого запроса, переданного следом.


Для определения проблемы  в используемой связке фронтэнд-бэкенд  через фронтэнд можно отправить запрос вида:

   POST /about HTTP/1.1
   Host: example.com
   Transfer-Encoding: chunked
   Content-Length: 4
  
   1
   Z
   Q


Проблема присутствует, если бэкенд сразу не обработает запрос и будет ожидать прихода финального нулевого ограничивающего блока chunked-данных.  Для более полной проверки подготовлена (https://github.com/portswigger/http-request-smuggler) специальная утилита, которая также тестирует возможные методы скрытия заголовка "Transfer-Encoding: chunked" от фронтэнда.

Проведение реальной атаки зависит от возможностей атакуемого сайта, например, при атаке на web-приложение Trello можно подменить начало запроса (подставить данные вида "PUT /1/members/1234... x=x&csrf=1234&username=testzzz&bio=cake") и отправить сообщение, включающее оригинальный запрос стороннего пользователя и указанные в нём Cookie аутентификации. Для атаки на saas-app.com оказалось возможным осуществить подстановку JavaScript-кода в ответ, через его подстановку в один из параметров запроса. Для атаки на redhat.com был использован внутренний обработчик для перенаправления на сайт атакующего (был подставлен запрос вида "POST /search?dest=../assets/idx?redir=//redhat.com@evil.net/ HTTP/1.1").


Применение метода для сетей доставки контента, позволяло просто подменить запрашиваемый сайт через подстановку заголовка "Host:". Атака также применима для организации отравления содержимого систем кэширования контента и извлечения прокешированных конфиденциальных данных. Вершиной применения метода стала организация атаки на PayPal, позволяющей перехватывать пароли, отправляемые пользователями при аутентификации (было осуществлено изменение запроса iframe для выполнения JavaScript в контексте страницы paypal.com/us/gifts, для которой не применялся CSP (Content Security Policy)).

Интересно, что в 2005 году была предложена (https://www.opennet.me/opennews/art.shtml?num=5619) похожая по сути техника подмены запросов, позволяющая подменить данные в кэширующих прокси (Tomcat, squid, mod_proxy) или  обойти блокировки межсетевых экранов через указание нескольких запросов "GET" или "POST" в рамках одного HTTP-сеанса.


URL: https://portswigger.net/blog/http-desync-attacks-request-smu...
Новость: https://www.opennet.me/opennews/art.shtml?num=51242


Содержание

Сообщения в этом обсуждении
"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 13:13 
Очень круто, ребята молодцы. Атака понятная. Почему-то ожидал что при наличии обоих загловков, "Content-Length: x" и "Transfer-Encoding: chunked" бэкэнд должен автоматически отвергать запрос.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено А , 08-Авг-19 21:53 
Ошибки он должен обрабатывать. Но половина этих людей: белковые тела для закрытия вовремя поставленных задач.

У нас был клоун, написал страницу с вводом эл.почты, но не проверял, что ему ввдят что- вменяемое.

И их полно.


"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 09-Авг-19 06:25 
Этот подход имеет право на существование. Проверить что поле email введено корректно нетривиальная задача, так что асептить любой инпут и переложить проверку того что адрес валидный на - SMTP вполне ок. Первый шаг обычно это валидация email, т.е. пользователь который email невалидный или валидный но не существующий получат примерно одинаковый результат.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Онаним , 09-Авг-19 09:10 
Либо очень толсто, либо очень глупо.
Как насчёт символов перевода строки во "введённом адресе" и дополнительных команд SMTP?

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Иваныч , 10-Авг-19 22:51 
В таких случаях 3 вещи:
- Проверяем через RegExp на клиенте;
- Проверяем через RegExp на сервере тоже (ибо никогда не верь клиенту);
- Если просто в голо делать конкатенации строк на сервере (того что пришло с клиента) без проверок и использования экранирования - ССЗБ.

Если нету всех трех вещей - зачем брать в руки редактор?


"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 12-Авг-19 11:25 
Валидность адреса и валидность аргумента SMTP команды — это же разные вещи, речь идет о первом, очевидно что второе должно присутствовать в любом случае.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 09-Авг-19 10:16 
Из за таких проверяющих у меня на некоторых сайтах адрес принимать не хочет.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Alukardd , 12-Авг-19 16:34 
Да-да, оторвать руки всем тем кто запрещает '+' использовать.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 13:19 
Круто! Пойду переведу им денег.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 13:21 
Работает ли это в связке nginx-apache?

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 13:29 
Отправь предложенный POST и проверь

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 14:24 
HTTPшные беды( Ещё один камень в сторону Everything-over-HTTP

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено ы , 08-Авг-19 14:46 
не обижайте веб-макак, на них и так природа отыгралась.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 15:57 
А ты какая макака будешь?

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено ы , 08-Авг-19 16:26 
"меня вообще очень сложно причислить к поэтам" (ц)

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено жека воробьев , 09-Авг-19 12:20 
ну и самомнение у вас

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено letsmac , 08-Авг-19 18:22 
Так легко же настраивается и редиректиться. Быстро сдал проект и свинтил подальше, а дырки вали на адимнов.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено А , 08-Авг-19 22:37 
> один камень в сторону Everything-over-HTTP

Надо тупо не ленится и не жмотится на бюджет разработки.

Первое - это веб-макаки.
Вторые - хамы менеджеры.

)))


"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Hewlett Packard , 08-Авг-19 23:21 
Предлагаете перейти на everything-over-XNNN, заворачивая все в ASN.1?

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено xm , 08-Авг-19 14:35 
Заметьте, если во всей цепочке используется HTTP/2 то проблемы нет.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 14:40 
Именно такой нет, зато потом выяснится что там всё ещё эпичнее и надо всем быстро перейти на http/3 (главное запустить процесс частой смены протоколов).

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено xm , 08-Авг-19 14:45 
HTTP/3 это QUIC который, как известно, реализуется в userland и багов там, вангую, ввиду специфики конкретных реализаций, будут эшелоны.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 17:48 
Использовать HTTP/2 между фронтендом и бэкэндом - глупость несусветная

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 18:27 
Дадада, архитекторы упомянутых в новости CDN тоже так считали. Им повезло, что хакеры оказались в белых шапочках, а то поимели бы их на стопицот лимонов зелени.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено пох. , 11-Авг-19 12:41 
> Заметьте, если во всей цепочке используется HTTP/2 то проблемы нет.

ну да, зачем все эти геморрои со всраиванием в запросы, когда можно просто стать рутом/вебъюзером на cdn через стопиццотую дыру в нескучном бинарном протоколе.


"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено snmp agent , 08-Авг-19 15:28 
А где они берут эти кривые фронтенды? Браузеры вроде бы должны корректно это обрабатывать. Какие-нибудь Android-приложения наверняка что-то системное используют, которое должно быть нормально отлажено и вообще сделано по уму

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Michael Shigorin , 08-Авг-19 17:58 
Фронтэнд здесь -- это вообще не браузер.

// "а Слава Кпсс -- вообще не человек" (ц)


"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 18:28 
А Карл, Маркс, Фридрих и Энгельс - это не муж и жена, а четыре разных человека.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 08-Авг-19 18:30 
> атакующий получит возможность прикрепления произвольных данных к началу чужого запроса

Ыыы... какая прелесть! Сколь изящна эта схема в своей гениальной простоте!


"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено InuYasha , 08-Авг-19 21:20 
Помнится, раньше по такой схеме прикреплялись к чужой очереди на турникеты %)

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Алексей Михайлович , 11-Авг-19 06:09 
И сейчас оно никуда не ушло.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Fedd , 09-Авг-19 14:05 
У админа хорошая память, помнит что в 2005 постил

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 12-Авг-19 17:29 
Довольно типичный подход, когда валят в поток что попало, а потом на стороне сервера это что-попало разбирают формально безо всякого анализа.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 12-Авг-19 17:30 
Защищаться от такого дорого слишком.

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Отправлено Аноним , 29-Авг-19 19:39 
как же юзеры опеннета сгнили.