Front-end-back-end sistemen aurkako erasoa, hirugarrenen eskaeretan ziritzea ahalbidetzen diguna

Agerian Front-end-back-end eredua erabiltzen duten guneen aurkako eraso berri baten xehetasunak, hala nola, edukia bidaltzeko sareetan, karga-orekatzaileetan edo proxyetan exekutatzen direnak. Erasoari esker, zenbait eskaera bidaliz, hari berean prozesatutako beste eskaeren edukietan ziritzea frontend eta backend-aren artean. Proposatutako metodoa arrakastaz erabili zen PayPal zerbitzuaren erabiltzaileen autentifikazio-parametroak atzematea ahalbidetzen zuen erasoa antolatzeko, ikertzaileei 40 mila dolar inguru ordaindu zizkieten adabakirik gabeko ahultasunen presentziaz informatzeko programa baten barruan. Erasoa Akamai edukiak bidaltzeko sarea erabiltzen duten guneetan ere aplikagarria da.

Arazoaren muina da frontend-ek eta backend-ek sarritan laguntza-maila desberdinak ematen dituztela HTTP protokoloari, baina, aldi berean, erabiltzaile ezberdinen eskaerak kanal komun batean biltzen dituzte. Frontend-a jasotzeko eskaerak eta backend-a prozesatzeko eskaerak konektatzeko, iraupen luzeko TCP konexio bat ezartzen da, zeinaren bidez erabiltzaileen eskaerak transmititzen dira, katean zehar bata bestearen atzetik transmitituta, HTTP protokoloaren bidez bereizita. Eskaerak bereizteko, "Edukia-luzera" goiburuak (eskaeraren datuen guztizko tamaina zehazten du) eta "Transferentzia-kodeketa: zatikatua"(datuak zatika transferitzeko aukera ematen du, "{tamaina}\r\n{blokea}\r\n{tamaina}\r\n{bloke}\r\n0" formatuan zehaztuz tamaina ezberdinetako blokeak).

Arazoa sortzen da frontend-ak "Content-Length" bakarrik onartzen badu baina "Transfer-Encoding: chunked" alde batera uzten badu (adibidez, Akamai CDN-k hau egin zuen) edo alderantziz. Transfer-Encoding: chunked bi aldeetan onartzen bada, HTTP goiburuko analizatzaileen ezarpen-ezaugarriak eraso baterako erabil daitezke (adibidez, frontend-ak "Transfer-Encoding: xchunked", "Transfer-Encoding: chunked" bezalako lerroak alde batera uzten dituenean. ”, β€œTransfer-kodifikazioa” :[tab]zatituta”, "X: X[\n]Transferentzia-kodifikazioa: zatituta", "Transferentzia-kodeketa[\n]: zatituta" edo "Transferentzia-kodifikazioa: zatituta", eta backendak arrakastaz prozesatzen ditu).

Kasu honetan, erasotzaile batek "Content-Length" eta "Transfer-Encoding: chunked" goiburuak dituen eskaera bidal dezake, baina "Content-Length"-ko tamaina ez dator bat zatitutako katearen tamainarekin, hau da. benetako balioa baino txikiagoa da. Frontendak eskaera "Content-Length"-en arabera prozesatu eta birbidaltzen badu eta backend-ak blokea amaitu arte itxaron badu "Transfer-Encoding: chunked"-en arabera, "Transfer-Encoding: chunked"-en oinarritutako datuen amaiera izango da. lehenago zehaztuko da eta eskaeraren gainerako isatsa erasotzailea hurrengo eskaeraren hasieran izango da, hau da. erasotzaileak datu arbitrarioak erantsi ahal izango dizkio hurrengo bidalitako beste norbaiten eskaeraren hasieran.

Front-end-back-end sistemen aurkako erasoa, hirugarrenen eskaeretan ziritzea ahalbidetzen diguna

Erabilitako frontend-backend konbinazioan arazoa zehazteko, honelako eskaera bat bidali dezakezu frontend bidez:

POST /HTTP-ri buruz/1.1
Ostalaria: adibidea.com
Transferentzia-kodeketa: zatikatua
Eduki-luzera: 4

1
Z
Q

Arazoa dago backend-ak eskaera berehala prozesatzen ez badu eta zatitutako datuen azken zero muga-blokea noiz iritsiko zain. Egiaztapen osoago bat egiteko prestatuta "Transfer-Encoding: chunked" goiburua frontend-etik ezkutatzeko metodo posibleak ere probatzen dituen erabilgarritasun berezi bat.

Benetako erasoa egitea erasotutako gunearen gaitasunen araberakoa da, adibidez, Trello web-aplikazioa erasotzean, eskaeraren hasiera ordezkatu dezakezu (Β«PUT /1/members/1234... x=x&csrfΒ» bezalako datuak ordezkatu ditzakezu. =1234&username=testzzz&bio=cake”) eta bidali mezu bat hirugarrenen erabiltzaile baten jatorrizko eskaera eta bertan zehaztutako autentifikazio cookiea barne. Saas-app.com-en eraso batengatik, erantzunean JavaScript kodea ordezkatzea posible izan zen eskaeraren parametroetako batean ordezkatuz. Redhat.com-en erasorako, barne kudeatzaile bat erabili zen erasotzailearen webgunera birbideratzeko (Β«POST /search?dest=../assets/idx?redir=//Β» formularioko eskaera bat[posta elektroniko bidez babestua]/ HTTP/1.1").

Edukiak bidaltzeko sareetarako metodoa erabiltzeak eskatutako gunea ordezkatzea ahalbidetu zuen, "Ostalari:" goiburua ordezkatuz. Erasoa edukiak gordetzeko sistemen edukia pozoitzeko eta cacheko datu konfidentzialak ateratzeko ere erabil daiteke. Metodoaren gailurra PayPal-en aurkako erasoa antolatzea izan zen, erabiltzaileek autentifikazioan bidalitako pasahitzak atzematea ahalbidetzen zuena (iframe eskaera aldatu zen paypal.com/us/gifts orriaren testuinguruan JavaScript exekutatzeko, adibidez). zein CSP (Content Security Policy) aplikatu ez den).

Interesgarria da 2005ean bazegoela proposatu funtsean, antzeko eskaerak faltifikatzeko teknika bat, cacheko proxyetan (Tomcat, squid, mod_proxy) datuak faltifikatzeko edo suebakiaren blokeoa saihesteko aukera ematen duena "GET" edo "POST" hainbat eskaera zehaztuz HTTP saio batean.

Iturria: opennet.ru

Gehitu iruzkin berria