podrobnosti o novem napadu na spletna mesta, ki uporabljajo model front-end-back-end, na primer tista, ki tečejo prek omrežij za dostavo vsebine, uravnavalcev obremenitve ali posrednikov. Napad omogoča, da se s pošiljanjem določenih zahtev zagozdi v vsebino drugih zahtev, obdelanih v isti niti med sprednjim in zadnjim delom. Predlagana metoda je bila uspešno uporabljena za organizacijo napada, ki je omogočil prestrezanje parametrov avtentikacije uporabnikov storitve PayPal, ki je raziskovalcem plačala približno 40 tisoč dolarjev v okviru programa za obveščanje o prisotnosti nepopravljenih ranljivosti. Napad je uporaben tudi za spletna mesta, ki uporabljajo omrežje za dostavo vsebin Akamai.
Bistvo težave je v tem, da frontendi in backendi pogosto zagotavljajo različne ravni podpore za protokol HTTP, hkrati pa zapakirajo zahteve različnih uporabnikov v skupni kanal. Za povezavo frontend sprejemanja zahtev in backend obdelave zahtev je vzpostavljena dolgoživeča povezava TCP, preko katere se prenašajo uporabniške zahteve, ki se prenašajo po verigi druga za drugo, ločene s protokolom HTTP. Za ločevanje zahtev, glave "Content-Length" (določa skupno velikost podatkov v zahtevi) in ""(omogoča prenos podatkov v delih, pri čemer določa bloke različnih velikosti v formatu "{size}\r\n{block}\r\n{size}\r\n{block}\r\n0").
Težava nastane, če vmesnik podpira samo »Content-Length«, vendar ignorira »Transfer-Encoding: chunked« (to je na primer naredil Akamai CDN) ali obratno. Če je Transfer-Encoding: chunked podprt na obeh straneh, se lahko izvedbene funkcije razčlenjevalnikov glav HTTP uporabijo za napad (na primer, ko sprednji del ignorira vrstice, kot sta »Transfer-Encoding: xchunked«, »Transfer-Encoding: chunked« ”, “Transfer-Encoding” :[tab]chunked”, "X: X[\n]Transfer-Encoding: chunked", "Transfer-Encoding[\n]: chunked" ali "Transfer-Encoding : chunked" in zaledje jih uspešno obdela).
V tem primeru lahko napadalec pošlje zahtevo, ki vsebuje obe glavi "Content-Length" in "Transfer-Encoding: chunked", vendar velikost v "Content-Length" ne ustreza velikosti verige chunked, kar je manjša od dejanske vrednosti. Če sprednji del obdela in posreduje zahtevo glede na »Content-Length« in zaledni del počaka, da se blok zaključi na podlagi »Transfer-Encoding: chunked«, bo konec podatkov na podlagi »Transfer-Encoding: chunked« določiti prej, preostali del zahteve pa bo napadalec na začetku naslednje zahteve, tj. napadalec bo lahko priložil poljubne podatke na začetek zahteve nekoga drugega, ki bo naslednji poslana.

Če želite ugotoviti težavo v uporabljeni kombinaciji frontend-backend, lahko prek frontenda pošljete takšno zahtevo:
POST /o HTTP/1.1
Gostitelj: example.com
Kodiranje prenosa: razdeljeno na koščke
Dolžina vsebine: 4
1
Z
Q
Težava je prisotna, če zaledje ne obdela takoj zahteve in počaka na prihod končnega ničelnega omejevalnega bloka razdeljenih podatkov. Za popolnejši pregled poseben pripomoček, ki preizkuša tudi možne metode za skrivanje glave »Transfer-Encoding: chunked« pred sprednjim delom.
Izvedba pravega napada je odvisna od zmogljivosti napadenega spletnega mesta, na primer pri napadu na spletno aplikacijo Trello lahko zamenjate začetek zahteve (nadomestite podatke, kot je "PUT /1/members/1234… x=x&csrf=1234&uporabniško_ime=testzzz&bio=cake") in pošljete sporočilo, ki vključuje izvirno zahtevo uporabnika tretje osebe in v njej navedene piškotke za preverjanje pristnosti. Za napad na saas-app.com je bilo mogoče v odgovor vstaviti kodo JavaScript tako, da jo je nadomestil z enim od parametrov zahteve. Za napad na redhat.com je bil uporabljen notranji obdelovalec za preusmeritev na spletno mesto napadalca (nadomeščena je bila zahteva v obliki »POST /search?dest=../assets/idx?redir=//redhat.com@evil.net/ HTTP/1.1«).
Uporaba metode za omrežja za dostavo vsebine je omogočila preprosto zamenjavo zahtevanega mesta z zamenjavo glave »Host:«. Napad se lahko uporabi tudi za zastrupitev vsebine sistemov za predpomnjenje vsebine in pridobivanje predpomnjenih zaupnih podatkov. Vrhunec metode je bila organizacija napada na PayPal, ki je omogočila prestrezanje gesel, ki so jih uporabniki poslali med avtentikacijo (zahteva iframe je bila spremenjena tako, da izvaja JavaScript v kontekstu strani paypal.com/us/gifts, za kateri CSP (Politika varnosti vsebine) ni bil uporabljen).
Zanimivo, leta 2005 je bilo v bistvu podobna tehnika ponarejanja zahtev, ki vam omogoča ponarejanje podatkov v predpomnjenju proxyjev (Tomcat, squid, mod_proxy) ali zaobiti blokiranje požarnega zidu z določitvijo več zahtev »GET« ali »POST« znotraj ene HTTP seje.
Vir: opennet.ru
