Windows Vista offrirà numerose nuove funzionalitè di sicurezza che aiuteranno a proteggere gli utenti da attacchi di ogni tipo; una di queste, una nuova funzione di protezione contro i buffer overrun exploit, chiamata Address Space Layout Randomization (ASLR), ha debuttato, attiva di default, in Windows Vista Beta 2. Michael Howard, program manager del team Software Security di Microsoft, ha recentemente commentato la nuova funzionalitè ASLR sul suo blog ufficiale.
ASLR non costituisce un rimedio universalmente efficace per i codici non sicuri. Tuttavia quando usata in combinazione con altre tecnologie offre una utile difesa in quanto fa apparire il sistema operativo “diverso” ai codici malware rendendo cosè¬ più difficile condurre un attacco.
Ogni volta che si avvia un PC con Windows Vista Beta 2 il codice di sistema viene caricato in differenti location della memoria. Questo consente di prevenire un comune tipo di attacco conosciuto come “return-to-libc“, in cui il codice exploit tenta di richiamare una funzione di sistema, come per esempio la funzione socket() di wsock32.dll per aprire un socket o LoadLibrary di kernel32.dll per caricare wsock32.dll al primo posto. ASLR si occupa di spostare nella memoria gli entry point di queste funzioni in modo che si trovino in location non prevedibili. Nel caso di Windows Vista Beta 2 una DLL o un EXE possono essere caricati in una qualsiasi di 256 posizioni, il che significa che un attacker ha un 1/256 delle probabilitè di indovinare l’indirizzo da attaccare. In sostanza ASRL rende più difficile (anche se non impossibile) il funzionamento dei codici exploit d’attacco.
In Windows Vista ASLR si combina ad altre funzionalitè di sicurezza relative al codice, tra queste:
/GS (Controllo protezione buffer). Questa opzione del Visual C++ (attivata per impostazione predefinita) indica al compilatore di inserire codice per il rilevamento di sovraccarico nelle funzioni a rischio di violazione. In caso di sovraccarico, l’esecuzione viene interrotta. Si tratta di una sorta di “paracadute di riserva” per lo sviluppatore, poichè© rileva alcuni degli attacchi più comuni alle applicazioni e li rende più difficili da realizzare. Quando si attiva la protezione l’applicazione viene terminata. Praticamente tutti i binari di Windows Vista sono compilati con /GS.
/SAFESEH (immagine con gestori delle eccezioni sicuri). Questa opzione del linker, indica al linker di inserire nell’immagine di output una tabella contenente l’indirizzo di ogni gestore eccezioni. In fase di esecuzione il sistema operativo utilizza questa tabella per garantire che vengano eseguiti esclusivamente i gestori eccezioni autorizzati. Questo consente di evitare l’esecuzione di gestori eccezioni introdotti da eventuali utenti malintenzionati mediante un attacco in fase di esecuzione. In tal caso infatti il sistema terminerà il processo.
Data Execution Protection (aka NX). La funzionalitè “protezione esecuzione programmi” agisce a livello hardware ed è specifica di alcuni processori che impediscono l’esecuzione di codice nelle regioni di memoria contrassegnate per l’archiviazione dei dati. La maggior parte dei buffer overrun arrivano in una applicazione come dati, e questi dati vengono poi eseguiti. Data Execution Protection, conosciuta anche come NX (No eXecute) o DEP, contrassegna tutte le posizioni di memoria di un processo come non eseguibili, a meno che la posizione non contenga esplicitamente codice eseguibile. Alcuni tipi di attacco si basano su tentativi di inserire ed eseguire codice da posizioni di memoria non eseguibili. DEP contribuisce a evitare tali attacchi, intercettandoli e generando un’eccezione.
Function Pointer Obfuscation. Durante un attacco di buffer overrun ad una vulnerabilitè , l’obiettivo di un attacker è normalmente quello di modificare e dirottare il normale flusso di esecuzione del codice. I pointer delle funzioni persitenti diventano gli obiettivi dell’attacco sia perchè persistono da maggiore tempo sia perchè© puntano a funzioni che vengono richiamate allo stesso punto del codice. In Windows Vista numerosi long-lived pointer sono codificati e vengono decodificati solo quando il pointer risulta necessario.
Microsoft ha recentemnte reso disponibile anche un completo whitepaper, Microsoft Windows Vista Security Advancements, che descrive tutte le nuove funzionalitè di sicurezza di Windows Vista.