Jutaan router pengguna akhir yang populer berada dalam risiko eksekusi kode jarak jauh (RCE) karena cacat tingkat tinggi dalam modul kernel KCodes NetUSB.
Modul ini memungkinkan perangkat jarak jauh terhubung ke router melalui IP dan mengakses perangkat USB apa pun (seperti printer, speaker, webcam, flash drive, dan periferal lainnya) yang terpasang di dalamnya. Ini dimungkinkan dengan menggunakan protokol NetUSB berpemilik dan driver kernel Linux yang meluncurkan server, yang membuat perangkat USB tersedia melalui jaringan. Untuk pengguna jarak jauh, seolah-olah perangkat USB secara fisik dicolokkan ke sistem lokal mereka.
Menurut laporan Selasa dari peneliti kerentanan SentinelOne Max Van Amerongen, penyerang dapat mengeksploitasi kerentanan dari jarak jauh untuk mengeksekusi kode di kernel melalui buffer overflow pra-otentikasi kerentanan keamanan, memungkinkan pengambilalihan perangkat.
NetUSB dilisensikan ke banyak vendor router populer, termasuk:
- NetgearTP-LinkTendaEDiMAXDLinkWestern Digital
Untungnya, SentinelOne belum melihat bukti kelemahan Love'telah dieksploitasi. Bug Kernel Jarak Jauh?'
Sebagai kebiasaannya, Van Amerongen menemukan bug tersebut saat mengaduk-aduk target kontes peretasan Pwn2Own: router Netgear yang disebutkan di atas, R6700v3. Perangkat tersebut muncul di konferensi Pwn2Own 2019 serta disebut sebagai target di Pwn2Own Austin 2021.
Dia menemukan modul kernel NetUSB sambil menyaring berbagai jalur melalui berbagai binari, di mana dia melihat sesuatu yang mencurigakan: “Ternyata, ini modul mendengarkan pada port TCP 20005 pada IP 0.0.0.0,” Van Amerongen menjelaskan. “Asalkan tidak ada aturan firewall untuk memblokirnya, itu berarti itu mendengarkan di WAN serta LAN. Siapa yang tidak suka bug kernel jarak jauh?”
Dia suka pop kernel: Pada bulan November, Van Amerongen menulis bug (CVE-2021-43267) yang dia temukan dalam jenis pesan Transparent Inter Process Communication (TIPC) yang memungkinkan Node Linux untuk mengirim kunci kriptografi satu sama lain. Kerentanan keamanan heap-overflow kritis di kernel Linux dapat memungkinkan eksploitasi lokal dan RCE, yang mengarah ke kompromi sistem penuh.
Ini juga bukan pertama kalinya kerentanan NetUSB yang mengkhawatirkan ditemukan. Pada tahun 2015, ada lagi buffer overflow kernel di KCodes NetUSB. Penemuan itu menghasilkan "eksploitasi yang sangat membantu" yang membantu memverifikasi kerentanan yang lebih baru dengan cepat, Van Amerongen menceritakan.
Jabat Tangan Komunikasi
Proses koneksi USB dimulai dengan jabat tangan antara PC dan router yang menginisialisasi komunikasi: jabat tangan yang digambarkan SentinelOne di grafik di bawah ini.
Jabat tangan yang menginisialisasi komunikasi. Sumber: SentinelOne.
Apa yang muncul berikutnya setelah handshake adalah perulangan perintah parsing while, yang berisi kode berikut:
Kode yang mengambil nomor perintah dan mengarahkan pesan ke fungsi SoftwareBus yang sesuai. Sumber: SentinelOne.
“SoftwareBus_fillBuf bertindak dengan cara yang mirip dengan recv dengan mengambil buffer dan ukurannya, mengisi buffer dengan data yang dibaca dari soket,” tulis Van Amerongen.
Bug
Potongan kode yang rentan dalam modul kernel dipicu ketika perintah 0x805f mencapai kode berikut dalam fungsi SoftwareBus_dispatchNormalEPMsgOut:
Segmen kode yang rentan dalam modul kernel. Sumber: SentinelOne.
“Empat byte diambil dari PC jarak jauh,” lanjut peneliti. “Angka 0x11 ditambahkan ke dalamnya dan kemudian digunakan sebagai nilai ukuran di kmalloc. Karena ukuran yang disediakan ini tidak divalidasi, penambahan 0x11 dapat mengakibatkan luapan bilangan bulat. Misalnya, ukuran 0xffffffff akan menghasilkan 0x10 setelah 0x11 ditambahkan ke dalamnya.”
Wilayah yang dialokasikan ini kemudian digunakan dan ditulis melalui dereferensi dan melalui fungsi SoftwareBus_fillBuf, lanjutnya, seperti yang ditunjukkan di bawah ini.
Out-of-bounds menulis terjadi di wilayah yang dialokasikan kecil. Sumber: SentinelOne.
“Melihat panggilan terakhir ke SoftwareBus_fillBuf, ukuran yang disediakan digunakan sebagai nilai maksimum untuk membaca dari soket jarak jauh,” kata Van Amerongen. “Dari contoh sebelumnya, ukuran 0xffffffff akan digunakan di sini (bukan nilai yang berlebihan) sebagai ukuran yang dikirim ke recv.”
Bersamaan dengan laporannya, SentinelOne mengirimkan strategi mitigasi yang disarankan, yang ditunjukkan di bawah ini. Pemeriksaan luapan bilangan bulat ini harus dilakukan sebelum mengalokasikan memori dengan ukuran yang disediakan pengguna, perusahaan mencatat:
if(user_supplied_size + 0x11 < 0x11) return;
Exploitability
Ada beberapa faktor yang berperan dalam kelayakan memanfaatkan bug ini, menurut analisis:
Ukuran yang dapat dialokasikan: Ukuran minimum yang dapat dialokasikan adalah 0x0, dan maksimum adalah 0x10. “Itu berarti bahwa objek yang dialokasikan akan selalu berada di slab kmalloc-32 dari tumpukan kernel,” catat Van Amerongen.
Jumlah kontrol atas overflow itu sendiri: Penyerang mengontrol data yang diterima melalui soket, tetapi ukurannya bisa dinegosiasikan? “Karena ukuran 0xffffffff tidak dapat dieksploitasi secara realistis pada sistem 32-bit, Anda perlu melihat cara kerja SoftwareBus_fillBuf,” peneliti menjelaskan. “Di bawah fungsi ini adalah fungsi soket recv standar. Itu berarti bahwa ukuran yang disediakan hanya digunakan sebagai ukuran penerimaan maksimum dan bukan jumlah yang ketat, seperti memcpy.”
Kemudahan meletakkan tumpukan kernel untuk luapan: “Banyak eksploitasi memerlukan penggunaan lubang tumpukan untuk memastikan bahwa struktur tumpukan yang rentan akan ditempatkan sebelum objek yang akan ditimpa, ”tambah Van Amerongen. “Dalam kasus modul kernel ini, ada batas waktu 16 detik pada soket untuk menerima data, artinya struct dapat dilimpahkan hingga 16 detik setelah dialokasikan. Ini menghilangkan kebutuhan untuk membuat lubang tumpukan.”
Batasan mengenai struktur target mana yang dapat ditimpa:
- Struktur harus berukuran kurang dari 32 byte agar sesuai dengan kmalloc-32Struktur harus dapat disemprotkan dari perspektif jarak jauhStruktur harus memiliki sesuatu yang dapat ditimpa yang membuatnya berguna sebagai target (misalnya struktur Type-Length-Value atau pointer)
Terlalu Besar untuk Diabaikan
Intinya: Menulis eksploit untuk kerentanan ini bukanlah tugas yang sepele, tetapi SentinelOne tidak menganggapnya sebagai tidak mungkin, dan terlalu penting untuk diabaikan. “Kerentanan ini memengaruhi jutaan perangkat di seluruh dunia dan dalam beberapa kasus mungkin sepenuhnya dapat diakses dari jarak jauh,” Van Amerongen menekankan.
Mengingat bahwa kerentanan ada pada komponen pihak ketiga yang dilisensikan ke berbagai vendor router, itu berarti satu-satunya perbaikan adalah firmware pembaruan diluncurkan dari setiap vendor tertentu – jika tersedia.
SentinelLabs memulai proses pengungkapan pada 9 September, dan tambalan dikirim ke semua vendor pada 4 Oktober. Pada 14 Desember, Netgear telah merilis firmware tetap untuk perangkat R6700v3-nya (versi 1.0.4.122). Dan pada 20 Desember, Netgear merilis peringatan tentang kekurangannya, dengan patch untuk model D7800 (firmware versi 1.0.1.68) dan router R6400v2 (diperbaiki di firmware versi 1.0.4.122).
Semua vendor lain yang terpengaruh oleh bug NetUSB adalah menyadari kerentanan dan telah memperbaikinya atau dalam proses memperbaikinya, menurut SentinelOne. Namun, jika router sudah habis masa pakainya, pembaruan itu mungkin tidak akan pernah datang.
Singkat cerita: Pemilik router harus waspada terhadap pembaruan firmware, Van Amerongen menyimpulkan. Jika tidak ada yang akan datang, mitigasi yang tercantum di atas adalah cara untuk melakukannya.
“Meskipun kami tidak akan merilis eksploit apa pun untuknya, ada kemungkinan bahwa seseorang dapat menjadi publik di masa depan meskipun ada kompleksitas yang cukup signifikan yang terlibat dalam pengembangannya, " dia berkata. “Kami menyarankan agar semua pengguna mengikuti informasi perbaikan di atas untuk mengurangi potensi risiko apa pun.”
PasswordReset: Acara Sesuai Permintaan: Fortify 2022 dengan strategi keamanan kata sandi yang dibuat untuk ancaman saat ini. Meja Bundar Keamanan Threatpost ini, dibuat untuk para profesional infosec, berpusat pada manajemen kredensial perusahaan, dasar-dasar kata sandi baru, dan mengurangi pelanggaran pasca-kredensial. Bergabunglah dengan Darren James, dengan Specops Software dan Roger Grimes, penginjil pertahanan di KnowBe4 dan pembawa acara Threatpost Becky Bracken. Daftar & streaming sesi GRATIS hari ini – disponsori oleh Specops Software.
Tulis komentar
Bagikan artikel ini:
- iKeamanan Web