Coba jelasin Informasi rinci dari Ping Kematian dong

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.)