Ymosodiad ar systemau pen blaen-cefn sy'n ein galluogi i lyncu i mewn i geisiadau trydydd parti

Datguddiwyd manylion ymosodiad newydd ar wefannau sy'n defnyddio model pen blaen-cefn, fel y rhai sy'n rhedeg trwy rwydweithiau darparu cynnwys, balanswyr llwyth neu ddirprwyon. Mae'r ymosodiad yn caniatáu, trwy anfon ceisiadau penodol, i letem i gynnwys ceisiadau eraill a broseswyd yn yr un llinyn rhwng y blaen a'r pen ôl. Defnyddiwyd y dull arfaethedig yn llwyddiannus i drefnu ymosodiad a oedd yn ei gwneud yn bosibl i ryng-gipio paramedrau dilysu defnyddwyr y gwasanaeth PayPal, a dalodd ymchwilwyr tua 40 mil o ddoleri fel rhan o raglen i roi gwybod am bresenoldeb gwendidau heb eu cywiro. Mae'r ymosodiad hefyd yn berthnasol i wefannau sy'n defnyddio rhwydwaith darparu cynnwys Akamai.

Craidd y broblem yw bod blaenwynebau a chefnau yn aml yn darparu gwahanol lefelau o gefnogaeth i'r protocol HTTP, ond ar yr un pryd yn crynhoi ceisiadau gan wahanol ddefnyddwyr yn sianel gyffredin. Er mwyn cysylltu'r ceisiadau derbyn blaen a'r ceisiadau prosesu backend, sefydlir cysylltiad TCP hirhoedlog, lle mae ceisiadau defnyddwyr yn cael eu trosglwyddo, yn cael eu trosglwyddo ar hyd y gadwyn un ar ôl y llall, wedi'i wahanu trwy'r protocol HTTP. I wahanu ceisiadau, mae'r penawdau "Content-Length" (yn pennu cyfanswm maint y data yn y cais) a "Trosglwyddo-Amgodio: chunkedmsgstr "(yn caniatáu i chi drosglwyddo data mewn rhannau, gan nodi blociau o wahanol feintiau yn y fformat "{size}\r\n{block}\r\n{size}\r\n{block}\r\n0").

Mae'r broblem yn codi os yw'r blaen ond yn cefnogi “Content-Length” ond yn anwybyddu “Trosglwyddo-Amgodio: chunked” (er enghraifft, gwnaeth Akamai CDN hyn) neu i'r gwrthwyneb. Os cefnogir Trosglwyddo-Amgodio: Chunked ar y ddwy ochr, gellir defnyddio nodweddion gweithredu parsers pennyn HTTP ar gyfer ymosodiad (er enghraifft, pan fydd y pen blaen yn anwybyddu llinellau fel “Trosglwyddo-Amgodio: xchunked”, “Trosglwyddo-Amgodio: chunked " , " Transfer-Encoding " :[tab]chunked", "X: X[\n]Transfer-Encoding: chunked", "Transfer-Encoding[\n]: chunked" neu "Transfer-Encoding : chunked", a mae'r backend yn eu prosesu'n llwyddiannus).

Yn yr achos hwn, gall ymosodwr anfon cais sy'n cynnwys y penawdau "Content-Length" a "Transfer-Encoding: chunked", ond nid yw'r maint yn "Content-Length" yn cyfateb i faint y gadwyn talpedig, sy'n yn llai na'r gwerth gwirioneddol. Os yw'r frontend yn prosesu ac yn anfon y cais ymlaen yn unol â "Content-Length" a bod y pen ôl yn aros i'r bloc ei gwblhau yn seiliedig ar "Transfer-Encoding: chunked", yna bydd diwedd y data yn seiliedig ar "Transfer-Encoding: chunked" yn cael ei benderfynu’n gynharach a’r gynffon sy’n weddill o’r cais fydd yr ymosodwr ar ddechrau’r cais nesaf, h.y. bydd yr ymosodwr yn gallu atodi data mympwyol i ddechrau cais rhywun arall a drosglwyddir nesaf.

Ymosodiad ar systemau pen blaen-cefn sy'n ein galluogi i lyncu i mewn i geisiadau trydydd parti

Er mwyn pennu'r broblem yn y cyfuniad blaen-ôl a ddefnyddir, gallwch anfon cais fel hwn trwy'r blaen:

SWYDD / am HTTP/1.1
Gwesteiwr: example.com
Trosglwyddo-Amgodio: chunked
Cynnwys-Hyd: 4

1
Z
Q

Mae'r broblem yn bresennol os nad yw'r ôl-wyneb yn prosesu'r cais ar unwaith ac yn aros i'r bloc terfyn sero terfynol o ddata talpedig gyrraedd. Am wiriad mwy cyflawn parod cyfleustodau arbennig sydd hefyd yn profi dulliau posibl ar gyfer cuddio'r pennawd “Trosglwyddo-Amgodio: chunked” o'r blaen.

Mae cynnal ymosodiad go iawn yn dibynnu ar alluoedd y safle yr ymosodwyd arno, er enghraifft, wrth ymosod ar raglen we Trello, gallwch ddisodli dechrau'r cais (data amnewid fel “PUT /1/members/1234... x=x&csrf =1234&username=testzzz&bio=cake”) ac anfon neges yn cynnwys cais gwreiddiol defnyddiwr trydydd parti a'r Cwci dilysu a nodir ynddo. Ar gyfer ymosodiad ar saas-app.com, bu'n bosibl amnewid cod JavaScript yn yr ymateb trwy ei amnewid yn un o baramedrau'r cais. Ar gyfer yr ymosodiad ar redhat.com, defnyddiwyd triniwr mewnol i ailgyfeirio i wefan yr ymosodwr (cais o'r ffurflen “POST /search?dest=../assets/idx?redir=//[e-bost wedi'i warchod]/ HTTP/1.1").

Roedd defnyddio'r dull ar gyfer rhwydweithiau darparu cynnwys yn ei gwneud hi'n bosibl disodli'r wefan y gofynnwyd amdani trwy roi'r pennawd “Host:" yn ei le. Gellir defnyddio'r ymosodiad hefyd i wenwyno cynnwys systemau storio cynnwys a thynnu data cyfrinachol wedi'i storio. Pinacl y dull oedd trefnu ymosodiad ar PayPal, a wnaeth hi'n bosibl rhyng-gipio cyfrineiriau a anfonwyd gan ddefnyddwyr yn ystod y dilysu (addaswyd y cais iframe i weithredu JavaScript yng nghyd-destun y dudalen paypal.com/us/gifts, ar gyfer pa PDC (Polisi Diogelwch Cynnwys) na chafodd ei gymhwyso).

Yn ddiddorol, yn 2005 roedd arfaethedig techneg ffugio ceisiadau tebyg yn ei hanfod sy'n eich galluogi i ffugio data mewn dirprwyon caching (Tomcat, squid, mod_proxy) neu osgoi blocio waliau tân trwy nodi sawl cais “GET” neu “POST” o fewn un sesiwn HTTP.

Ffynhonnell: opennet.ru

Ychwanegu sylw