Serangan DNS SAD baru untuk memasukkan data palsu ke dalam cache DNS

Sebuah tim peneliti dari University of California, Riverside telah menerbitkan varian baru serangan DNS SAD (CVE-2021-20322) yang berfungsi meskipun perlindungan ditambahkan tahun lalu untuk memblokir kerentanan CVE-2020-25705. Metode baru ini umumnya mirip dengan kerentanan tahun lalu dan hanya berbeda dalam penggunaan jenis paket ICMP yang berbeda untuk memeriksa port UDP yang aktif. Serangan yang diusulkan memungkinkan penggantian data fiktif ke dalam cache server DNS, yang dapat digunakan untuk mengganti alamat IP domain arbitrer di cache dan mengalihkan permintaan ke domain tersebut ke server penyerang.

Metode yang diusulkan hanya berfungsi di tumpukan jaringan Linux karena hubungannya dengan kekhasan mekanisme pemrosesan paket ICMP di Linux, yang bertindak sebagai sumber kebocoran data yang menyederhanakan penentuan nomor port UDP yang digunakan oleh server untuk mengirim permintaan eksternal. Perubahan yang memblokir kebocoran informasi diterapkan pada kernel Linux pada akhir Agustus (perbaikan disertakan dalam kernel 5.15 dan pembaruan September pada cabang LTS kernel). Perbaikannya adalah beralih menggunakan algoritma hashing SipHash di cache jaringan, bukan Jenkins Hash. Status perbaikan kerentanan dalam distribusi dapat dinilai di halaman berikut: Debian, RHEL, Fedora, SUSE, Ubuntu.

Menurut para peneliti yang mengidentifikasi masalah tersebut, sekitar 38% dari pemecah masalah terbuka di jaringan rentan, termasuk layanan DNS populer seperti OpenDNS dan Quad9 (9.9.9.9). Sedangkan untuk software server, serangan dapat dilakukan dengan menggunakan paket seperti BIND, Unbound dan dnsmasq pada server Linux. Masalah tidak muncul pada server DNS yang berjalan pada sistem Windows dan BSD. Agar berhasil melakukan serangan, perlu menggunakan IP spoofing, yaitu. ISP penyerang harus tidak memblokir paket dengan alamat IP sumber palsu.

Sebagai pengingat, serangan DNS SAD melewati perlindungan yang ditambahkan ke server DNS untuk memblokir metode peracunan cache DNS klasik yang diusulkan pada tahun 2008 oleh Dan Kaminsky. Metode Kaminsky memanipulasi ukuran kecil bidang ID kueri DNS, yaitu hanya 16 bit. Untuk memilih pengidentifikasi transaksi DNS yang benar yang diperlukan untuk spoofing nama host, cukup mengirim sekitar 7000 permintaan dan mensimulasikan sekitar 140 ribu respons fiktif. Serangan tersebut bermuara pada pengiriman sejumlah besar paket dengan pengikatan IP fiktif dan pengidentifikasi transaksi DNS yang berbeda ke penyelesai DNS. Untuk mencegah cache respons pertama, setiap respons dummy berisi nama domain yang sedikit dimodifikasi (1.example.com, 2.example.com, 3.example.com, dll.).

Untuk melindungi dari serangan jenis ini, produsen server DNS menerapkan distribusi acak jumlah port jaringan sumber tempat permintaan resolusi dikirim, yang mengkompensasi ukuran pengidentifikasi yang tidak mencukupi. Setelah menerapkan perlindungan untuk mengirimkan respons fiktif, selain memilih pengidentifikasi 16-bit, perlu memilih salah satu dari 64 ribu port, yang meningkatkan jumlah opsi pemilihan menjadi 2^32.

Metode SAD DNS memungkinkan Anda menyederhanakan penentuan nomor port jaringan secara radikal dan mengurangi serangan ke metode Kaminsky klasik. Penyerang dapat mendeteksi akses ke port UDP yang tidak digunakan dan aktif dengan memanfaatkan kebocoran informasi tentang aktivitas port jaringan saat memproses paket respons ICMP. Metode ini memungkinkan kita mengurangi jumlah opsi pencarian sebanyak 4 kali lipat - 2^16+2^16, bukan 2^32 (131_072, bukan 4_294_967_296). Kebocoran informasi yang memungkinkan Anda dengan cepat menentukan port UDP aktif disebabkan oleh cacat pada kode untuk memproses paket ICMP dengan permintaan fragmentasi (ICMP Fragmentation Needed flag) atau pengalihan (ICMP Redirect flag). Mengirim paket tersebut mengubah status cache di tumpukan jaringan, yang memungkinkan untuk menentukan, berdasarkan respons server, port UDP mana yang aktif dan mana yang tidak.

Skenario Serangan: Saat penyelesai DNS mencoba menyelesaikan nama domain, ia mengirimkan kueri UDP ke server DNS yang melayani domain tersebut. Sementara penyelesai menunggu tanggapan, penyerang dapat dengan cepat menentukan nomor port sumber yang digunakan untuk mengirim permintaan dan mengirimkan tanggapan palsu ke sana, meniru server DNS yang melayani domain menggunakan spoofing alamat IP. Penyelesai DNS akan menyimpan data yang dikirim dalam respons palsu dan untuk beberapa waktu akan mengembalikan alamat IP yang diganti oleh penyerang untuk semua permintaan DNS lainnya untuk nama domain.

Sumber: opennet.ru

Tambah komentar