Kerentanan di FreeBSD, IPnet dan Nucleus NET terkait dengan kesalahan dalam implementasi kompresi DNS

Kelompok penelitian Forescout Research Labs dan JSOF Research telah mempublikasikan hasil studi bersama tentang keamanan berbagai implementasi skema kompresi yang digunakan untuk mengemas nama duplikat dalam pesan DNS, mDNS, DHCP, dan IPv6 RA (mengemas bagian domain duplikat dalam pesan yang mencakup banyak nama). Selama pekerjaan, 9 kerentanan diidentifikasi, yang dirangkum dengan nama kode NAME:WRECK.

Masalah telah diidentifikasi di FreeBSD, serta di subsistem jaringan IPnet, Nucleus NET dan NetX, yang telah tersebar luas di sistem operasi real-time VxWorks, Nucleus dan ThreadX yang digunakan dalam perangkat otomasi, penyimpanan, perangkat medis, avionik, printer dan elektronik konsumen. Diperkirakan setidaknya 100 juta perangkat terkena dampak kerentanan ini.

  • Kerentanan di FreeBSD (CVE-2020-7461) memungkinkan untuk mengatur eksekusi kodenya dengan mengirimkan paket DHCP yang dirancang khusus ke penyerang yang berlokasi di jaringan lokal yang sama dengan korban, yang diproses oleh klien DHCP yang rentan. ke buffer overflow. Masalah ini diatasi dengan fakta bahwa proses dhclient yang memuat kerentanan tersebut berjalan dengan hak istimewa pengaturan ulang di lingkungan Capsicum yang terisolasi, yang memerlukan identifikasi kerentanan lain untuk keluar.

    Inti dari kesalahan ini terletak pada pemeriksaan parameter yang salah, dalam paket yang dikembalikan oleh server DHCP dengan opsi DHCP 119, yang memungkinkan Anda untuk mentransfer daftar "pencarian domain" ke pemecah masalah. Perhitungan yang salah dari ukuran buffer yang diperlukan untuk mengakomodasi nama domain yang belum dibongkar menyebabkan informasi yang dikendalikan penyerang ditulis di luar buffer yang dialokasikan. Di FreeBSD, masalahnya telah diperbaiki pada bulan September tahun lalu. Masalahnya hanya dapat dieksploitasi jika Anda memiliki akses ke jaringan lokal.

  • Kerentanan dalam tumpukan jaringan IPnet tertanam yang digunakan di RTOS VxWorks memungkinkan potensi eksekusi kode di sisi klien DNS karena penanganan kompresi pesan DNS yang tidak tepat. Ternyata, kerentanan ini pertama kali diidentifikasi oleh Exodus pada tahun 2016, namun tidak pernah diperbaiki. Permintaan baru ke Wind River juga tidak terjawab dan perangkat IPnet tetap rentan.
  • Enam kerentanan diidentifikasi dalam tumpukan Nucleus NET TCP/IP, yang didukung oleh Siemens, dua di antaranya dapat menyebabkan eksekusi kode jarak jauh, dan empat dapat menyebabkan penolakan layanan. Masalah berbahaya pertama terkait dengan kesalahan saat mendekompresi pesan DNS terkompresi, dan yang kedua terkait dengan penguraian label nama domain yang salah. Kedua masalah tersebut mengakibatkan buffer overflow saat memproses respons DNS yang diformat khusus.

    Untuk mengeksploitasi kerentanan, penyerang hanya perlu mengirimkan respons yang dirancang khusus terhadap setiap permintaan sah yang dikirim dari perangkat yang rentan, misalnya dengan melakukan serangan MTIM dan mengganggu lalu lintas antara server DNS dan korban. Jika penyerang memiliki akses ke jaringan lokal, ia dapat meluncurkan server DNS yang mencoba menyerang perangkat bermasalah dengan mengirimkan permintaan mDNS dalam mode siaran.

  • Kerentanan dalam tumpukan jaringan NetX (Azure RTOS NetX), yang dikembangkan untuk ThreadX RTOS dan dibuka pada tahun 2019 setelah diambil alih oleh Microsoft, terbatas pada penolakan layanan. Masalah ini disebabkan oleh kesalahan dalam penguraian pesan DNS terkompresi dalam implementasi penyelesai.

Dari tumpukan jaringan yang diuji di mana tidak ditemukan kerentanan terkait kompresi data berulang dalam pesan DNS, proyek berikut diberi nama: lwIP, Nut/Net, Zephyr, uC/TCP-IP, uC/TCP-IP, FreeRTOS+TCP , OpenThread dan FNET. Selain itu, dua yang pertama (Nut/Net dan lwIP) sama sekali tidak mendukung kompresi pesan DNS, sementara yang lain menerapkan operasi ini tanpa kesalahan. Selain itu, perlu dicatat bahwa sebelumnya peneliti yang sama telah mengidentifikasi kerentanan serupa di tumpukan Treck, uIP, dan PicoTCP.

Sumber: opennet.ru

Tambah komentar