Kerentanan di uClibc dan uClibc-ng memungkinkan pemalsuan cache DNS

Di perpustakaan C standar uClibc dan uClibc-ng, yang digunakan di banyak perangkat tertanam dan portabel, kerentanan telah diidentifikasi (CVE tidak ditetapkan) yang memungkinkan data fiktif dimasukkan ke dalam cache DNS, yang dapat digunakan untuk menggantikan alamat IP dari domain arbitrer di cache dan mengalihkan permintaan ke domain di server penyerang.

Masalah ini mempengaruhi berbagai firmware Linux untuk router, titik akses, dan perangkat Internet of Things, serta distribusi Linux tertanam seperti OpenWRT dan Embedded Gentoo. Perlu dicatat bahwa kerentanan muncul di perangkat dari banyak produsen (misalnya, uClibc digunakan dalam firmware Linksys, Netgear, dan Axis), tetapi karena kerentanan tetap tidak diperbaiki di uClibc dan uClibc-ng, informasi terperinci tentang perangkat dan produsen tertentu yang produknya apakah masalahnya sudah tersedia, belum diungkapkan.

Kerentanan ini disebabkan oleh penggunaan pengidentifikasi transaksi yang dapat diprediksi dalam kode untuk mengirim permintaan DNS. Nomor identifikasi permintaan DNS dipilih hanya dengan meningkatkan penghitung tanpa menggunakan pengacakan tambahan nomor port, yang memungkinkan untuk meracuni cache DNS melalui pengiriman preemptive paket UDP dengan respons fiktif (respon akan diterima jika tiba sebelumnya respons dari server sebenarnya dan menyertakan ID yang benar). Berbeda dengan metode Kaminsky yang diusulkan pada tahun 2008, pengidentifikasi transaksi bahkan tidak perlu ditebak, karena pada awalnya dapat diprediksi (nilai awalnya ditetapkan ke 1, yang bertambah seiring dengan setiap permintaan, dan tidak dipilih secara acak).

Kerentanan di uClibc dan uClibc-ng memungkinkan pemalsuan cache DNS

Untuk melindungi dari kekerasan pengidentifikasi, spesifikasi merekomendasikan penggunaan tambahan distribusi acak jumlah port jaringan sumber tempat permintaan DNS dikirim, yang mengkompensasi ukuran pengidentifikasi yang tidak mencukupi. Saat Anda mengaktifkan pengacakan port untuk menghasilkan respons fiktif, selain memilih pengidentifikasi 16-bit, Anda juga harus memilih nomor port jaringan. Di uClibc dan uClibc-ng, pengacakan seperti itu tidak diaktifkan secara eksplisit (saat memanggil bind, port UDP sumber acak tidak ditentukan) dan penggunaannya bergantung pada pengaturan sistem operasi.

Ketika pengacakan pot dinonaktifkan, menentukan ID permintaan tambahan ditandai sebagai tugas yang sepele. Namun meskipun pengacakan digunakan, penyerang hanya perlu menebak port jaringan dari kisaran 32768–60999, yang mana mereka dapat menggunakan pengiriman respons fiktif secara simultan secara besar-besaran ke port jaringan yang berbeda.

Kerentanan di uClibc dan uClibc-ng memungkinkan pemalsuan cache DNS

Masalah ini telah dikonfirmasi di semua rilis uClibc dan uClibc-ng saat ini, termasuk versi terbaru uClibc 0.9.33.2 dan uClibc-ng 1.0.40. Pada bulan September 2021, informasi tentang kerentanan dikirim ke CERT/CC untuk persiapan perbaikan yang terkoordinasi. Pada bulan Januari 2022, data mengenai masalah ini dibagikan kepada lebih dari 200 produsen yang berkolaborasi dengan CERT/CC. Pada bulan Maret, ada upaya untuk menghubungi pengelola proyek uClibc-ng secara terpisah, tetapi dia menjawab bahwa dia tidak dapat memperbaiki kerentanannya sendiri dan merekomendasikan untuk mengungkapkan informasi masalah tersebut kepada publik, dengan harapan menerima bantuan dalam mengembangkan a perbaikan dari masyarakat. Di antara produsennya, NETGEAR mengumumkan peluncuran pembaruan yang menghilangkan kerentanan.

Sumber: opennet.ru

Tambah komentar