Útok na frontend-backend systémy, který umožňuje zasáhnout do externích dotazů.

Odhalené detaily nové útoku na weby, které používají model front-end back-end, například ty, které fungují přes sítě doručování obsahu, vyrovnávače zátěže nebo proxy. Útok umožňuje zasahovat do obsahu jiných požadavků, které jsou zpracovávány ve stejném toku mezi front-endem a back-endem tím, že se odesílají určité požadavky. Navrhovaná metoda byla úspěšně aplikována pro organizaci útoku, který umožňuje zachytávat autentizační parametry uživatelů služby PayPal, která vyplatila výzkumníkům přibližně 40 tisíc dolarů v rámci programu informování o neopravených zranitelnostech. Útok je také použitelný pro weby, které používají síť doručování obsahu Akamai.

Podstata problému spočívá v tom, že front-endy a back-endy často poskytují různé úrovně podpory protokolu HTTP, ale současně inkapsulují požadavky různých uživatelů do společného kanálu. Pro spojení přijímajícího požadavky front-endu a zpracovávajícího požadavky back-endu se vytváří dlouhodobé TCP spojení, přes které jsou přenášeny požadavky uživatelů, přenášené po řetězci jeden po druhém se separací pomocí prostředků protokolu HTTP. Pro separaci požadavků se mohou používat hlavičky „Content-Length“ (určuje celkovou velikost dat v požadavku) a „Transfer-Encoding: chunked“ (umožňuje přenášet data po částech, přičemž uvádí bloky různé velikosti v formátu „{velikost}\r\n{blok}\r\n{velikost}\r\n{blok}\r\n0“).

Problém nastává, pokud front-end podporuje pouze „Content-Length“, ale ignoruje „Transfer-Encoding: chunked“ (například takto postupoval CDN Akamai) nebo naopak. V případě, že obě strany podporují „Transfer-Encoding: chunked“ mohou být pro útok využity specifika implementace parserů HTTP hlaviček (například když front-end ignoruje řádky jako „Transfer-Encoding: xchunked“, „Transfer-Encoding: chunked“, „Transfer-Encoding:[tab]chunked“, „X: X[\n]Transfer-Encoding: chunked“, „Transfer-Encoding[\n]: chunked“ nebo „Transfer-Encoding : chunked“, zatímco back-end je úspěšně zpracovává).

V tomto případě může útočník poslat žádost, která zároveň obsahuje hlavičky „Content-Length“ a „Transfer-Encoding: chunked“, ale velikost v „Content-Length“ neodpovídá velikosti chunked řetězce, která je menší než skutečná hodnota. Pokud frontend zpracovává a přesměrovává žádost podle „Content-Length“, zatímco backend bude očekávat dokončení bloku na základě „Transfer-Encoding: chunked“, dojde k určení konce dat na základě „Transfer-Encoding: chunked“ dříve a zbývající část žádosti útočníka se dostane na začátek následující žádosti, tj. útočník získá možnost připojit libovolná data na začátek cizí žádosti, která byla následně zaslána.

Útok na frontend-backend systémy, který umožňuje zasáhnout do externích dotazů.

Pro určení problému ve používané vazbě frontend-backend lze přes frontend odeslat žádost tohoto typu:

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

1
Z
Q

Problém existuje, pokud backend okamžitě nezpracovává žádost a čeká na přijetí posledního nulového omezujícího bloku chunked dat. Pro důkladnější ověření byla připravena speciální nástroj, který také testuje možné metody skrytí hlavičky „Transfer-Encoding: chunked“ před frontendem.

Provádění skutečného útoku závisí na schopnostech napadeného webu, například při útoku na webovou aplikaci Trello lze změnit začátek žádosti (dosadit data typu „PUT /1/members/1234… x=x&csrf=1234&username=testzzz&bio=cake“) a poslat zprávu zahrnující původní žádost jiného uživatele a uvedené v ní autentizační Cookies. Při útoku na saas-app.com se podařilo provést dosazení JavaScriptového kódu do odpovědi jeho zasazením do jednoho z parametrů žádosti. Při útoku na redhat.com byl využit interní zpracovatel pro přesměrování na stránky útočníka (byla dosazena žádost typu „POST /search?dest=..//assets/idx?redir=//redhat.com@evil.net/ HTTP/1.1“).

Použití metody pro sítě doručování obsahu umožnilo snadno vyměnit požadovaný web prostřednictvím substituce hlavičky „Host:“. Útok je také aplikovatelný na organizaci znečištění obsahu cachovacích systémů a extrakci předcacheovaných důvěrných dat. Vrcholem použití metody byl útok na PayPal, který umožnil zachytávání hesel zasílaných uživateli při autentizaci (došlo ke změně požadavku iframe pro provádění JavaScriptu v kontextu stránky paypal.com/us/gifts, pro kterou nebyla použita CSP (Content Security Policy)).

Zajímavé je, že v roce 2005 byla navržena podobná technika substituce požadavků, která umožňuje měnit data v cachujících proxy (Tomcat, squid, mod_proxy) nebo obcházet blokace firewallů prostřednictvím zadání několika požadavků „GET“ nebo „POST“ v rámci jednoho HTTP sezení.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster