25 vulnerabilità in RTOS Zephyr, incluse quelle sfruttabili tramite il pacchetto ICMP

I ricercatori della NCC Group hanno pubblicato risultati dell'audit del progetto open source Zephyr, in evoluzione sistema operativo in tempo reale (RTOS), mirato a dotare i dispositivi in linea con il concetto di «Internet delle cose» (IoT, Internet of Things). Durante l'audit sono state rilevate 25 vulnerabilità in Zephyr e 1 vulnerabilità in MCUboot. Lo sviluppo di Zephyr è condotto con la partecipazione di aziende come Intel.

In totale sono state riscontrate 6 vulnerabilità nello stack di rete, 4 nel core, 2 nella shell, 5 nei gestori di chiamate di sistema, 5 nel sottosistema USB e 3 nel meccanismo di aggiornamento del firmware. Due problemi sono stati classificati con un livello critico di rischio, due con un alto, 9 moderati, 9 bassi e 4 come da considerare. I problemi critici riguardano lo stack IPv4 e il parser MQTT, mentre quelli pericolosi riguardano i driver USB mass storage e USB DFU. Al momento della divulgazione, le correzioni erano state preparate solo per 15 delle vulnerabilità più pericolose, mentre rimangono non risolti i problemi che possono causare interruzioni del servizio o che sono legati a lacune nei meccanismi di sicurezza del core.

Nello stack IPv4 della piattaforma è emersa una vulnerabilità sfruttabile da remoto, che provoca una corruzione di memoria durante l'elaborazione di pacchetti ICMP modificati in un certo modo. Un'altra seria problematica è stata trovata nel parser del protocollo MQTT, causata dalla mancanza di un'adeguata verifica della lunghezza dei campi nell'intestazione, e può portare all'esecuzione remota di codice. Problemi meno critici che portano a interruzioni del servizio sono stati riscontrati nello stack IPv6 e nell'implementazione del protocollo CoAP.

Gli altri problemi possono essere sfruttati localmente per provocare interruzioni del servizio o eseguire codice a livello di core. La maggior parte di queste vulnerabilità è legata all'assenza di controlli adeguati sugli argomenti delle chiamate di sistema, e può comportare scritture e letture arbitrarie di aree di memoria del core. I problemi riguardano anche direttamente il codice di gestione delle chiamate di sistema: l'accesso a un numero di chiamata di sistema negativo provoca un'overflow intero. Nel core sono state riscontrate anche problematiche nell'implementazione della protezione ASLR (randomizzazione dello spazio degli indirizzi) e nel meccanismo di impostazione delle etichette canary nello stack, rendendo questi meccanismi inefficaci.

Molti problemi riguardano lo stack USB e i singoli driver. Ad esempio, il problema nello storage di massa USB consente di scatenare un overflow del buffer ed eseguire codice a livello kernel quando un dispositivo è collegato a un host USB controllato da un attaccante. La vulnerabilità nel driver USB DFU, utilizzato per caricare un nuovo firmware tramite USB, permette di caricare un'immagine del firmware modificata nella Flash interna del microcontrollore senza l'utilizzo della crittografia e bypassando la modalità di avvio protetta con verifica della firma digitale dei componenti. Inoltre, è stato esaminato il codice del bootloader aperto MCUboot, in cui è stata trovata una vulnerabilità non critica,
che può portare a un overflow del buffer nell'uso del protocollo SMP (Simple Management Protocol) attraverso UART.

Ricordiamo che in Zephyr viene fornito un unico spazio di indirizzamento virtuale condiviso globale per tutti i processi (SASOS, Single Address Space Operating System). Il codice specifico per le applicazioni viene combinato con un kernel adattato all'uso specifico e forma un file eseguibile monolitico per il caricamento e l'esecuzione su hardware specifico. Tutte le risorse di sistema sono definite nella fase di compilazione, il che riduce la dimensione del codice e aumenta le prestazioni. Nel sistema possono essere incluse solo quelle funzionalità del kernel necessarie per l'esecuzione dell'applicazione.

È interessante notare che tra i principali vantaggi di Zephyr si menziona c'è lo sviluppo con un focus sulla sicurezza. Si afferma, in modo che tutte le fasi dello sviluppo passino attraverso fasi obbligatorie di verifica della sicurezza del codice: testing di fuzzing, analisi statica, collaudi di penetration testing, revisione del codice, analisi dell'inserimento di backdoor e modellazione delle minacce.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster