Serangan kana sistem hareup-tungtung-tukang-tungtung anu ngamungkinkeun urang ngaganjel kana pamundut pihak katilu

Diungkabkeun rinci ngeunaan serangan anyar dina situs nu make model hareup-tungtung-tukang-tungtung, kayaning nu ngajalankeun ngaliwatan jaringan pangiriman eusi, balancers beban atawa proxy. Serangan ngamungkinkeun, ku ngirim requests tangtu, mun ngaganjel kana eusi requests séjén diolah dina thread sarua antara frontend na backend. Metodeu anu diusulkeun suksés dianggo pikeun ngatur serangan anu ngamungkinkeun pikeun ngahalangan parameter auténtikasi pangguna jasa PayPal, anu mayar panaliti sakitar 40 rébu dolar salaku bagian tina program pikeun nginpokeun ngeunaan ayana kerentanan anu teu ditambal. Serangan éta ogé lumaku pikeun situs anu nganggo jaringan pangiriman eusi Akamai.

The crux tina masalah éta frontends na backends mindeng nyadiakeun tingkat béda pangrojong pikeun protokol HTTP, tapi dina waktos anu sareng encapsulate requests ti pamaké béda kana saluran umum. Pikeun nyambungkeun pamundut panarima frontend sareng pamundut pamrosésan backend, sambungan TCP anu lami-lami ditetepkeun, dimana pamundut pangguna dikirimkeun, dikirimkeun sapanjang ranté hiji-hiji, dipisahkeun ku protokol HTTP. Pikeun misahkeun pamundut, lulugu "Kandungan-Panjang" (nangtukeun total ukuran data dina pamundut) jeung "Transfer-Encoding: chunked"(ngamungkinkeun anjeun nransper data dina sababaraha bagéan, nangtukeun blok ukuran béda dina format "{ukuran}\r\n{block}\r\n{ukuran}\r\n{block}\r\n0").

Masalahna timbul lamun frontend ngan ngarojong "Kandungan-Panjang" tapi malire "Transfer-Encoding: chunked" (contona, Akamai CDN ngalakukeun ieu) atawa sabalikna. Upami Transfer-Encoding: chunked dirojong dina dua sisi, fitur palaksanaan tina HTTP header parsers tiasa dianggo pikeun serangan (contona, nalika tungtung hareup teu malire garis sapertos "Transfer-Encoding: xchunked", "Transfer-Encoding: chunked". ", "Transfer-Encoding" :[tab]chunked", "X: X[\n]Transfer-Encoding: chunked", "Transfer-encoding[\n]: chunked" atawa "Transfer-encoding : chunked", jeung backend hasil ngolah aranjeunna).

Dina hal ieu, panyerang tiasa ngirim pamundut anu ngandung header "Panjang-Kandungan" sareng "Transfer-Encoding: chunked", tapi ukuran dina "Panjang-Kandungan" henteu cocog sareng ukuran ranté chunked, anu leuwih leutik batan nilai sabenerna. Upami frontend ngolah sareng neraskeun pamundut numutkeun "Kandungan-Panjang" sareng backend ngantosan blok réngsé dumasar kana "Transfer-Encoding: chunked", teras tungtung data dumasar kana "Transfer-Encoding: chunked" bakal ditangtukeun saméméhna jeung buntut sésana tina pamundut lawan bakal di awal pamundut salajengna, i.e. panyerang bakal tiasa ngagantelkeun data sawenang-wenang ka awal pamundut batur anu dikirimkeun salajengna.

Serangan kana sistem hareup-tungtung-tukang-tungtung anu ngamungkinkeun urang ngaganjel kana pamundut pihak katilu

Pikeun nangtukeun masalah dina kombinasi frontend-backend dipaké, Anjeun bisa ngirim pamundut kawas kieu via frontend nu:

POST / ngeunaan HTTP / 1.1
Host: example.com
Transfer-Encoding: chunked
Panjang Kandungan: 4

1
Z
Q

Masalahna hadir upami backend henteu langsung ngolah pamundut sareng ngantosan datangna blok wates nol akhir data chunked. Pikeun dipariksa leuwih lengkep disiapkeun utilitas husus anu ogé nguji métode mungkin pikeun nyumputkeun "Transfer-Encoding: chunked" lulugu ti frontend nu.

Ngalaksanakeun serangan nyata gumantung kana kamampuan situs anu diserang, contona, nalika nyerang aplikasi wéb Trello, anjeun tiasa ngagentos awal pamundut (ngagantikeun data sapertos "PUT / 1 / anggota / 1234 ... x = x & csrf = 1234&username=testzzz&bio=cake”) sareng kirimkeun pesen kalebet pamenta asli pangguna pihak katilu sareng Cookie auténtikasi anu aya di jerona. Pikeun serangan dina saas-app.com, tétéla tiasa ngagentos kode JavaScript dina réspon ku ngagentos kana salah sahiji parameter pamundut. Pikeun serangan kana redhat.com, panangan internal dianggo pikeun alihan ka halaman wéb panyerang (pamundut bentuk "POST /search?dest=../assets/idx?redir=//[email dijaga]/ HTTP / 1.1 ").

Ngagunakeun métode pikeun jaringan pangiriman eusi ngamungkinkeun pikeun saukur ngaganti situs dipénta ku ngaganti "Host:" lulugu. Serangan éta ogé tiasa dianggo pikeun ngaracun eusi sistem cache eusi sareng ékstrak data rahasia anu di-cache. Puncak tina metodeu nyaéta organisasi serangan dina PayPal, anu ngamungkinkeun pikeun nyegat kecap akses anu dikirim ku pangguna nalika auténtikasi (paménta iframe dirobih pikeun ngaéksekusi JavaScript dina konteks halaman paypal.com/us/gifts, pikeun nu CSP (Kabijakan Kaamanan Kandungan) teu dilarapkeun).

Nu matak, taun 2005 aya diusulkeun téhnik spoofing pamundut dasarna sarupa nu ngidinan Anjeun pikeun spoof data dina proxy cache (Tomcat, cumi, mod_proxy) atawa bypass firewall blocking ku nangtukeun sababaraha requests "GET" atawa "POST" dina hiji sési HTTP.

sumber: opennet.ru

Tambahkeun komentar