Mereka menemui versi baru serangan Penyeludupan Permintaan HTTP

The sistem web di mana frontend menerima sambungan melalui HTTP / 2 dan meneruskannya ke backend melalui HTTP / 1.1 jamtelah terkena versi baru dari serangan "Penyelundupan Permintaan HTTP", Ini memungkinkan dengan mengirimkan permintaan klien yang dirancang khusus, untuk membagi isi permintaan pengguna lain yang diproses dalam aliran yang sama antara frontend dan backend.

Serangan itu boleh digunakan untuk menyuntik kod JavaScript berbahaya dalam sesi dengan laman web yang sah, sistem sekatan akses pintasan dan memintas parameter pengesahan.

Pengarang kajian menunjukkan kemungkinan menyerang sistem Netflix, Verizon, Bitbucket, Netlify CDN dan Atlassian, dan menerima $ 56.000 dalam program ganjaran untuk mengenal pasti kelemahan. Masalahnya juga telah disahkan dalam produk F5 Networks.

Masalahnya sebahagiannya mempengaruhi mod_proxy pada pelayan http Apache (CVE-2021-33193), perbaikan yang diharapkan dalam versi 2.4.49 (pembangun diberitahu mengenai masalah tersebut pada awal Mei dan diberi waktu 3 bulan untuk memperbaikinya). Dalam nginx, kemampuan untuk secara bersamaan menentukan tajuk "Panjang Isi" dan "Pengekodan Transfer" telah disekat pada versi sebelumnya (1.21.1).

Prinsip operasi kaedah baru permintaan yang sepadan dalam lalu lintas serupa dengan kerentanan yang ditemui oleh penyelidik yang sama dua tahun lalu, tetapi terbatas pada antara muka yang menerima permintaan melalui HTTP / 1.1.

Serangan "Penyelewengan Permintaan HTTP" klasik didasarkan pada fakta bahawa frontend dan backend menafsirkan penggunaan tajuk HTTP "Content-Length" secara berbeza (menentukan ukuran keseluruhan data dalam permintaan) dan "Transfer-Encoding: chunked" ( membolehkan anda memindahkan data dalam bentuk potongan) ...

Sebagai contoh, jika antara muka hanya menyokong "Panjang Kandungan" tetapi mengabaikan "Pengekodan Transfer: Fragmentasi", penyerang dapat mengirim permintaan yang berisi tajuk "Panjang Isi" dan "Pengekodan Pemindahan: Fragmen", tetapi ukurannya id "Panjang kandungan" tidak sesuai dengan ukuran rentetan yang dipotong. Dalam kes ini, frontend akan memproses dan mengarahkan permintaan sesuai dengan "Panjang kandungan", dan backend akan menunggu blok selesai berdasarkan "Transfer encoding: chunked".

Tidak seperti protokol HTTP / 1.1 tekstual, yang diuraikan pada tahap garis, HTTP / 2 adalah protokol binari dan memanipulasi blok data ukuran yang telah ditentukan. Walau bagaimanapun, HTTP / 2 gunakan header pseudo yang sesuai dengan tajuk HTTP biasa. Semasa berinteraksi dengan backend menggunakan protokol HTTP / 1.1, bahagian depan menerjemahkan tajuk pseudo ini dalam tajuk HTTP / 1.1 HTTP yang serupa. Masalahnya ialah backend membuat keputusan mengenai analisis transmisi berdasarkan tajuk HTTP yang ditetapkan oleh frontend, tanpa mengetahui parameter permintaan asal.

Walaupun dalam bentuk pseudo-header, nilainya "Panjang kandungan" dan "pengekodan pemindahan" mereka dapat dialirkan, walaupun tidak digunakan dalam HTTP / 2, karena ukuran semua data ditentukan dalam bidang yang terpisah. Namun, ketika mengubah permintaan HTTP / 2 menjadi HTTP / 1.1, header ini melewati dan dapat membingungkan backend.

Terdapat dua pilihan serangan utama: H2.TE dan H2.CL, di mana backend tertipu oleh pengekodan transfer yang salah atau nilai panjang kandungan yang tidak sesuai dengan ukuran sebenar badan permintaan yang diterima oleh frontend melalui Protokol HTTP / 2.

Sebagai contoh serangan H2.CL, ukuran yang tidak betul ditentukan dalam header pseudo panjang kandungan semasa mengemukakan permintaan HTTP / 2 ke Netflix. Permintaan ini membawa kepada penambahan tajuk Kandungan HTTP-Panjang serupa ketika mengakses backend melalui HTTP / 1.1, tetapi kerana ukuran dalam Panjang kandungan kurang dari yang sebenarnya, sebahagian data dalam barisan diproses sebagai permulaan permintaan berikutnya.

Attack Tools telah ditambahkan ke Burp's Toolkit dan tersedia sebagai pelanjutan Turbo Intruder. Proksi web, penyeimbang beban, pemecut web, sistem penyampaian kandungan, dan konfigurasi lain di mana permintaan diarahkan dalam skema frontend-backend rentan terhadap masalah tersebut.

Fuente: https://portswigger.net


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.