Project Verona

Microsoft: stiamo creando un nuovo linguaggio per la codifica sicura

Tempo di lettura: 3 minuti

Microsoft non può buttare via il vecchio codice di Windows, ma la ricerca dell’azienda nell’ambito del Progetto Verona mira a rendere Windows 10 più sicuro con il suo recente lavoro sull’integrazione di Rust sviluppato da Mozilla per componenti Windows di basso livello.

La società ha recentemente rivelato che le sue prove con Rust su C e C ++ per rimuovere il codice non sicuro da Windows avevano raggiunto i suoi obiettivi. Ma perché Microsoft ha fatto questo?

La società ha parzialmente spiegato le sue motivazioni legate alla sicurezza per sperimentare Rust, ma non ha approfondito i motivi della sua mossa.

Tutti gli utenti Windows sanno che il secondo martedì di ogni mese Microsoft rilascia patch per risolvere i problemi di sicurezza in Windows. Microsoft ha recentemente rivelato che la stragrande maggioranza dei bug scoperti in questi giorni sono difetti di sicurezza della memoria , motivo per cui Microsoft sta guardando Rust per migliorare la situazione. Rust è stato progettato per consentire agli sviluppatori di programmare senza doversi preoccupare di questa classe di bug.

“Sicurezza della memoria” è il termine per codificare i framework che aiutano a proteggere lo spazio di memoria dall’abuso di malware. Il progetto Verona di Microsoft è destinato a far progredire il lavoro dell’azienda per chiudere questo vettore di attacco.

Il Project Verona di Microsoft potrebbe rivelarsi solo un esperimento che non porta da nessuna parte, ma la società ha fatto progressi abbastanza da avere dettagliato alcune delle sue idee attraverso la rete di trasferimento di informazioni senza scopo di lucro con sede nel Regno Unito.

Matthew Parkinson, un ricercatore Microsoft del Cambridge Computer Lab nel Regno Unito che si dedica a “investigare la gestione della memoria per i linguaggi di programmazione gestiti”, la scorsa settimana ha tenuto un discorso incentrato su ciò che l’azienda sta facendo per affrontare questi problemi di memoria.

Nel discorso, Parkinson ha discusso del lavoro svolto da Microsoft con MemGC, che è l’abbreviazione di Memory Garbage Collector, per Internet Explorer (IE) e Edge.

MemGC ha affrontato le vulnerabilità nella funzionalità standard del browser nota come Document Object Model (DOM), una rappresentazione dei dati utilizzati dai browser per interpretare le pagine Web. Gli hacker di Project Zero dell’elite di Google sono rimasti colpiti dal MemGC di Microsoft dopo aver sondato i principali browser .

“E poi Microsoft ha introdotto MemGC, che è un GC conservativo per il DOM. È stato molto preso di mira da questo particolare stile di vulnerabilità e quindi sostanzialmente sradicato come vettore di attacco.”

L’altra classe di bug a cui Microsoft sta lavorando per risolvere il problema riguarda la memoria non inizializzata in un modo che non incida sulle prestazioni .

Parkinson ha approfondito un problema. “Come possiamo costruire le cose più sicure in futuro? Quindi dobbiamo ancora fare i conti con l’eredità. Non possiamo semplicemente buttare via ciò che abbiamo, ma cosa possiamo costruire ora in sistemi più sicuri.”

Parkinson ha dichiarato che Microsoft sta riscrivendo alcuni componenti “mirati” in Rust. Il suo intervento si è concentrato sul design del linguaggio e la compartimentazione.

“Se vogliamo compartimenti e intagliare i frammenti legacy del nostro codice in modo che il codice di exploit degli aggressori non possa uscire, di cosa abbiamo bisogno nella progettazione del linguaggio che possa aiutare in questo?”

Questo è il Progetto Verona e Parkinson ha affermato che era la prima volta che discuteva del progetto, che sarà reso open source “presto”. È un nuovo linguaggio per ciò che Microsoft chiama “programmazione di infrastrutture sicure”.

Il progetto è supportato dalla responsabile del progetto C # Mads Torgensen e dall’ingegnere di software di ricerca Microsoft Research Cambridge  Juliana Franco .

La sfida per Microsoft sta affrontando lo “spettro delle applicazioni”, che si estende da C # per app desktop a C e C # per Exchange, ASP.NET, Azure e driver di dispositivo, fino a componenti Windows profondi come la gestione della memoria e caricatori di avvio e il Livello di astrazione hardware del kernel di Windows (HAL).

“È davvero difficile gestire la memoria. La sicurezza della memoria temporale è molto difficile se si dispone di una mutazione simultanea arbitraria”, ha detto Parkinson.

“Il modello di proprietà a Verona si basa su gruppi di oggetti, non come su Rust dove è basato su un singolo oggetto. In C ++ ottieni puntatori ed è basato su oggetti ed è praticamente per oggetto. Ma non è così che penso su dati e grammatica. Penso a una struttura di dati come una raccolta di oggetti e quella raccolta di oggetti come una vita.

“Quindi assumendo la proprietà a livello di proprietà degli oggetti, ci avviciniamo molto al livello di astrazione che le persone stanno usando e ci dà la possibilità di costruire strutture di dati senza uscire dalla sicurezza.”