Penggunaan HTTP/3 untuk Menenggarai Security Vulnerabilities HTTP/2 Rapid Reset

Bulan Oktober hingga November 2023 lalu tiga penyedia layanan komputasi awan (Cloud Computing) Amazon Web Service, Google Cloud, dan Microsoft Azure melaporkan serangan DDoS (Distributed Denial of Service) terbesar sepanjang sejarah. Senada dengan laporan tersebut, penyedia WAN (Wide-Area-Network) paling populer saat ini, Cloudflare, juga melaporkan hal yang sama. Serangan ini berhasil melumpuhkan layanan-layanan komputasi awan milik raksasa teknologi tersebut yang berimbas pada tidak beroperasinya sekian banyak website yang ditempatkan pada penyimpanan cloud tersebut. Laporan Google menuturkan servernya sempat dibanjiri dengan 398 juta request per detik yang besarnya tujuh kali lebih besar dibandingkan serangan DDoS pada tahun 2022 yang hanya sebesar 46 juta request per detik. Investigasi gabungan dari raksasa ini menetapkan terdapat zero-day exploit dari fitur protokol HTTP/2 yang dinamai “HTTP/2 Rapid Reset“. Setelah serangan tersebut sebuah group hacker dengan nama Anonymous Sudan menyatakan bahwa mereka adalah dalang dari serangan tersebut.

Memahami HTTP/2 Rapid Reset

HTTP/2 merupakan protokol pertukaran data di internet pada OSI layer level 7 yang merupakan pengembangan dari HTTP/1.1 yang diluncurkan pada tahun 1997. HTTP/1.1 dibuat menggunakan protokol TCP (Transmission Control Protocol) yang mewajibkan suatu koneksi untuk pertukaran data dianggap valid saat pengguna memberikan lagi sinyal acknowledge setelah data diterima. Fitur ini dikembangkan untuk memastikan ketersampaian dan keberterimaan informasi yang dikirim mengingat koneksi pada zaman tersebut tidak sebaik sekarang. Mirip seperti pendahulunya HTTP/2 juga dibangun menggunakan protokol TCP, bedanya pada satu koneksi yang sama diizinkan untuk ditumpangi beberapa permintaan data yang dapat berjalan secara simultan untuk menjawab kebutuhan zaman akan banyaknya konten dan pertukaran data yang perlu ditampilkan baik di situs internet, maupun aplikasi.

Sayangnya fitur yang secara lazim digunakan untuk mempercepat akses, justru menjadi suatu kerentanan. HTTP/2 Rapid Reset mengeksploitasi fitur tersebut dengan membuat ratusan ribu request pada satu koneksi dan membatalkannya sesaat diterima oleh server, dan melakukannya secara berulang. Bagi server yang tidak handal, dapat dipastikan bahwa server tersebut tidak dapat membalas saat dibanjiri oleh ratusan ribu request per detik. Bagi server yang handal, protokol TCP mewajibkan server mendapatkan sinyal acknowledge yang tidak kunjung datang karena sudah dibatalkan oleh hacker pada sisi lainnya. Sehingga secara kapasitas memori akan tertumpuk task untuk menunggu sinyal acknowledge dan lambat laun server pun akan lumpuh.

HTTP/3 – QUIC

Juni 2022, IETF (Internet Engineering Task Force) memperkenalkan HTTP/3. Berbeda dengan dua pendahulunya, HTTP/3 dibuat menggunakan protokol UDP (User Datagram Protocol) yang tidak mewajibkan server untuk menunggu sinyal acknowledge dari user. HTTP/3 juga dijenal sebagai HTTP/3 – QUIC yang mengedepankan tiga hal :

1. Faster Connection

Dengan fitur non-blocking, saat suatu pengiriman paket tidak sampai, hal ini tidak langsung memblok seluruh pengiriman paket berikutnya. Checksum dan parity bit dimainkan untuk meminta kembali paket yang tidak sampai.

2. Zero Round-trip

Dengan menggunakan UDP, HTTP/3 sama sekali tidak memerlukan sinyal acknowledge yang berdampak pada kecepatan yang lebih tinggi karena tidak ada round-trip dari user kembali ke server.

3. Encryption by Default

Kekurangan terbesar HTTP/2 yakni enkripsi, menghasilkan permasalahan keamanan di berbagai lini. Mengedepankan keamanan HTTP/3 akan secara otomatis mengenkrip data yang dikirimkan.

Kapan HTTP/3 siap digunakan ?

Browser-browser besar seperti Google, Firefox, dan Microsoft Edge sudah mulai implementasi support untuk membuka web dengan protokol HTTP/3. Tinggal menunggu waktu untuk HTTP/3 ditetapkan sebagai standar industri. Menuju ke sana ada baiknya pertanyaannya lebih diarahkan apakah DevOps Engineer kita sudah siap implementasi HTTP/3 ?