Johannes B. Ullrich, Ph.D. , Dekan Riset, SANS Technology Institute, telah membagikan detail mengenai kerentanan CVE-2020-16898.
Satu kerentanan yang mendapat perhatian para “defenders” minggu ini adalah CVE-2020-16898. Kerentanan, yang terkadang disebut “Bad Neighbor”, dapat digunakan untuk mengeksekusi arbitrary code di sistem Windows. Untuk mengeksploitasi kerentanan, penyerang harus mengirim router advertisement ICMPv6 yang dibuat secara khusus.
Apa Itu Router Advertisement?
Beberapa peneliti kadang menyebutnya sebagai “DHCP Lite”. IPv6 tidak terlalu mengandalkan DHCP untuk mengelola alamat IP. Lagi pula, kita mendapatkan banyak IPv6, dan kebutuhan untuk “mendaur ulang” alamat IP cukup banyak. Router akan mengirimkan router advertisement secara berkala atau sebagai tanggapan atas permintaan router yang dikirim oleh host yang baru saja bergabung dengan jaringan. Semua host yang “berbicara” dengan IPv6 akan mendengarkan router advertisement untuk mempelajari konfigurasi jaringan. Bahkan jika Anda menggunakan DHCPv6, Anda masih memerlukan router advertisement untuk mengetahui gateway default.
Satu lagi opsi yang ditambahkan baru-baru ini mencakup daftar server DNS rekursif. Ini “melengkapi” analogi DHCP-Lite dengan menawarkan gateway, alamat IP, dan server DNS. Data yang sama biasanya ditemukan di server DHCP.
Bagaimana server DNS rekursif (RDNSS) dikodekan dalam router advertisement?
Opsi router advertisement mengikuti format standar “Type/Length/Value”. Mereka mulai dengan satu byte yang menunjukkan type (25 = RDNSS), diikuti dengan byte yang menunjukkan length, dua byte yang telah disisihkan (reserved), dan “masa pakai” 4-byte. Ditambah, tentu saja, alamat IP server DNS.
Seperti tipikal IPv6, panjangnya ditunjukkan dalam kelipatan 8-byte. Jadi panjang “1” menunjukkan bahwa opsi kita adalah 8 byte. Kolom awal (Type, Length, Reserved, Lifetime) sama persis 8 byte panjangnya. Setiap alamat IP panjangnya 16 byte.
Untuk satu alamat IP, panjangnya adalah “3”. Setiap alamat IP menambahkan “2” (2 x 8 Bytes) lainnya. Akibatnya, panjangnya harus selalu ganjil.
Kerentanan dipicu jika panjangnya genap, dan lebih besar dari 3. Misalnya, pertimbangkan paket ini dengan panjang “4”:
Delapan byte terakhir dari alamat IP kedua tidak lagi termasuk dalam panjangnya. Dan di sinilah Windows menjadi bingung. Wireshark juga agak membingungkan:
Wireshark masih menampilkan kedua alamat IP tetapi juga mengenali bahwa ada data di luar panjang opsi.
Seberapa buruk kah ini?
Ini buruk karena ini memungkinkan eksekusi arbitrary code. Tetapi penyerang harus dapat mengirim paket dari jaringan korban. Bahkan host yang terekspos tidak dapat diserang dari “seluruh internet”, hanya di dalam subnet. Penyerang juga harus mengatasi fitur anti-eksploitasi di Windows 10 (pengacakan tata letak alamat dan semacamnya), yang memerlukan kebocoran informasi kedua, kerentanan, dan eksploitasi.
Apa yang dapat dilakukan?
Penambalan mungkin adalah solusi paling sederhana dan paling mudah, yang paling tidak mungkin menyebabkan masalah. Pilihan lain:
- Microsoft menawarkan kemampuan untuk mematikan fitur RDNSS sebagai opsi. Ini bisa, tentu saja, kembali menghantui Anda nanti saat Anda mulai menggunakan opsi ini.
- Berbagai IDS telah merilis signature untuk mendeteksi serangan tersebut.
- Beberapa switch menawarkan fitur “Router Advertising Guard” yang dapat membatasi router advertisement. Mungkin itu akan membantu.
Sumber: SANS ISC InfoSec Forums