Microsoft apre CHERIoT, una Soluzione Hardware per Migliurà a Sicurezza di u Codice C

Microsoft hà scupertu sviluppi ligati à u prughjettu CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things), destinatu à bluccà i prublemi di sicurezza in u codice esistenti in C è C++. CHERIoT offre una suluzione chì vi permette di prutezzione di e basi di codice C/C++ esistenti senza a necessità di rilavà. A prutezzione hè implementata per mezu di l'usu di un compilatore mudificatu chì usa un settore estensu speciale di struzzioni di processore (ISA), furnitu da u processatore è à u nivellu di hardware chì monitorizza l'accessu à a memoria, cuntrollà a correttezza di u travagliu cù punters è assicurendu l'isolamentu di i blocchi di codice.

U prugettu hè statu creatu cun un ochju à u fattu chì a natura di livellu bassu di a lingua C diventa una fonte d'errore quandu travaglia cù memoria, chì porta à prublemi cum'è buffer overflows, accessu à memoria digià liberata, punter dereferences, o doppia liberazione. . A pratica mostra chì ancu e grandi corporazioni cum'è Google è Microsoft, chì anu una pulitica stretta di rivisione di cambiamentu è utilizanu metudi di sviluppu muderni è strumenti di analisi statica, ùn ponu micca guarantisci l'assenza di errori quandu travaglianu cù memoria (per esempiu, circa 70% di vulnerabili in Microsoft. è Google sò causati da una manipulazione di memoria micca sicura).

U prublema pò esse risolta usendu linguaggi di prugrammazione chì guarantisci un funziunamentu sicuru cù a memoria, o ligami cù cuntrolli supplementari, per esempiu, usendu invece di puntatori ordinali cum'è MiraclePtr (raw_ptr), chì esegue cuntrolli supplementari per accede à e zone di memoria liberate. Ma tali metudi sò più adattati per u novu codice, è a riformulazione di i prughjetti C / C ++ esistenti hè abbastanza problematicu, soprattuttu s'ellu sò cuncepiti per eseguisce in ambienti limitati di risorse, cum'è sistemi incrustati è dispositivi Internet di e cose.

I cumpunenti hardware CHERIoT sò cuncepiti cum'è un microcontroller basatu annantu à l'architettura RISC-V, implementendu l'architettura di processore CHERI (Capability Hardware Extension to RISC-V) protetta, chì furnisce un mudellu d'accessu à memoria cuntrullata basatu nantu à a "capacità" (ogni lettura è scrittura). l'operazione in memoria hè autorizata). Basatu annantu à l'architettura di l'istruzzioni (ISA) furnita in CHERIoT, hè custruitu un mudellu di software chì guarantisci a sicurità di travaglià cù a memoria à u livellu di l'uggetti individuali, furnisce a prutezzione contru l'accessu à a memoria digià liberata, è implementa un sistema di isolamentu d'accessu di memoria ligeru. . U mudellu di prutezzione di u software specificatu hè direttamente riflessu in u mudellu di lingua C/C++, chì permette di esse utilizatu per prutege l'applicazioni esistenti (solu recompilà è eseguisce nantu à l'equipaggiu chì sustene ISA CHERIoT hè necessariu).

A suluzione pruposta permette di bluccà l'errore chì causanu un ughjettu per andà oltre i limiti di a memoria, ùn permette micca a sustituzione di puntatore (tutti i puntatori devenu esse generati da i puntatori esistenti), è monitorizza l'accessu di memoria dopu a liberazione (qualsiasi accessu à a memoria utilizendu un errore incorrectu). puntatore o un puntatore chì riferenze un oggettu liberatu risulta in una eccezzioni chì hè ghjittata). Per esempiu, aduprendu CHERIoT permette di implementà a verificazione automatica di i limiti, u seguimentu di a vita di a memoria è l'infurzazione di l'integrità di u puntatore in cumpunenti chì trattanu dati micca affidabili senza avè bisognu di cambiamenti di codice.

U prughjettu include una specificazione di l'architettura di l'istruzzioni CHERIoT estesa, una implementazione di riferimentu di una CPU RISC-V 32-bit chì sustene u CHERIoT ISA, è un kit di strumenti LLVM mudificatu. I diagrammi di prototipu di CPU è e descrizzioni di blocchi hardware in Verilog sò distribuiti sottu a licenza Apache 2.0. U core Ibex da u prughjettu lowRISC hè stata utilizata com'è basa per u CPU. U mudellu di codice CHERIoT ISA hè definitu in a lingua Sail è hè licenziatu sottu a licenza BSD.

Inoltre, hè prupostu un prototipu di u sistema operatore in tempu reale CHERIoT RTOS, chì furnisce a capacità di isolà i compartimenti ancu in sistemi integrati cù 256 MB di RAM. U codice CHERIoT RTOS hè scrittu in C++ è hè distribuitu sottu a licenza MIT. I cumpunenti basi di u SO, cum'è u bootloader, u scheduler è u sistema di distribuzione di memoria, sò designati in forma di compartimenti.

Un compartment in CHERIoT RTOS hè una cumminazione isolata di codice è variabili glubale chì s'assumiglia à una biblioteca cumuna, ma à u cuntrariu di l'ultima, pò cambià u so statu (mutable) è eseguisce in un cuntestu di sicurità separatu. Nisun codice da l'esternu pò trasferisce u cuntrollu à u codice in un compartimentu è accede à l'uggetti, salvu per accede à punti d'ingressu apposta definiti è utilizendu punters à l'uggetti esplicitamente passati quandu chjamanu un altru compartimentu. L'integrità è a cunfidenziale sò garantite per u codice è l'uggetti glubale in un compartimentu.

Source: opennet.ru

Add a comment