Атака върху фронтенд-бекенд системи, позволяваща вмъкване в външни заявки.

Разкрити детайли на нова атака срещу сайтове, използващи фронтенд-бекенд модел, например, работещи през мрежи за доставка на съдържание, балансировачи или проксита. Атаката позволява чрез изпращане на определени заявки да се намесва в съдържанието на други заявки, обработвани в същия поток между фронтенда и бекенда. Предложеният метод успешно е приложен за организиране на атака, позволяваща прихващането на параметри за удостоверяване на потребителите на услугата PayPal, която е платила на изследователите около 40 хиляди долара в рамките на програмата за информация за наличието на неизправени уязвимости. Атаката е приложима и за сайтове, използващи мрежата за доставка на съдържание Akamai.

Същността на проблема е, че фронтендите и бекендите често осигуряват различни нива на поддръжка на протокола HTTP, но в същото време инкапсулират заявки от различни потребители в общ канал. За връзката между приемащия заявки фронтенд и обработващия заявки бекенд се установява дълготрайно TCP-съединение, през което се предават заявките на потребителите, предавани по веригата една след друга с разделение посредством протокола HTTP. За разделяне на заявките могат да бъдат използвани заглавията „Content-Length“ (определя общия размер на данните в заявката) и „Transfer-Encoding: chunked» (позволява предаване на данни на части, указвайки блокове с различен размер в формата „{размер}\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-данните. За по-пълна проверка подготвена специална утилита, която също тества възможните методи за скриване на заглавието "Transfer-Encoding: chunked" от фронтенда.

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

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

Интересно е, че през 2005 година имаше предложена подобна по същество техника за подмяна на заявки, позволяваща подмяна на данни в кеширащи прокси (Tomcat, squid, mod_proxy) или заобикаляне на блокировки на междинни стени чрез указване на няколко заявки «GET» или «POST» в рамките на една HTTP сесия.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster