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

Pasukan penyelidik dari University of California, Riverside telah menerbitkan varian baharu serangan DNS SAD (CVE-2021-20322) yang berfungsi walaupun perlindungan ditambah tahun lepas untuk menyekat kerentanan CVE-2020-25705. Kaedah baharu ini secara amnya serupa dengan kelemahan tahun lepas dan hanya berbeza dalam penggunaan jenis paket ICMP yang berbeza untuk menyemak port UDP aktif. Serangan yang dicadangkan membenarkan penggantian data rekaan ke dalam cache pelayan DNS, yang boleh digunakan untuk menggantikan alamat IP domain sewenang-wenang dalam cache dan mengalihkan permintaan ke domain ke pelayan penyerang.

Kaedah yang dicadangkan hanya berfungsi dalam timbunan rangkaian Linux kerana sambungannya kepada keanehan mekanisme pemprosesan paket ICMP di Linux, yang bertindak sebagai sumber kebocoran data yang memudahkan penentuan nombor port UDP yang digunakan oleh pelayan untuk menghantar permintaan luar. Perubahan yang menyekat kebocoran maklumat telah diterima pakai ke dalam kernel Linux pada penghujung bulan Ogos (pembetulan telah disertakan dalam kemas kini kernel 5.15 dan September kepada cawangan LTS kernel). Pembaikan bermuara kepada beralih kepada menggunakan algoritma pencincangan SipHash dalam cache rangkaian dan bukannya Jenkins Hash. Status membetulkan kelemahan dalam pengedaran boleh dinilai pada halaman ini: Debian, RHEL, Fedora, SUSE, Ubuntu.

Menurut penyelidik yang mengenal pasti masalah itu, kira-kira 38% penyelesai terbuka pada rangkaian terdedah, termasuk perkhidmatan DNS popular seperti OpenDNS dan Quad9 (9.9.9.9). Bagi perisian pelayan pula, serangan boleh dilakukan dengan menggunakan pakej seperti BIND, Unbound dan dnsmasq pada pelayan Linux. Masalahnya tidak muncul pada pelayan DNS yang dijalankan pada sistem Windows dan BSD. Untuk berjaya melakukan serangan, perlu menggunakan spoofing IP, i.e. adalah dikehendaki bahawa ISP penyerang tidak menyekat paket dengan alamat IP sumber palsu.

Sebagai peringatan, serangan DNS SAD memintas perlindungan yang ditambahkan pada pelayan DNS untuk menyekat kaedah keracunan cache DNS klasik yang dicadangkan pada tahun 2008 oleh Dan Kaminsky. Kaedah Kaminsky memanipulasi saiz kecil medan ID pertanyaan DNS, iaitu hanya 16 bit. Untuk memilih pengecam transaksi DNS yang betul yang diperlukan untuk penipuan nama hos, cukup untuk menghantar kira-kira 7000 permintaan dan mensimulasikan kira-kira 140 ribu respons rekaan. Serangan berpunca daripada menghantar sejumlah besar paket dengan pengikatan IP rekaan dan dengan pengecam transaksi DNS yang berbeza kepada penyelesai DNS. Untuk mengelakkan cache bagi respons pertama, setiap respons palsu mengandungi nama domain yang diubah suai sedikit (1.example.com, 2.example.com, 3.example.com, dsb.).

Untuk melindungi daripada jenis serangan ini, pengeluar pelayan DNS melaksanakan pengedaran rawak bilangan port rangkaian sumber yang permintaan resolusi dihantar, yang mengimbangi saiz pengecam yang tidak cukup besar. Selepas melaksanakan perlindungan untuk menghantar respons rekaan, selain memilih pengecam 16-bit, ia menjadi perlu untuk memilih salah satu daripada 64 ribu port, yang meningkatkan bilangan pilihan untuk pemilihan kepada 2^32.

Kaedah DNS SAD membolehkan anda secara radikal memudahkan penentuan nombor port rangkaian dan mengurangkan serangan kepada kaedah Kaminsky klasik. Penyerang boleh mengesan akses kepada port UDP yang tidak digunakan dan aktif dengan mengambil kesempatan daripada maklumat yang bocor tentang aktiviti port rangkaian semasa memproses paket tindak balas ICMP. Kaedah ini membolehkan kami mengurangkan bilangan pilihan carian sebanyak 4 susunan magnitud - 2^16+2^16 dan bukannya 2^32 (131_072 bukannya 4_294_967_296). Kebocoran maklumat yang membolehkan anda menentukan port UDP aktif dengan cepat disebabkan oleh kecacatan dalam kod untuk memproses paket ICMP dengan permintaan pemecahan (bendera Diperlukan Fragmentasi ICMP) atau pengalihan (bendera ICMP Redirect). Menghantar paket sedemikian mengubah keadaan cache dalam timbunan rangkaian, yang memungkinkan untuk menentukan, berdasarkan respons pelayan, port UDP mana yang aktif dan yang tidak.

Senario Serangan: Apabila penyelesai DNS cuba menyelesaikan nama domain, ia menghantar pertanyaan UDP kepada pelayan DNS yang menyediakan domain. Semasa penyelesai menunggu respons, penyerang boleh menentukan nombor port sumber yang digunakan untuk menghantar permintaan dengan cepat dan menghantar respons palsu kepadanya, menyamar sebagai pelayan DNS yang menyediakan domain menggunakan pemalsuan alamat IP. Penyelesai DNS akan cache data yang dihantar dalam respons palsu dan untuk beberapa waktu akan mengembalikan alamat IP yang digantikan oleh penyerang untuk semua permintaan DNS lain untuk nama domain.

Sumber: opennet.ru

Tambah komen