uus rĂŒnnaku ĂŒksikasjad veebisaitidele, mis kasutavad front-end ja back-end mudelit, nĂ€iteks neid, mis töötavad sisu kohaletoimetamise vĂ”rkude, tasakaalustajate vĂ”i pĂŒsilinkide kaudu. RĂŒnnak vĂ”imaldab teatavate pĂ€ringute saatmisega segada teiste sama voos kĂ€sitletavate pĂ€ringute sisu, mis liiguvad front-endi ja back-endi vahel. Ettepanekut rakendati edukalt rĂŒnnaku korraldamiseks, mis vĂ”imaldas tabada PayPali teenuse kasutajate autentimisparameetreid, kes maksis uurijatele umbes 40 000 dollarit turvaukste teavitamise programmi raames. RĂŒnnak on samuti kohandatav veebisaitidele, mis kasutavad Akamai sisu kohaletoimetamise vĂ”rgustikku.
Probleemi aluseks on asjaolu, et front-endid ja back-endid toetavad sageli HTTP protokolli erinevat taset, kuid samal ajal kapseldavad erinevate kasutajate pĂ€ringud ĂŒhte kanali. NĂ”udluse vastuvĂ”tva front-endi ja nĂ”udlusi töötleva back-endi vahel luuakse pikaajaline TCP-ĂŒhendus, mille kaudu edastatakse kasutajate pĂ€ringud, mis edastatakse jĂ€rjestikku HTTP protokolli vahendusel. PĂ€ringute eraldamiseks vĂ”ivad kasutada pĂ€iseid 'Content-Length' (mÀÀrab pĂ€ringu andmete koguma) ja 'â (lubab andmeid edastada osades, nĂ€idates erineva suurusega plokke formaadis '{suurus}\r\n{plokk}\r\n{suurus}\r\n{plokk}\r\n0').
Probleem tekib, kui front-end toetab ainult 'Content-Length', kuid ignoreerib 'Transfer-Encoding: chunked' (nĂ€iteks kĂ€itus nii Akamai CDN) vĂ”i vastupidi. Kui mĂ”lemal poolel toetatakse 'Transfer-Encoding: chunked', vĂ”ivad rĂŒnnaku korral kasutada HTTP pĂ€iste parsimise rakenduse eripĂ€ra (nĂ€iteks kui front-end ignoreerib 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 back-end töötleb neid edukalt).
Sel juhul vĂ”ib rĂŒndaja saata pĂ€ringu, milles on samal ajal mĂ€rgitud pealkirjad âContent-Lengthâ ja âTransfer-Encoding: chunkedâ, kuid âContent-Lengthâ vÀÀrtus ei vasta chunked-hela suurusele, mis on vĂ€iksem kui tegelik vÀÀrtus. Kui frontend töötleb ja suunab pĂ€ringu vastavalt âContent-Lengthâ, samal ajal kui backend ootab lĂ”pp-bloki mÀÀramist âTransfer-Encoding: chunkedâ alusel, siis mÀÀratakse chunked-hela lĂ”ppandmed varem ja rĂŒndaja jÀÀnud pĂ€ringu saba satub jĂ€rgmise pĂ€ringu algusse, st rĂŒndajal on vĂ”imalus lisada juhuslikke andmeid mingi teise pĂ€ringu algusesse.

Probleemi tuvastamiseks kasutatava frontend-backendi sideme kaudu saab frontend saata jĂ€rgmist tĂŒĂŒpi pĂ€ringu:
POST /about HTTP/1.1
Host: example.com
Transfer-Encoding: chunked
Content-Length: 4
1
Z
Q
Probleem esineb, kui backend ei töötle pĂ€ringut kohe ja ootab lĂ”pliku nulli piirava chunked-andmete bloki saabumist. TĂ€iendava kontrolli jaoks on spetsiaalne utiliit, mis testib ka vĂ”imalikke meetodeid peita pealkiri âTransfer-Encoding: chunkedâ frontendist.
TĂ”elise rĂŒnnaku lĂ€biviimine sĂ”ltub rĂŒnnatava saidi vĂ”imalustest, nĂ€iteks Trello veebirakenduse rĂŒnnaku ajal on vĂ”imalik pĂ€ringu algust muuta (sisestada andmed nagu âPUT /1/members/1234⊠x=x&csrf=1234&username=testzzz&bio=cakeâ) ja saata sĂ”num, mis sisaldab originaalset pĂ€ringut mĂ”nelt teiselt kasutajalt koos selles mÀÀratud autentimise kĂŒpsistega. RĂŒnnakuks saas-app.com-le oli vĂ”imalik JavaScripti koodi asendada vastuses, asendades selle ĂŒhe pĂ€ringu parameetriga. RĂŒnnakuks redhat.com-ile kasutati sisemist töötlejat rĂŒndaja saidile suunamiseks (selleks esitati pĂ€ring nagu âPOST /search?dest=../assets/idx?redir=//redhat.com@evil.net/ HTTP/1.1â).
SisaldusvĂ”rkude teenuse rakendamine vĂ”imaldas lihtsalt asendada nĂ”utud saidi, kasutades "Host:" pealkirja. RĂŒnnakut saab kasutada ka sisu vahemĂ€llu salvestamise sĂŒsteemide mĂŒrgitamiseks ja vahemĂ€llu salvestatud konfidentsiaalsete andmete hankimiseks. Meetodi tipp saavutas rĂŒnnak PayPali vastu, mis vĂ”imaldas kasutajatel samakvaliteetselt autentimisel edastatud paroole peita (tehtud oli iframe'i pĂ€ringu muutmine JavaScripti tĂ€itmiseks paypal.com/us/gifts lehe kontekstis, millele ei kehtinud CSP (sisu turvameetmed)).
Huvi pĂ€rast, 2005. aastal leiti jĂ€i sarnane meetod pĂ€ringute asendamiseks, mis vĂ”imaldas vahemĂ€llu salvestavate vaheproksi (Tomcat, squid, mod_proxy) andmeid asendada vĂ”i ĂŒletada tulemĂŒĂŒride blokeerimisi, edastades mitu "GET" vĂ”i "POST" pĂ€ringut ĂŒhes HTTP-seansis.
Allikas: opennet.ru
