Reading Time: 4 minutes

Control Flow Integrity

L’integrità del flusso di controllo (Control Flow Integrity) è importante perché rappresenta un tentativo di creare resistenza a un attacco, che viene implementato direttamente nel sistema operativo e nel codice dell’applicazione.

L’integrità del flusso di controllo aggiunge un livello di sofisticazione al software del sistema operativo che determina le condizioni in cui verranno eseguite le istruzioni privilegiate osservando il flusso di controllo da una sezione del software all’altra.

I ricercatori hanno identificato modelli di cambiamenti nel flusso che indicano che un programma sta facendo qualcosa che non era destinato a fare.

Nonostante tutta la complessità del software e dell’hardware, ogni core di un computer in esecuzione sta semplicemente eseguendo un’istruzione dopo l’altra.

I meccanismi utilizzati per determinare quale istruzione verrà eseguita successivamente possono essere piuttosto intricati, ma rispondono tutti a una semplice domanda: e dopo?

Se un hacker può inserire un cambiamento nel meccanismo di controllo che avvierà il computer a eseguire la sua sequenza di istruzioni e abbandonerà la sequenza legittima, l’hacker ha vinto e il computer è bloccato, o quantomeno compromesso.

Ci sono molti modi per farsi strada con l’inganno nel flusso di controllo.

Un modo è quello di scatenare un buffer overflow inserendo più dati nell’input di quanto il programma si aspetti.

Fatto con precisione, i dati in eccesso possono essere caricati nel flusso di controllo e cedere il controllo all’hacker.

Se un’applicazione è ben programmata, i dati in eccesso verrebbero eliminati, silenziosamente o con un messaggio di errore, ma non tutti i codici sorgente sono scritti bene.

In effetti, il controllo dei buffer overflow (gergo per la presenza di troppi dati) non era comune fino a quando non si sono verificate regolarmente violazioni della sicurezza dovute a questo tipo di vulnerabilità.

Ora, il controllo del buffer overflow è una parte di routine della maggior parte dei test di QA e gli ingegneri del software sono formati per prevenirli nel loro codice.

Le vulnerabilità di buffer overflow stanno diventando meno comuni, ma non sono state totalmente eliminate.

Il codice legacy esiste ancora con annesse vulnerabilità, senza patch, e il buffer overflow può verificarsi in modi impercettibili in modo da non essere rilevato nemmeno da buone pratiche di progettazione e controllo della qualità.

Inoltre, i buffer overflow non sono affatto l’unico modo in cui il flusso di controllo può essere compromesso dagli attaccanti.

La pratica del Control Flow Integrity non riguarda il modo in cui il controllo viene dirottato dal suo percorso legittimo. Rileva piuttosto quando il controllo è compromesso e attiva un alert.

Indipendentemente dal modo in cui il sistema è stato manomeso dall’hacker, se il programma si smarrisce, l’integrità del flusso di controllo rileva l’errore e lo riporta all’ultimo punto sicuro.

L’imposizione del flusso di controllo è un modo per affrontare il problema a un livello superiore.

Anziché eliminare i buffer overflow che causano errori del flusso di controllo, le misure di integrità del flusso rilevano le deviazioni e arrestano l’esecuzione.

Ad esempio, Microsoft Windows 10 supporta una funzionalità denominata Control Flow Guard, che è un esempio lampante di Control Flow Integrity.

Gli sviluppatori utilizzano funzionalità integrate nel sistema operativo per scrivere applicazioni che rilevano quando il controllo del flusso del codice è stato deviato dalla direzione prevista.

Sebbene Control Flow Guard non protegga il controllo del flusso da ogni attacco, rende il codice più resistente. Gli sviluppatori devono compilare Control Flow Guard nel loro codice.

Se utilizzato correttamente, Control Flow Guard fornisce un ulteriore livello di protezione per il codice oltre alle pratiche di codice sicuro che gli sviluppatori attenti alla sicurezza seguono da un decennio.

Trattandosi di una nuova funzionalità, non sappiamo quanto sarà efficace nell’impedire agli hacker di ottenere il controllo delle applicazioni, ma se avrà successo, ci saranno meno exploit e patch di sicurezza, il che significa che la rete e l’informatica sarà un posto migliore per tutti.

Control Flow Guard è un esempio di applicazione di un approccio di alto livello per tentare di eliminare intere classi di exploit. La maggior parte dei produttori di software e computer sta lavorando duramente per affrontare problemi di sicurezza in questo modo.

Microsoft non è unica in fatto di diligenza. Apple e Google stanno compiendo sforzi simili nei sistemi operativi iOS, OS X e Android.

Un sistema informatico ideale sarebbe impossibile da sovvertire. Ciò significherebbe che il sistema sarebbe sempre eseguito solo da utenti autorizzati, farebbe sempre esattamente ciò per cui è stato progettato, funzionerebbe solo con input autorizzati e tutto l’output arriverebbe sempre a target autorizzati e mai indirizzato erroneamente ad altri non autorizzati.

Siamo sulla buona strada, ma ancora molto lontani…

error: Content is protected !!

La maggior parte dei contenuti del blog ComputerSec vengono pubblicati a beneficio di tutti e in modo completamente gratuito.
Tuttavia per supportare il blog, e per avere ulteriori vantaggi, puoi decidere di abbonarti e sfruttare al 100% tutti i contenuti!
Abbonati Ora!

Complimenti! Ti sei iscritto alla nostra Newsletter

C'è stato un errore durante l'invio della richiesta. Per favore riprova.

Computer Security will use the information you provide on this form to be in touch with you and to provide updates and marketing.