Ping Kematian (bahasa Inggris: Ping of death disingkat POD) adalah jenis serangan pada sistem komputer yang melibatkan pengiriman ping dalam format yang salah atau berbahaya ke komputer.

Paket ping yang dibentuk dengan benar biasanya berukuran 56 bita, atau 64 bita ketika header ICMP dipertimbangkan, dan 84 termasuk header Protokol internet versi 4. Namun, paket IPv4 apa pun (termasuk ping) mungkin berukuran 65.535 bita. Beberapa sistem komputer tidak pernah dirancang untuk menangani dengan benar paket ping yang lebih besar dari ukuran paket maksimum karena melanggar Protokol Internet yang didokumentasikan di RFC 791.[1] Seperti paket lain yang berukuran besar namun terbentuk dengan baik, ping kematian terfragmentasi menjadi kelompok 8 oktet sebelum transmisi. Namun, ketika komputer target memasang kembali paket yang rusak, buffer overflow dapat terjadi, menyebabkan sistem crash dan berpotensi memungkinkan injeksi kode berbahaya.

Dalam implementasi awal TCP/IP, bug ini mudah dieksploitasi dan dapat memengaruhi berbagai sistem termasuk Unix, Linux, Mac, Windows, dan perangkat periferal. Saat sistem mulai menyaring ping kematian melalui tembok api dan metode deteksi lainnya, jenis serangan ping yang berbeda yang dikenal sebagai ping flooding kemudian muncul, yang membanjiri korban dengan begitu banyak permintaan ping sehingga lalu lintas normal gagal mencapai sistem (serangan denial-of-service dasar).

Informasi rinci

sunting

Seperti yang didefinisikan dalam RFC 791, panjang paket maksimum dari sebuah paket IPv4 termasuk header IP adalah 65.535 (216 − 1) bita, batasan yang disajikan oleh penggunaan bidang header IP lebar 16-bit yang menggambarkan total panjang paket.

Lapisan Data Link yang mendasarinya hampir selalu membatasi ukuran bingkai maksimum (Lihat MTU). Dalam Ethernet, ini biasanya 1500 bita. Dalam kasus seperti itu, paket IP yang besar dibagi menjadi beberapa paket IP (juga dikenal sebagai IP fragments), sehingga setiap fragmen IP akan cocok dengan batas yang ditentukan. Penerima fragmen IP akan menyusunnya kembali menjadi paket IP lengkap dan melanjutkan pemrosesan seperti biasa.

Saat fragmentasi dilakukan, setiap fragmen IP perlu membawa informasi tentang bagian mana dari paket IP asli yang dikandungnya. Informasi ini disimpan di bidang Fragment Offset, di header IP. Bidang ini panjangnya 13 bit, dan berisi offset data dalam fragmen IP saat ini, dalam paket IP asli. Offset diberikan dalam satuan 8 bita. Ini memungkinkan offset maksimum 65.528 ((213-1)*8). Kemudian saat menambahkan 20 bita header IP, maksimumnya adalah 65.548 bita, yang melebihi ukuran bingkai maksimum. Artinya, fragmen IP dengan offset maksimum harus memiliki data yang tidak lebih dari 7 bita, atau akan melebihi batas panjang paket maksimum. Pengguna yang berniat jahat dapat mengirim fragmen IP dengan offset maksimum dan dengan lebih banyak data dari 8 bita (sebesar yang dimungkinkan oleh lapisan fisik).

Saat penerima merakit semua fragmen IP, itu akan berakhir dengan paket IP yang lebih besar dari 65.535 bita. Ini mungkin overflow buffer memori yang dialokasikan penerima untuk paket, dan dapat menyebabkan berbagai masalah.

Terbukti dari uraian di atas, masalah tidak ada hubungannya dengan ICMP, yang digunakan hanya sebagai payload, cukup besar untuk mengeksploitasi masalah. Ini adalah masalah dalam proses perakitan ulang fragmen IP, yang mungkin berisi semua jenis protokol (TCP, UDP, IGMP, dll.).

Koreksi masalah adalah dengan menambahkan pemeriksaan dalam proses perakitan ulang. Pemeriksaan untuk setiap fragmen IP yang masuk memastikan bahwa jumlah "Fragment Offset" dan bidang "Panjang total" di header IP dari setiap fragmen IP lebih kecil atau sama dengan 65.535. Jika jumlahnya lebih besar, maka paket tersebut tidak valid, dan fragmen IP diabaikan. Pemeriksaan ini dilakukan oleh beberapa tembok api, untuk melindungi host yang bugnya tidak diperbaiki. Perbaikan lain untuk masalah ini adalah menggunakan buffer memori yang lebih besar dari 65.535 bita untuk perakitan ulang paket. (Ini pada dasarnya adalah melanggar spesifikasi, karena menambahkan dukungan untuk paket yang lebih besar dari yang diizinkan.)

Ping Kematian dalam IPv6

sunting

Pada 2013, versi IPv6 dari ping kerentanan kematian ditemukan di Microsoft Windows. Tumpukan TCP/IP Windows tidak menangani alokasi memori dengan benar saat memproses paket ICMPv6 yang masuk dalam format yang salah, yang dapat menyebabkan penolakan layanan jarak jauh. Kerentanan ini telah diperbaiki di MS13-065 pada Agustus 2013.[2][3] CVE-ID untuk kerentanan ini adalah CVE-2013-3183.[4] Pada tahun 2020, bug lain (CVE-2020-16898) di ICMPv6 ditemukan di sekitar Iklan Router, yang bahkan dapat menyebabkan eksekusi kode jarak jauh.[5]

Lihat pula

sunting

Referensi

sunting
  1. ^ Erickson, Jon (2008). HACKING the art of exploitation  (edisi ke-2nd). San Francisco: NoStarch Press. hlm. 256. ISBN 1-59327-144-1. 
  2. ^ "Microsoft Security Bulletin MS13-065 - Important". Microsoft. August 13, 2013. Diakses tanggal February 25, 2017. 
  3. ^ Jackson, Joab (Aug 13, 2013). "Microsoft Patch Tuesday: The Ping of Death returns, IPv6-style". Diakses tanggal February 25, 2017. 
  4. ^ "CVE - CVE-2013-3183". The MITRE Corporation. Diakses tanggal February 25, 2017. 
  5. ^ "CVE-2020-16898 - Windows TCP/IP Remote Code Execution Vulnerability". Microsoft. October 13, 2020. Diakses tanggal October 14, 2020. 

Pranala luar

sunting