Yon atak sou sistèm front-end-back-end ki pèmèt nou kwense nan demann twazyèm pati

Revele detay sou yon nouvo atak sou sit ki sèvi ak yon modèl devan-fen-dèyè-fen, tankou sa yo ki kouri atravè rezo livrezon kontni, balans chaj oswa proxy. Atak la pèmèt, lè yo voye sèten demann, kwense nan sa ki nan lòt demann trete nan menm fil la ant frontend la ak backend. Metòd yo pwopoze a te itilize avèk siksè pou òganize yon atak ki te fè li posib entèsepte paramèt otantifikasyon itilizatè yo nan sèvis PayPal la, ki te peye chèchè yo sou 40 mil dola kòm yon pati nan yon pwogram pou enfòme sou prezans nan frajilite ki pa patched. Atak la aplikab tou pou sit ki itilize rezo livrezon kontni Akamai.

Gwo pwoblèm nan se ke entèfas ak backends souvan bay diferan nivo sipò pou pwotokòl HTTP a, men an menm tan an encapsule demann soti nan itilizatè diferan nan yon chanèl komen. Pou konekte demann k ap resevwa entèfas yo ak demann pwosesis backend yo, yo etabli yon koneksyon TCP ki dire lontan, atravè ki demann itilizatè yo transmèt, transmèt sou chèn lan youn apre lòt, separe pa mwayen pwotokòl HTTP. Pou separe demann yo, headers "Content-Length" (detèmine gwosè total done yo nan demann lan) ak "Transfè-kodaj: an fragman"(pèmèt ou transfere done an pati, espesifye blòk diferan gwosè nan fòma "{gwosè}\r\n{blòk}\r\n{gwosè}\r\n{blòk}\r\n0").

Pwoblèm lan rive si entèfas la sèlman sipòte "Content-Length" men li inyore "Transfè-Kodaj: an fragman" (pa egzanp, Akamai CDN te fè sa) oswa vis vèrsa. Si Transfer-Encoding: chunked sipòte sou tou de bò yo, karakteristik aplikasyon HTTP header parsers ka itilize pou yon atak (pa egzanp, lè front end inyore liy tankou "Transfè-Kodaj: xchunked", "Transfè-Kodaj: chunked". ”, “Transfè-Kodaj” :[onglet]ankou, "X: X[\n]Transfè-Kodaj: an moso", "Transfè-Kodaj[\n]: an moso" oswa "Transfè-Kodaj: an moso", epi backend la avèk siksè trete yo).

Nan ka sa a, yon atakè ka voye yon demann ki gen tou de "Content-Length" ak "Transfer-Encoding: chunked" header, men gwosè a nan "Content-Length" pa koresponn ak gwosè a nan chèn nan chunked, ki. pi piti pase valè aktyèl la. Si fasad la trete epi voye demann lan dapre "Content-Length" epi backend la ap tann pou blòk la fini baze sou "Transfè-kodaj: an fragman", Lè sa a, fen done yo ki baze sou "Transfè-kodaj: an fragman" pral dwe detèmine pi bonè ak ke ki rete nan demann lan atakè a pral nan kòmansman an nan pwochen demann lan, i.e. atakè a pral kapab tache done abitrè nan kòmansman an nan demann yon lòt moun transmèt pwochen.

Yon atak sou sistèm front-end-back-end ki pèmèt nou kwense nan demann twazyèm pati

Pou detèmine pwoblèm nan nan konbinezon frontend-backend itilize a, ou ka voye yon demann tankou sa a atravè entèfas la:

POST /sou HTTP/1.1
Lame: example.com
Transfè-kodaj: an fragman
Longè kontni: 4

1
Z
Q

Pwoblèm nan prezan si backend la pa imedyatman trete demann lan epi tann pou rive nan blòk limit zewo final la nan done an fragman. Pou yon chèk ki pi konplè prepare yon sèvis piblik espesyal ki teste tou metòd posib pou kache header "Transfè-kodaj: fragmenté" nan entèfas la.

Fè yon atak reyèl depann de kapasite sit atak la, pou egzanp, lè w atake aplikasyon entènèt Trello a, ou ka ranplase nan kòmansman demann lan (ranplase done tankou "PUT /1/members/1234... x=x&csrf =1234&username=testzzz&bio=cake") epi voye yon mesaj ki gen ladan demann orijinal yon itilizatè twazyèm pati ak bonbon otantifikasyon ki espesifye ladan l. Pou yon atak sou saas-app.com, li te tounen posib pou ranplase kòd JavaScript nan repons lan pa ranplase li nan youn nan paramèt demann yo. Pou atak la sou redhat.com, yo te itilize yon moun kap okipe entèn pou redireksyon sou sit entènèt atakè a (yon demann nan fòm "POST /search?dest=../assets/idx?redir=//[imèl pwoteje]/ HTTP/1.1").

Sèvi ak metòd la pou rezo livrezon kontni te fè li posib tou senpleman ranplase sit la mande pa ranplase "Host:" header la. Atak la ka itilize tou pou anpwazonnen sa ki nan sistèm kachèt kontni ak ekstrè done konfidansyèl kachèt yo. Pinnacle metòd la te òganizasyon an nan yon atak sou PayPal, ki te fè li posib entèsepte modpas itilizatè yo te voye pandan otantifikasyon (demann iframe a te modifye pou egzekite JavaScript nan yon kontèks paj paypal.com/us/gifts, pou ki CSP (Content Security Policy) pa te aplike).

Enteresan, an 2005 te gen pwopoze yon teknik spoofing demann esansyèlman menm jan an ki pèmèt ou spoof done nan kachèt proxy (Tomcat, squid, mod_proxy) oswa kontoune firewall bloke lè w espesifye plizyè demann "GET" oswa "POST" nan yon sesyon HTTP.

Sous: opennet.ru

Add nouvo kòmantè