Au găsit o nouă versiune a atacului HTTP Request Smuggling

L sisteme web în care front-end acceptă conexiuni prin HTTP/2 și le transmite backend-ului prin HTTP/1.1hau fost expuși la o nouă versiune a atacului „HTTP Request Smuggling”, care permite, prin trimiterea de cereri client special concepute, să se împartă în conținutul solicitărilor altor utilizatori procesate în același flux între frontend și backend.

Atacul poate fi folosit pentru a injecta cod JavaScript rău intenționat într-o sesiune cu un site legitim, ocoliți sistemele de restricție de acces și interceptați parametrii de autentificare.

Autorul studiului a demonstrat posibilitatea de a ataca sistemele Netflix, Verizon, Bitbucket, Netlify CDN și Atlassianși a primit 56.000 USD în programe de recompense pentru identificarea vulnerabilităților. Problema a fost confirmată și în produsele F5 Networks.

Problema afectează parțial mod_proxy pe serverul Apache http (CVE-2021-33193), sunt așteptate remedieri în versiunea 2.4.49 (dezvoltatorii au fost notificați cu privire la problemă la începutul lunii mai și au avut 3 luni pentru a o remedia). În nginx, capacitatea de a specifica simultan anteturile „Lungimea conținutului” și „Codificarea transferului” a fost blocată în versiunea anterioară (1.21.1).

Principiul de funcționare al noii metode pentru a încadra cererile în trafic Este similar cu vulnerabilitatea descoperită de același cercetător în urmă cu doi ani, dar este limitat la interfețele care acceptă cereri prin HTTP/1.1.

Atacul clasic „HTTP Request Smuggling” s-a bazat pe faptul că front-end-urile și backend-urile interpretează diferit utilizarea antetelor HTTP „Content-Length” (determină dimensiunea totală a datelor din cerere) și „Transfer-Encoding: chunked” ( vă permite să transferați date în bucăți)...

De exemplu, dacă interfața acceptă doar „Lungimea conținutului”, dar ignoră „Codificarea transferului: fragmentat”, un atacator poate trimite o solicitare care conține anteturile „Lungimea conținutului” și „Codificarea transferului: fragmentat”, dar dimensiunea ro „Lungimea conținutului” nu se potrivește cu dimensiunea șirului fragmentat. În acest caz, interfața va procesa și redirecționa cererea în funcție de „Lungimea conținutului”, iar backend-ul va aștepta ca blocul să se finalizeze pe baza „Codificarea transferului: în bucăți”.

Spre deosebire de protocolul textual HTTP/1.1, care este analizat la nivel de linie, HTTP/2 este un protocol binar și manipulează blocuri de date de o dimensiune predeterminată. Cu toate acestea, HTTP/2 utilizați pseudo-anteturi care corespund antetelor HTTP normale. Când interacționați cu backend-ul folosind protocolul HTTP/1.1, frontend-ul traduce aceste pseudo-anteturi în anteturi similare HTTP/1.1 HTTP. Problema este că backend-ul ia decizii cu privire la analiza fluxului pe baza antetelor HTTP setate de front-end, fără a cunoaște parametrii cererii inițiale.

Chiar și sub formă de pseudo-anteturi, valorile „lungimea conținutului” și „codificarea de transfer” pot fi transmise, deși nu sunt utilizate în HTTP/2, deoarece dimensiunea tuturor datelor este determinată într-un câmp separat. Cu toate acestea, atunci când convertiți o solicitare HTTP/2 în HTTP/1.1, aceste anteturi sunt transmise și pot crea confuzie pentru backend.

Există două opțiuni principale de atac: H2.TE și H2.CL, în care backend-ul este păcălit de o codificare incorectă a transferului sau de o valoare a lungimii conținutului care nu corespunde cu dimensiunea reală a corpului cererii primite de front-end prin protocolul HTTP/2.

Ca exemplu de atac H2.CL, o dimensiune incorectă este specificată în pseudo-header lungimea conținutului la trimiterea unei cereri HTTP/2 către Netflix. Această solicitare duce la adăugarea unui antet Lungimea conținutului HTTP similar la accesarea backend-ului prin HTTP/1.1, dar din moment ce dimensiunea în Lungimea conținutului este mai mică decât cea reală, o parte din datele din coadă sunt procesate ca începutul următoarei solicitări.

Instrumentele de atac au fost deja adăugate la setul de instrumente Burp și sunt disponibile ca extensie Turbo Intruder. Proxy-urile web, echilibratoarele de încărcare, acceleratoarele web, sistemele de livrare a conținutului și alte setări în care solicitările sunt redirecționate într-o schemă frontend-backend sunt susceptibile la această problemă.

Fuente: https://portswigger.net


Fii primul care comenteaza

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.