25 kelemahan dalam RTOS Zephyr, termasuk yang dieksploitasi melalui paket ICMP

Penyelidik dari Kumpulan NCC diterbitkan keputusan audit projek percuma Zephyr, membangun sistem pengendalian masa nyata (RTOS), bertujuan untuk melengkapkan peranti yang mematuhi konsep Internet of Things (IoT, Internet of Things). Semasa audit ia didedahkan 25 kelemahan dalam Zephyr dan 1 kelemahan dalam MCUboot. Zephyr sedang dibangunkan dengan penyertaan syarikat Intel.

Secara keseluruhan, 6 kelemahan telah dikenal pasti dalam timbunan rangkaian, 4 dalam kernel, 2 dalam shell arahan, 5 dalam pengendali panggilan sistem, 5 dalam subsistem USB dan 3 dalam mekanisme kemas kini perisian tegar. Dua isu dinilai kritikal, dua adalah tinggi, 9 adalah sederhana, 9 adalah rendah, dan 4 adalah untuk pertimbangan. Masalah kritikal menjejaskan tindanan IPv4 dan penghurai MQTT, yang berbahaya menjejaskan storan jisim USB dan pemacu USB DFU. Pada masa pendedahan maklumat, pembaikan telah disediakan hanya untuk 15 kelemahan paling berbahaya; masalah yang membawa kepada penafian perkhidmatan atau dikaitkan dengan kecacatan dalam mekanisme perlindungan kernel tambahan masih tidak diperbetulkan.

Kerentanan yang boleh dieksploitasi dari jauh telah dikenal pasti dalam timbunan IPv4 platform, yang membawa kepada kerosakan memori apabila memproses paket ICMP yang diubah suai dengan cara tertentu. Satu lagi masalah serius ditemui dalam penghurai protokol MQTT, yang disebabkan oleh kekurangan pemeriksaan panjang yang betul bagi medan pengepala dan boleh membawa kepada pelaksanaan kod jauh. Isu penafian perkhidmatan yang kurang teruk ditemui dalam tindanan IPv6 dan pelaksanaan protokol CoAP.

Masalah lain boleh dieksploitasi secara tempatan untuk menyebabkan penafian perkhidmatan atau melaksanakan kod pada peringkat kernel. Kebanyakan kelemahan ini berkaitan dengan kekurangan semakan yang betul bagi argumen panggilan sistem, dan boleh menyebabkan kawasan sewenang-wenangnya memori kernel ditulis dan dibaca. Masalah juga berlanjutan kepada kod pemprosesan panggilan sistem itu sendiriβ€”memanggil nombor panggilan sistem negatif mengakibatkan limpahan integer. Kernel juga mengenal pasti masalah dalam pelaksanaan perlindungan ASLR (rawak ruang alamat) dan mekanisme untuk menetapkan tanda kenari pada timbunan, menjadikan mekanisme ini tidak berkesan.

Banyak masalah menjejaskan tindanan USB dan pemacu individu. Sebagai contoh, masalah dalam storan besar-besaran USB boleh menyebabkan limpahan penimbal dan melaksanakan kod pada peringkat kernel apabila peranti disambungkan ke hos USB yang dikawal oleh penyerang. Kerentanan dalam USB DFU, pemacu untuk memuatkan perisian tegar baharu melalui USB, membolehkan anda memuatkan imej perisian tegar yang diubah suai ke dalam Flash dalaman mikropengawal tanpa menggunakan penyulitan dan memintas mod but selamat dengan pengesahan komponen menggunakan tandatangan digital. Selain itu, kod pemuat but terbuka telah dikaji MCUboot, di mana satu kelemahan jinak ditemui,
yang boleh menyebabkan limpahan penimbal apabila menggunakan protokol SMP (Protokol Pengurusan Mudah) ke atas UART.

Ingat bahawa dalam Zephyr, hanya satu ruang alamat maya dikongsi global (SASOS, Sistem Operasi Ruang Alamat Tunggal) disediakan untuk semua proses. Kod khusus aplikasi digabungkan dengan kernel khusus aplikasi untuk membentuk boleh laku monolitik yang boleh dimuatkan dan dijalankan pada perkakasan tertentu. Semua sumber sistem ditentukan pada masa penyusunan, mengurangkan saiz kod dan meningkatkan prestasi. Imej sistem boleh memasukkan hanya ciri kernel yang diperlukan untuk menjalankan aplikasi.

Perlu diperhatikan bahawa antara kelebihan utama Zephyr disebutkan pembangunan dengan mengutamakan keselamatan. Diluluskanbahawa semua peringkat pembangunan menjalani peringkat mandatori untuk mengesahkan keselamatan kod: ujian kabur, analisis statik, ujian penembusan, semakan kod, analisis pelaksanaan pintu belakang dan pemodelan ancaman.

Sumber: opennet.ru

Tambah komen