tĂ€iendavad detailid rĂŒnnaku kohta, mis suunatud sisu jaotamise mudelit kasutavatele saitidele, sealhulgas neile, mis töötavad sisuteenuste, tasakaalustajate vĂ”i prokside kaudu. RĂŒnnak vĂ”imaldab teatud pĂ€ringute saatmise kaudu teistesse pĂ€ringutesse, mis töötavad samas voos, siseneda. Pakutud meetodit on edukalt rakendatud rĂŒnnaku korraldamiseks, mille kĂ€igus on vĂ”imalik Ă”iguslikult haarata PayPali teenuse autentimise parameetreid â organisatsioon, mis on maksnud teadlastele umbes 40 000 dollarit, et teavitada neid mitteparandatud haavatavustest. RĂŒnnak on rakendatav ka saitidele, mis kasutavad Akamai sisu jaotamise vĂ”rku.
Probleemi olemus seisneb selles, et front-end'id ja back-end'id pakuvad sageli erinevat HTTP protokolli toetuse taset, samas kui nad kapseldavad erinevate kasutajate pĂ€ringud ĂŒhisesse kanalisse. NĂ”udlusi vastu vĂ”tvate front-end'ide ja pĂ€ringuid töötlevate back-end'ide vahel luuakse pikaajaline TCP-ĂŒhendus, mille kaudu edastatakse kasutajate pĂ€ringud jĂ€rjestikku, kasutades HTTP protokolli vahendeid. PĂ€ringute eraldamiseks vĂ”ivad olla kasutusel pealkirjad "Content-Length" (mÀÀra andmete kogumaht pĂ€ringus) ja "" (vĂ”imaldab edastada andmeid osade kaupa, nĂ€idates erineva suurusega plokke formaadis "{suurus}\r\n{plokk}\r\n{suurus}\r\n{plokk}\r\n0").
Probleem tekib, kui frontend toetab ainult "Content-Length", kuid ignoreerib "Transfer-Encoding: chunked" (nĂ€iteks kĂ€itus CDN Akamai nii) vĂ”i vastupidi. Kui mĂ”lemad pooled toetavad "Transfer-Encoding: chunked", siis rĂŒnnakuks vĂ”ivad kasutada HTTP pealkirjade parserite rakenduse tunnuseid (nĂ€iteks kui frontend ignoreerib selliseid ridu nagu "Transfer-Encoding: xchunked", "Transfer-Encoding: chunked", "Transfer-Encoding:[tab]chunked", "X: X[\n]Transfer-Encoding: chunked", "Transfer-Encoding[\n]: chunked" vĂ”i "Transfer-Encoding : chunked", samas kui backend suudab neid edukalt töödelda).
Sellisel juhul vĂ”ib rĂŒndaja saata pĂ€ringu, milles on samal ajal mÀÀratud pĂ€ised "Content-Length" ja "Transfer-Encoding: chunked", kuid "Content-Length" vÀÀrtus ei vasta tegelikule chunked-ahelale, mis on vĂ€iksem kui tegelik vÀÀrtus. Kui front-end töötleb ja suunab pĂ€ringu "Content-Length" alusel, samal ajal kui taust sĂŒsteem ootab blokki lĂ”ppu "Transfer-Encoding: chunked" alusel, siis mÀÀratakse andmete lĂ”pp "Transfer-Encoding: chunked" alusel varem, jĂ€ttes rĂŒndaja pĂ€ringus olevad jÀÀgid jĂ€rgmise pĂ€ringu algusesse, st rĂŒndajal on vĂ”imalus lisada omavolilisi andmeid kellegi teise pĂ€ringu algusesse, mis jĂ€rgneb.

Probleemi mÀÀramiseks vĂ”ib front-end'i ja taustsĂŒsteemi vahel saata jĂ€rgmise tĂŒĂŒbi pĂ€ringu:
POST /about HTTP/1.1
Host: example.com
Transfer-Encoding: chunked
Content-Length: 4
1
Z
K
Probleem on olemas, kui taustsĂŒsteem ei töötle pĂ€ringut kohe ja ootab lĂ”pliku null-lĂ”ppemeetodi chunked-andmete saabumist. TĂ€iendava kontrolli jaoks on eriline utiliit, mis testib ka vĂ”imalikke meetodeid pĂ€ise "Transfer-Encoding: chunked" varjamine front-end'i eest.
Reaalsed rĂŒnnakud sĂ”ltuvad rĂŒnnatava saidi omadustest. NĂ€iteks Trello veebirakenduse rĂŒnnaku korral on vĂ”imalik muuta kĂŒsitava algust (asendada andmed nagu «PUT /1/members/1234⊠x=x&csrf=1234&username=testzzz&bio=cake») ja saata sĂ”num, mis sisaldab originaalkĂŒsimust kolmandalt kasutajalt koos autentimis-Cookie'idega. SaaS-app.com rĂŒnnaku puhul Ă”nnestus JavaScript-koodi sisestamine vastuses, muutes selle ĂŒheks taotluse parameetriks. Redhat.com rĂŒnnakuks kasutati sisemist töötlejat, et suunata rĂŒnnaku sae saidile (kasutati taotlust nagu «POST /search?dest=../assets/idx?redir=//redhat.com@evil.net/ HTTP/1.1»).
Sisu kohaldamine sisu edastamise vĂ”rkudele vĂ”imaldas hĂ”lpsasti asendada kĂŒsitud veebisaidi, kasutades "Host:" pĂ€ise asendust. Seda rĂŒnnakut saab rakendada ka sisu vahemĂ€lusĂŒsteemide mĂŒrgitamiseks ja konfidentsiaalsete andmete vĂ€ljatoomiseks. Meetodi tipp saavutati PayPal'i rĂŒnnaku korraldamisega, mis vĂ”imaldas kinni pĂŒĂŒda paroolid, mida kasutajad sisestasid autentimise kĂ€igus (mille raames muudeti iframe'i pĂ€ringut, et kĂ€ivitada JavaScript paypal.com/us/gifts lehe kontekstis, mille puhul CSP-d (sisupoliitika) ei rakendatud).
Huvitav, et 2005. aastal oli sarnane pĂ€ringute asendamise tehnika, mis vĂ”imaldas andmete asendamist vahemĂ€lu loovates vaheproxydes (Tomcat, squid, mod_proxy) vĂ”i tulekaitseblokkeeringute ĂŒletamist, mÀÀrates mitmeid "GET" vĂ”i "POST" pĂ€ringuid ĂŒhe HTTP-seansi raames.
Allikas: opennet.ru
