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 "
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.
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
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
Source: opennet.ru