25 kerentanan di RTOS Zephyr, termasuk yang dieksploitasi melalui paket ICMP

Peneliti dari NCC Group diterbitkan hasil audit proyek gratis Angin sepoi-sepoi, mengembangkan sistem operasi waktu nyata (RTOS), yang ditujukan untuk melengkapi perangkat yang sesuai dengan konsep Internet of Things (IoT, Internet of Things). Selama audit, hal itu terungkap 25 kerentanan di Zephyr dan 1 kerentanan di MCUboot. Zephyr sedang dikembangkan dengan partisipasi perusahaan Intel.

Secara total, 6 kerentanan diidentifikasi di tumpukan jaringan, 4 di kernel, 2 di shell perintah, 5 di penangan panggilan sistem, 5 di subsistem USB dan 3 di mekanisme pembaruan firmware. Dua isu dinilai kritis, dua isu tinggi, 9 isu sedang, 9 isu rendah, dan 4 isu untuk dipertimbangkan. Masalah kritis mempengaruhi tumpukan IPv4 dan parser MQTT, masalah berbahaya mempengaruhi penyimpanan massal USB dan driver USB DFU. Pada saat pengungkapan informasi, perbaikan telah disiapkan hanya untuk 15 kerentanan paling berbahaya; masalah yang mengarah pada penolakan layanan atau terkait dengan kelemahan dalam mekanisme perlindungan kernel tambahan masih belum diperbaiki.

Kerentanan yang dapat dieksploitasi dari jarak jauh telah diidentifikasi di tumpukan IPv4 platform, yang menyebabkan kerusakan memori saat memproses paket ICMP yang dimodifikasi dengan cara tertentu. Masalah serius lainnya ditemukan pada parser protokol MQTT, yang disebabkan oleh kurangnya pemeriksaan panjang bidang header yang tepat dan dapat menyebabkan eksekusi kode jarak jauh. Masalah penolakan layanan yang tidak terlalu parah ditemukan pada tumpukan IPv6 dan implementasi protokol CoAP.

Masalah lain dapat dieksploitasi secara lokal untuk menyebabkan penolakan layanan atau mengeksekusi kode pada tingkat kernel. Sebagian besar kerentanan ini terkait dengan kurangnya pemeriksaan yang tepat terhadap argumen panggilan sistem, dan dapat menyebabkan area memori kernel yang sewenang-wenang ditulis dan dibaca. Masalahnya juga meluas ke kode pemrosesan panggilan sistem itu sendiriβ€”memanggil nomor panggilan sistem negatif menghasilkan bilangan bulat yang meluap. Kernel juga mengidentifikasi masalah dalam implementasi perlindungan ASLR (address space randomization) dan mekanisme pengaturan canary mark pada stack, sehingga membuat mekanisme ini tidak efektif.

Banyak masalah yang mempengaruhi tumpukan USB dan driver individual. Misalnya, masalah pada penyimpanan massal USB dapat menyebabkan buffer overflow dan mengeksekusi kode di tingkat kernel saat perangkat terhubung ke host USB yang dikendalikan oleh penyerang. Kerentanan di USB DFU, driver untuk memuat firmware baru melalui USB, memungkinkan Anda memuat gambar firmware yang dimodifikasi ke Flash internal mikrokontroler tanpa menggunakan enkripsi dan melewati mode boot aman dengan verifikasi komponen menggunakan tanda tangan digital. Selain itu, kode bootloader terbuka telah dipelajari boot MCU, di mana ditemukan satu kerentanan yang tidak berbahaya,
yang dapat menyebabkan buffer overflow saat menggunakan protokol SMP (Simple Management Protocol) melalui UART.

Ingatlah bahwa di Zephyr, hanya satu ruang alamat virtual bersama global (SASOS, Sistem Operasi Ruang Alamat Tunggal) yang disediakan untuk semua proses. Kode khusus aplikasi digabungkan dengan kernel khusus aplikasi untuk membentuk executable monolitik yang dapat dimuat dan dijalankan pada perangkat keras tertentu. Semua sumber daya sistem ditentukan pada waktu kompilasi, mengurangi ukuran kode dan meningkatkan kinerja. Citra sistem hanya dapat menyertakan fitur kernel yang diperlukan untuk menjalankan aplikasi.

Patut dicatat bahwa ini adalah salah satu keunggulan utama Zephyr disebutkan pembangunan dengan mempertimbangkan keselamatan. Disetujuibahwa semua tahapan pengembangan menjalani tahapan wajib untuk mengonfirmasi keamanan kode: pengujian fuzzing, analisis statis, pengujian penetrasi, tinjauan kode, analisis implementasi pintu belakang, dan pemodelan ancaman.

Sumber: opennet.ru

Tambah komentar