25 kerentanan ing RTOS Zephyr, kalebu sing dieksploitasi liwat paket ICMP

Peneliti saka NCC Group diterbitake asil audit project free Zephyr, ngembangaken sistem operasi wektu nyata (RTOS), ngarahake nglengkapi piranti sing tundhuk karo konsep Internet of Things (IoT, Internet of Things). Sajrone audit kasebut dicethakakΓ© 25 kerentanan ing Zephyr lan 1 kerentanan ing MCUboot. Zephyr lagi dikembangake kanthi partisipasi perusahaan Intel.

Secara total, 6 kerentanan diidentifikasi ing tumpukan jaringan, 4 ing kernel, 2 ing cangkang perintah, 5 ing panangan panggilan sistem, 5 ing subsistem USB lan 3 ing mekanisme nganyari perangkat kukuh. Rong masalah sing dirating kritis, loro dhuwur, 9 moderat, 9 kurang, lan 4 kanggo pertimbangan. Masalah kritis mengaruhi tumpukan IPv4 lan parser MQTT, mbebayani mengaruhi panyimpenan massa USB lan driver USB DFU. Ing wektu pambocoran informasi, mbenakake mung disiapake kanggo 15 kerentanan sing paling mbebayani; masalah sing nyebabake nolak layanan utawa ana hubungane karo cacat ing mekanisme perlindungan kernel tambahan tetep ora dikoreksi.

Kerentanan sing bisa dimanfaatake kanthi jarak jauh wis diidentifikasi ing tumpukan IPv4 platform, sing nyebabake korupsi memori nalika ngolah paket ICMP sing diowahi kanthi cara tartamtu. Masalah serius liyane ditemokake ing parser protokol MQTT, sing disebabake kurang mriksa dawa kolom header sing tepat lan bisa nyebabake eksekusi kode remot. Masalah penolakan layanan sing kurang abot ditemokake ing tumpukan IPv6 lan implementasi protokol CoAP.

Masalah liyane bisa dimanfaatake sacara lokal kanggo nyebabake penolakan layanan utawa nglakokake kode ing tingkat kernel. Umume kerentanan kasebut ana gandhengane karo kekurangan pamriksan sing cocog kanggo argumen panggilan sistem, lan bisa nyebabake wilayah memori kernel sing ditulis lan diwaca. Masalah kasebut uga ngluwihi kode pangolahan telpon sistem dhewe - nelpon nomer telpon sistem negatif nyebabake kebanjiran integer. Kernel uga ngenali masalah ing implementasine pangayoman ASLR (alamat spasi randomization) lan mekanisme kanggo nyetel tandha kenari ing tumpukan, nggawe mekanisme iki ora efektif.

Akeh masalah mengaruhi tumpukan USB lan driver individu. Contone, masalah ing panyimpenan massal USB bisa nyebabake kebanjiran buffer lan nglakokake kode ing tingkat kernel nalika piranti disambungake menyang host USB sing dikontrol dening panyerang. Kerentanan ing USB DFU, driver kanggo ngemot perangkat kukuh anyar liwat USB, ngidini sampeyan mbukak gambar perangkat kukuh sing diowahi menyang Flash internal mikrokontroler tanpa nggunakake enkripsi lan ngliwati mode boot aman kanthi verifikasi komponen nggunakake teken digital. Kajaba iku, kode bootloader mbukak ditliti MCUboot, ing ngendi siji kerentanan entheng ditemokake,
sing bisa nyebabake kebanjiran buffer nalika nggunakake protokol SMP (Simple Management Protocol) liwat UART.

Elinga yen ing Zephyr, mung siji ruang alamat virtual sing dienggo bareng global (SASOS, Sistem Operasi Ruang Alamat Tunggal) sing kasedhiya kanggo kabeh proses. Kode khusus aplikasi digabungake karo kernel khusus aplikasi kanggo mbentuk eksekusi monolitik sing bisa dimuat lan mbukak ing hardware tartamtu. Kabeh sumber daya sistem ditemtokake ing wektu kompilasi, nyuda ukuran kode lan nambah kinerja. Gambar sistem bisa kalebu mung fitur kernel sing dibutuhake kanggo mbukak aplikasi.

Wigati dimangerteni manawa ing antarane kaluwihan utama Zephyr kasebut pembangunan karo safety ing pikiran. disetujonikabeh tahapan pembangunan ngalami tahapan wajib kanggo konfirmasi keamanan kode: testing fuzzing, analisis statis, testing penetrasi, review kode, analisis implementasine backdoor lan modeling ancaman.

Source: opennet.ru

Add a comment