2 Kerentanan DoS telah diidentifikasi dalam berbagai implementasi protokol HTTP/8

Peneliti dari Netflix dan Google terungkap Terdapat delapan kerentanan dalam berbagai implementasi protokol HTTP/2 yang dapat menyebabkan penolakan layanan dengan mengirimkan aliran permintaan jaringan dengan cara tertentu. Masalah ini mempengaruhi sebagian besar server HTTP dengan dukungan HTTP/2 sampai tingkat tertentu dan mengakibatkan pekerja kehabisan memori atau membuat terlalu banyak beban CPU. Pembaruan yang menghilangkan kerentanan sudah disajikan nginx 1.16.1/1.17.3 ΠΈ H2O 2.2.6, tapi untuk saat ini tidak tersedia untuk Apache httpd dan produk-produk lain.

Permasalahan ini diakibatkan oleh komplikasi yang diperkenalkan ke dalam protokol HTTP/2 terkait dengan penggunaan struktur biner, sistem untuk membatasi aliran data dalam koneksi, mekanisme prioritas aliran, dan adanya pesan kontrol mirip ICMP yang beroperasi pada koneksi HTTP/2. level (misalnya, ping, reset, dan pengaturan aliran). Banyak implementasi yang tidak membatasi aliran pesan kontrol dengan benar, tidak mengelola antrian prioritas secara efisien saat memproses permintaan, atau menggunakan implementasi algoritma kontrol aliran yang kurang optimal.

Sebagian besar metode serangan yang teridentifikasi adalah mengirimkan permintaan tertentu ke server, yang menghasilkan sejumlah besar respons. Jika klien tidak membaca data dari soket dan tidak menutup koneksi, antrian buffering respons di sisi server terus terisi. Perilaku ini menimbulkan beban pada sistem manajemen antrean untuk memproses koneksi jaringan dan, bergantung pada fitur implementasi, menyebabkan habisnya memori atau sumber daya CPU yang tersedia.

Kerentanan yang teridentifikasi:

  • CVE-2019-9511 (Data Dribble) - penyerang meminta sejumlah besar data ke dalam beberapa thread dengan memanipulasi ukuran jendela geser dan prioritas thread, memaksa server untuk mengantri data dalam blok 1-byte;
  • CVE-2019-9512 (Ping Flood) - penyerang terus menerus meracuni pesan ping melalui koneksi HTTP/2, menyebabkan antrian internal tanggapan yang dikirim membanjiri sisi lain;
  • CVE-2019-9513 (Resource Loop) - penyerang membuat beberapa thread permintaan dan terus-menerus mengubah prioritas thread, menyebabkan pohon prioritas diacak;
  • CVE-2019-9514 (Reset Banjir) - penyerang membuat banyak thread
    dan mengirimkan permintaan yang tidak valid melalui setiap thread, menyebabkan server mengirim frame RST_STREAM, tetapi tidak menerimanya untuk mengisi antrian respons;

  • CVE-2019-9515 (Pengaturan Banjir) - penyerang mengirimkan aliran bingkai "PENGATURAN" kosong, sebagai tanggapannya server harus mengakui penerimaan setiap permintaan;
  • CVE-2019-9516 (Kebocoran Header Panjang 0) – penyerang mengirimkan aliran header dengan nama null dan nilai null, dan server mengalokasikan buffer di memori untuk menyimpan setiap header dan tidak melepaskannya hingga sesi berakhir ;
  • CVE-2019-9517 (Buffering Data Internal) - penyerang terbuka
    Jendela geser HTTP/2 bagi server untuk mengirim data tanpa batasan, namun tetap menutup jendela TCP, mencegah data benar-benar ditulis ke soket. Selanjutnya, penyerang mengirimkan permintaan yang memerlukan respons besar;

  • CVE-2019-9518 (Banjir Bingkai Kosong) - Penyerang mengirimkan aliran bingkai bertipe DATA, HEADERS, CONTINUATION, atau PUSH_PROMISE, tetapi dengan payload kosong dan tidak ada tanda penghentian aliran. Server menghabiskan waktu untuk memproses setiap frame, tidak proporsional dengan bandwidth yang dikonsumsi oleh penyerang.

Sumber: opennet.ru

Tambah komentar