The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от 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.ru/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.ru/opennews/art.shtml?num=51242

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +6 +/
Сообщение от Аноним (1), 08-Авг-19, 13:13 
Очень круто, ребята молодцы. Атака понятная. Почему-то ожидал что при наличии обоих загловков, "Content-Length: x" и "Transfer-Encoding: chunked" бэкэнд должен автоматически отвергать запрос.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

И их полно.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

26. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  –1 +/
Сообщение от Аноним (26), 09-Авг-19, 06:25 
Этот подход имеет право на существование. Проверить что поле email введено корректно нетривиальная задача, так что асептить любой инпут и переложить проверку того что адрес валидный на - SMTP вполне ок. Первый шаг обычно это валидация email, т.е. пользователь который email невалидный или валидный но не существующий получат примерно одинаковый результат.
Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

27. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  –1 +/
Сообщение от Онаним (?), 09-Авг-19, 09:10 
Либо очень толсто, либо очень глупо.
Как насчёт символов перевода строки во "введённом адресе" и дополнительных команд SMTP?
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

34. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от Аноним (34), 12-Авг-19, 11:25 
Валидность адреса и валидность аргумента SMTP команды — это же разные вещи, речь идет о первом, очевидно что второе должно присутствовать в любом случае.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

28. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +2 +/
Сообщение от Аноним (28), 09-Авг-19, 10:16 
Из за таких проверяющих у меня на некоторых сайтах адрес принимать не хочет.
Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

35. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от Alukardd (ok), 12-Авг-19, 16:34 
Да-да, оторвать руки всем тем кто запрещает '+' использовать.
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

2. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +1 +/
Сообщение от Аноним (2), 08-Авг-19, 13:19 
Круто! Пойду переведу им денег.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +1 +/
Сообщение от Аноним (3), 08-Авг-19, 13:21 
Работает ли это в связке nginx-apache?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от Аноним (4), 08-Авг-19, 13:29 
Отправь предложенный POST и проверь
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +2 +/
Сообщение от Аноним (7), 08-Авг-19, 14:24 
HTTPшные беды( Ещё один камень в сторону Everything-over-HTTP
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +1 +/
Сообщение от ы (?), 08-Авг-19, 14:46 
не обижайте веб-макак, на них и так природа отыгралась.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

13. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +1 +/
Сообщение от Аноним (13), 08-Авг-19, 15:57 
А ты какая макака будешь?
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

14. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +1 +/
Сообщение от ы (?), 08-Авг-19, 16:26 
"меня вообще очень сложно причислить к поэтам" (ц)
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

29. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от жека воробьев (?), 09-Авг-19, 12:20 
ну и самомнение у вас
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от letsmac (ok), 08-Авг-19, 18:22 
Так легко же настраивается и редиректиться. Быстро сдал проект и свинтил подальше, а дырки вали на адимнов.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

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

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

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

)))

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

24. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от Hewlett Packard (?), 08-Авг-19, 23:21 
Предлагаете перейти на everything-over-XNNN, заворачивая все в ASN.1?
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

8. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от xm (ok), 08-Авг-19, 14:35 
Заметьте, если во всей цепочке используется HTTP/2 то проблемы нет.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +5 +/
Сообщение от Аноним (9), 08-Авг-19, 14:40 
Именно такой нет, зато потом выяснится что там всё ещё эпичнее и надо всем быстро перейти на http/3 (главное запустить процесс частой смены протоколов).
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +3 +/
Сообщение от xm (ok), 08-Авг-19, 14:45 
HTTP/3 это QUIC который, как известно, реализуется в userland и багов там, вангую, ввиду специфики конкретных реализаций, будут эшелоны.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

15. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  –3 +/
Сообщение от Аноним (15), 08-Авг-19, 17:48 
Использовать HTTP/2 между фронтендом и бэкэндом - глупость несусветная
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

18. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +2 +/
Сообщение от Аноним (18), 08-Авг-19, 18:27 
Дадада, архитекторы упомянутых в новости CDN тоже так считали. Им повезло, что хакеры оказались в белых шапочках, а то поимели бы их на стопицот лимонов зелени.
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

12. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от snmp agent (?), 08-Авг-19, 15:28 
А где они берут эти кривые фронтенды? Браузеры вроде бы должны корректно это обрабатывать. Какие-нибудь Android-приложения наверняка что-то системное используют, которое должно быть нормально отлажено и вообще сделано по уму
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +6 +/
Сообщение от Michael Shigorinemail (ok), 08-Авг-19, 17:58 
Фронтэнд здесь -- это вообще не браузер.

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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

19. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +1 +/
Сообщение от Аноним (18), 08-Авг-19, 18:28 
А Карл, Маркс, Фридрих и Энгельс - это не муж и жена, а четыре разных человека.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

21. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +3 +/
Сообщение от InuYasha (?), 08-Авг-19, 21:20 
Помнится, раньше по такой схеме прикреплялись к чужой очереди на турникеты %)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

32. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от Алексей Михайлович (?), 11-Авг-19, 06:09 
И сейчас оно никуда не ушло.
Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

30. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от Fedd (ok), 09-Авг-19, 14:05 
У админа хорошая память, помнит что в 2005 постил
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

36. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от Аноним (36), 12-Авг-19, 17:29 
Довольно типичный подход, когда валят в поток что попало, а потом на стороне сервера это что-попало разбирают формально безо всякого анализа.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

37. "Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в с..."  +/
Сообщение от Аноним (36), 12-Авг-19, 17:30 
Защищаться от такого дорого слишком.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру