CHERIoT, un progetto Microsoft per migliorare la sicurezza in C

CHERIOTA

CHERIoT, un'opzione MS per la sicurezza dei sistemi embedded

La notizia l'ha recentemente diffusa Microsoft ha aperto gli sviluppi relativi al progetto CHERIoT (Estensione hardware della capacità a RISC-V per Internet delle cose), destinato a bloccare i problemi di sicurezza nel codice C e C++ esistente. CHERIoT offre una soluzione per proteggere le basi di codice C/C++ esistenti senza doverne eseguire il refactoring.

La protezione viene implementata utilizzando un compilatore modificato che utilizza uno speciale set esteso di istruzioni del processore (ISA) fornito dal processore e monitora l'accesso alla memoria a livello hardware, verifica la correttezza del lavoro con i puntatori e fornisce l'isolamento del blocco di codice.

A proposito di CHERIOT

El proyecto è stato creato con la consapevolezza che la natura di basso livello del linguaggio C diventa fonte di errori di memoria, che porta a problemi come buffer overflow, accesso alla memoria già liberata, dereferenziazione del puntatore o doppia liberazione.

La pratica dimostra che anche le grandi aziende come Google e Microsoft, che hanno una rigorosa politica di revisione delle modifiche e utilizzano metodi di sviluppo moderni e strumenti di analisi statica, non possono garantire un lavoro senza errori con la memoria (ad esempio, circa il 70% delle vulnerabilità in Microsoft e Google sono causati da una gestione insicura della memoria).

Il problema Può essere risolto utilizzando linguaggi di programmazione che garantiscono un lavoro sicuro.o con memoria o collegamenti con controlli aggiuntivi, ad esempio, utilizzando MiraclePtr (raw_ptr) invece di puntatori comuni, che esegue controlli aggiuntivi per accedere alle aree di memoria liberate.

Ma tali metodi sono più adatti per il nuovo codice y è abbastanza problematico rielaborare progetti C/C++ esistenti, soprattutto se sono destinati a essere eseguiti in ambienti con risorse limitate, come sistemi embedded e dispositivi IoT.

I I componenti hardware CHERIoT sono progettati come un microcontrollore basato sull'architettura RISC-V, che implementa l'architettura sicura del processore CHERI (Capacity Hardware Extension for RISC-V), fornendo un modello di accesso controllato alla memoria.

Basato su l'architettura del set di istruzioni (È UN) Fornito in CHERIoT, viene creato un modello di programmazione che garantisce la sicurezza di lavorare con la memoria a livello di singoli oggetti, fornisce protezione contro l'accesso alla memoria già liberata e implementa un sistema di isolamento leggero per l'accesso alla memoria.

Questo modello di protezione programmatica rispecchia direttamente il modello del linguaggio C/C++, consentendone l'utilizzo per proteggere le applicazioni esistenti (richiede solo la ricompilazione e l'esecuzione su hardware conforme a ISA CHERIoT).

La soluzione proposta permette di bloccare gli errori che causano il fuori limite di un oggetto in memoria, non consente la sostituzione del puntatore (tutti i puntatori devono essere generati da puntatori esistenti), monitora l'accesso alla memoria dopo la liberazione (qualsiasi accesso alla memoria da parte di un puntatore errato o un puntatore che fa riferimento a un oggetto liberato solleva un'eccezione).

Ad esempio, l'utilizzo di CHERIoT consente, senza apportare modifiche al codice, di implementare il controllo automatico dei limiti, tenere traccia della durata delle aree di memoria e garantire l'integrità dei puntatori nei componenti che elaborano dati inaffidabili.

El proyecto include una specifica per un'architettura del set di istruzioni CHERIoT estensione, un'implementazione di riferimento di una CPU RISC-V a 32 bit conforme a ISA CHERIoT e un set di strumenti LLVM modificato.

Infine Se sei interessato a saperne di più, dovresti saperlo diagrammi prototipo Le descrizioni dei blocchi CPU e hardware in Verilog sono distribuite con la licenza Apache 2.0. Il core Ibex del progetto lowRISC viene utilizzato come base per la CPU e il modello di codice CHERIoT ISA è definito nel linguaggio Sail e distribuito con licenza BSD.

Inoltre, viene proposto un prototipo di sistema operativo in tempo reale CHERIoT RTOS, che fornisce la possibilità di isolare compartimenti (compartimento) anche su sistemi embedded con 256 MB di RAM.

Il codice CHERIOT RTOS È scritto in C++ ed è distribuito con licenza MIT. Sotto forma di compartimenti, sono progettati i componenti di base del sistema operativo, come il boot loader, lo scheduler e il sistema di allocazione della memoria.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.