25 vulnerabilità in RTOS Zephyr, tra cui quelle sfruttabili tramite pacchetto ICMP

Ricercatori della NCC Group hanno pubblicato risultati dell'audit del progetto open source Zephyr, in evoluzione sistema operativo in tempo reale (RTOS) progettato per equipaggiare dispositivi conformi al concetto di "Internet of Things" (IoT). Durante l'audit sono state scoperte 25 vulnerabilità in Zephyr e 1 vulnerabilità in MCUboot. Lo sviluppo di Zephyr avviene con il contributo di aziende come Intel.

In totale sono state scoperte 6 vulnerabilità nello stack di rete, 4 nel kernel, 2 nella shell, 5 nei gestori delle chiamate di sistema, 5 nel sottosistema USB e 3 nel meccanismo di aggiornamento del firmware. Due problemi sono stati classificati come critici, due come elevati, 9 come moderati, 9 come bassi e 4 per considerazione. I problemi critici interessano lo stack IPv4 e il parser MQTT, mentre i pericoli riguardano i driver USB mass storage e USB DFU. Al momento della divulgazione, le patch erano state preparate solo per i 15 vulnerabilità più pericolose, mentre rimangono non risolti i problemi che causano un'interruzione del servizio o sono legati a difetti nei meccanismi di protezione del kernel.

Nello stack IPv4 della piattaforma è stata scoperta una vulnerabilità remota che consente di danneggiare la memoria durante l'elaborazione di pacchetti ICMP modificati in un certo modo. Un altro grave problema è stato trovato nel parser del protocollo MQTT, causato dall'assenza di un'adeguata verifica della lunghezza dei campi nell'intestazione e può portare all'esecuzione remota di codice. Problemi meno gravi che causano un'interruzione del servizio sono stati trovati nello stack IPv6 e nell'implementazione del protocollo CoAP.

I problemi rimanenti possono essere sfruttati localmente per causare un'interruzione del servizio o eseguire codice a livello di kernel. La maggior parte di queste vulnerabilità è legata all'assenza di controlli adeguati sugli argomenti delle chiamate di sistema, il che può portare alla scrittura e lettura di aree di memoria arbitraria nel kernel. I problemi riguardano direttamente anche il codice di gestione delle chiamate di sistema: l'accesso tramite un numero di chiamata di sistema negativo provoca un overflow intero. Sono stati trovati anche problemi nell'implementazione della protezione ASLR (randomizzazione dello spazio degli indirizzi) e nel meccanismo di impostazione dei canarini nello stack, rendendo questi meccanismi inefficaci.

Molti problemi riguardano lo stack USB e singoli driver. Ad esempio, un problema nel driver USB mass storage consente di causare un overflow del buffer e di eseguire codice a livello di kernel quando un dispositivo è collegato a un host USB controllato da un attaccante. Una vulnerabilità nel USB DFU, il driver per il caricamento di nuovi firmware tramite USB, consente di caricare un'immagine di firmware modificata nella Flash interna del microcontrollore senza l'uso di crittografia e bypassando la modalità di avvio sicuro con verifica dei componenti tramite firma digitale. È stato anche esaminato il codice dell'bootloader aperto MCUboot, in cui è stata trovata una vulnerabilità non critica che
può portare a un overflow del buffer durante l'uso del protocollo SMP (Simple Management Protocol) tramite UART.

Ricordiamo che in Zephyr per tutti i processi è fornito un solo spazio di indirizzo virtuale globale condiviso (SASOS, Single Address Space Operating System). Il codice specifico per le applicazioni è combinato con un kernel adattato all'applicazione specifica e forma un file eseguibile monolitico da caricare e avviare su un hardware specifico. Tutte le risorse di sistema sono definite al momento della compilazione, riducendo la dimensione del codice e aumentando le prestazioni. Nel sistema possono essere incluse solo le funzionalità del kernel necessarie per l'esecuzione dell'applicazione.

È interessante notare che uno dei principali pregi di Zephyr menzionato è lo sviluppo con un occhio alla sicurezza. Si sostiene, in quanto tutte le fasi dello sviluppo passano attraverso fasi obbligatorie di convalida della sicurezza del codice: test di fuzzing, analisi statica, test di penetrazione, 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