Usa ka pag-atake sa front-end-back-end nga mga sistema nga nagtugot kanamo sa pag-wedge sa mga hangyo sa ikatulo nga partido

Gipadayag mga detalye sa usa ka bag-ong pag-atake sa mga site nga naggamit sa usa ka front-end-back-end nga modelo, sama niadtong nagdagan pinaagi sa mga network sa paghatod sa sulod, mga load balancer o mga proxy. Gitugotan sa pag-atake, pinaagi sa pagpadala sa pipila ka mga hangyo, sa pagsulud sa sulud sa ubang mga hangyo nga giproseso sa parehas nga hilo tali sa frontend ug backend. Ang gisugyot nga pamaagi malampuson nga gigamit sa pag-organisar sa usa ka pag-atake nga nagpaposible sa pag-intercept sa mga parameter sa pag-authenticate sa mga tiggamit sa serbisyo sa PayPal, nga nagbayad sa mga tigdukiduki mahitungod sa 40 ka libo nga mga dolyares isip kabahin sa usa ka programa aron sa pagpahibalo mahitungod sa presensya sa wala'y patch nga mga kahuyangan. Ang pag-atake magamit usab sa mga site nga naggamit sa network sa paghatud sa sulud sa Akamai.

Ang kinauyokan sa problema mao nga ang mga frontends ug backends sagad naghatag ug lain-laing lebel sa suporta alang sa HTTP protocol, apan sa samang higayon nag-encapsulate sa mga hangyo gikan sa lain-laing mga tiggamit ngadto sa usa ka komon nga channel. Aron makonektar ang mga hangyo sa pagdawat sa frontend ug ang mga hangyo sa pagproseso sa backend, usa ka dugay nga nabuhi nga koneksyon sa TCP ang natukod, diin ang mga hangyo sa gumagamit gipasa, gipasa sa sunod-sunod nga kadena, gibulag pinaagi sa protocol sa HTTP. Sa pagbulag sa mga hangyo, ang mga ulohan nga "Content-Length" (nagtino sa kinatibuk-ang gidak-on sa datos sa hangyo) ug "Pagbalhin-Pag-encode: chunked"(nagtugot kanimo sa pagbalhin sa datos sa mga bahin, nga nagpiho sa mga bloke nga lainlain ang gidak-on sa pormat nga "{size}\r\n{block}\r\n{size}\r\n{block}\r\n0").

Ang problema motungha kung ang frontend nagsuporta lamang sa "Content-Length" apan wala magtagad sa "Transfer-Encoding: chunked" (pananglitan, gibuhat kini sa Akamai CDN) o vice versa. Kung ang Transfer-Encoding: chunked gisuportahan sa duha ka kilid, ang mga feature sa pagpatuman sa HTTP header parsers mahimong gamiton para sa pag-atake (pananglitan, kung ang front end wala magtagad sa mga linya sama sa "Transfer-Encoding: xchunked", "Transfer-Encoding: chunked ”, “Transfer-Encoding” :[tab]chunked", "X: X[\n]Transfer-Encoding: chunked", "Transfer-Encoding[\n]: chunked" o "Transfer-Encoding : chunked", ug ang backend malampuson nga nagproseso niini).

Sa kini nga kaso, ang usa ka tig-atake mahimong magpadala sa usa ka hangyo nga adunay sulud nga "Content-Length" ug "Transfer-Encoding: chunked" header, apan ang gidak-on sa "Content-Length" dili katumbas sa gidak-on sa chunked chain, nga mas gamay kay sa aktuwal nga bili. Kung ang frontend moproseso ug mopasa sa hangyo sumala sa "Content-Length" ug ang backend maghulat nga makompleto ang block base sa "Transfer-Encoding: chunked", unya ang katapusan sa data base sa "Transfer-Encoding: chunked" will matino sa sayo pa ug ang nahabilin nga ikog sa hangyo ang tig-atake anaa sa sinugdanan sa sunod nga hangyo, i.e. ang tig-atake makahimo sa paglakip sa arbitraryong datos sa sinugdanan sa hangyo sa uban nga gipasa sa sunod.

Usa ka pag-atake sa front-end-back-end nga mga sistema nga nagtugot kanamo sa pag-wedge sa mga hangyo sa ikatulo nga partido

Aron mahibal-an ang problema sa gigamit nga kombinasyon sa frontend-backend, mahimo nimong ipadala ang usa ka hangyo nga sama niini pinaagi sa frontend:

POST / mahitungod sa HTTP / 1.1
Host: example.com
Pagbalhin-Pag-encode: chunked
Gidugtong nga Content: 4

1
Z
Q

Ang problema anaa kung ang backend dili dayon magproseso sa hangyo ug maghulat sa pag-abot sa katapusang zero bounding block sa chunked data. Para sa mas kompleto nga pagsusi giandam usa ka espesyal nga utility nga nagsulay usab sa posible nga mga pamaagi sa pagtago sa "Transfer-Encoding: chunked" header gikan sa frontend.

Ang paghimo sa usa ka tinuud nga pag-atake nagdepende sa mga kapabilidad sa giatake nga site, pananglitan, kung giatake ang aplikasyon sa web sa Trello, mahimo nimong ilisan ang pagsugod sa hangyo (ilisan ang datos sama sa "PUT / 1 / mga miyembro / 1234 ... x = x&csrf =1234&username=testzzz&bio=cake”) ug ipadala ang usa ka mensahe lakip ang orihinal nga hangyo sa usa ka third-party nga tiggamit ug ang Cookie nga panghimatuud nga gipiho niini. Alang sa usa ka pag-atake sa saas-app.com, nahimo nga posible nga ilisan ang JavaScript code sa tubag pinaagi sa pag-ilis niini sa usa sa mga parameter sa hangyo. Alang sa pag-atake sa redhat.com, usa ka internal nga handler ang gigamit sa pag-redirect sa website sa tig-atake (usa ka hangyo sa porma nga "POST /search?dest=../assets/idx?redir=//[protektado sa email]/ HTTP/1.1").

Ang paggamit sa pamaagi alang sa mga network sa paghatud sa sulud nagpaposible nga ilisan lamang ang gihangyo nga site pinaagi sa pag-ilis sa "Host:" nga ulohan. Ang pag-atake mahimo usab nga gamiton aron hiloan ang mga sulud sa mga sistema sa pag-cache sa sulud ug pagkuha sa mga naka-cache nga kompidensyal nga datos. Ang kinapungkayan sa pamaagi mao ang organisasyon sa usa ka pag-atake sa PayPal, nga nagpaposible sa pag-intercept sa mga password nga gipadala sa mga tiggamit sa panahon sa pag-authenticate (ang iframe request giusab aron sa pagpatuman sa JavaScript sa konteksto sa paypal.com/us/gifts page, kay nga CSP (Content Security Policy) wala magamit).

Makaiikag, sa 2005 adunay gisugyot usa ka esensya nga parehas nga pamaagi sa pagpanglimbong sa hangyo nga nagtugot kanimo sa paglimbong sa datos sa mga proxy nga caching (Tomcat, squid, mod_proxy) o pag-bypass sa pag-block sa firewall pinaagi sa pagtino sa daghang mga hangyo nga "GET" o "POST" sulod sa usa ka sesyon sa HTTP.

Source: opennet.ru

Idugang sa usa ka comment