Controllo della protezioneLa protezione avanzata dei servizi in Windows Vista

Wole Moses

Microsoft ha annunciato la Trustworthy Computing Initiative all'inizio del 2002, in conseguenza di numerosi virus e worm ad elevata pericolosità che causarono la devastazione di sistemi Windows, paralizzarono dipartimenti IT e costarono ai consumatori ingenti somme di denaro per rimediare alla situazione. Con questa iniziativa, Microsoft ha affermato

la propria responsabilità in merito al track record di protezione e ha approntato una pronta linea correttiva e un paradigma di cambiamento, sviluppando un software che desse rilievo a numerose funzionalità e al loro grado di utilizzabilità per assegnare le priorità riguardo la protezione del software e la sua integrità. Il worm Blaster colpì nel 2003, dando nuovo slancio all'iniziativa in merito alla sicurezza (per la storia del Blaster, confrontare l'intestazione laterale "Attacco dei cloni).

I cardini dell'iniziativa Trustworthy Computing sono la protezione strutturale, che riguarda le concezioni di programmazione per la protezione; la protezione predefinita, che garantisce ai componenti Windows di default le migliori impostazioni di sicurezza; e la protezione di distribuzione, che riguarda la creazione di strumenti e indicazioni per aiutare aziende e consumatori a proteggere le proprie infrastrutture Windows.

Complessivamente l'iniziativa Trustworthy Computing ha prodotto notevoli miglioramenti della protezione; sfortunatamente Windows XP non ha mai potuto beneficiare pienamente di tali miglioramenti, dal momento che venne distribuito due anni prima che l'iniziativa prendesse il via (nonostante il Service Pack 2, SP2, abbia compiuto molti progressi nel tentativo di incorporare queste concezioni, Windows XP non ha mai potuto inserirsi pienamente in questa iniziativa).

Di conseguenza, Windows Vista™ è il primo sistema operativo Microsoft in totale conformità con gli obiettivi dell'iniziativa Trustworthy Computing. La protezione avanzata dei servizi Windows Vista, una specifica implementazione del principio di protezione predefinita Trustworthy Computing (vedere figura 1), è una nuova importante funzionalità progettata per contrastare gli errori di sistema che la maggior parte dei malware odierni possono procurare. Il servizio di protezione avanzata aiuta Microsoft a fare un grande passo in avanti nella modifica del comportamento predefinito e del profilo di protezione dei servizi Windows.

Figure 1 Protezione predefinita: Servizi Windows

Funzionalità Descrizione Risultato
Privilegio minimo I servizi Windows Vista sono configurati per utilizzare i minimi privilegi necessari al loro funzionamento. Windows Vista riduce i privilegi di protezione predefiniti dei servizi Windows, diminuendo l'impatto potenziale dei malware.
Isolamento del servizio I SID del servizio vengono usati per consentire ai servizi di funzionare in account a basso privilegio. Windows Vista può contrastare i malware limitando l'accesso alle sue fonti mediante SID di servizio.
Accesso di rete limitato Le limitazioni di rete sono inoltre aumentate per tutti i servizi di Windows Vista. Windows Vista previene l'utilizzo dei servizi da parte dei malware per svolgere attività di rete illegali.
Session 0 Isolation Session 0 è riservata ai servizi. Windows Vista previene la modifica dei servizi ad alto privilegio da parte dei malware che si servono di attacchi basati su messaggi, dal momento che questi non sono più in grado di funzionare nella stessa sessione.

Servizi a rischio

I servizi Windows, precedentemente noti come servizi NT, sono applicazioni long-running che vengono eseguite nelle stesse sessioni Windows. I servizi possono essere avviati automaticamente all'avvio del computer, possono essere messi in pausa e riavviati; solitamente non presentano alcuna interfaccia utente e possono essere eseguiti nell'ambito del contesto di protezione di un account che è diverso sia da quello dell'utente connesso sia dall'account predefinito del computer. In questo modo i servizi Windows sono un ottimo dispositivo per alcuni tipi di applicazioni di sviluppo e per gli utenti finali che necessitano di utilizzare tali applicazioni. Tuttavia, a causa della loro potenzialità e flessibilità, i servizi Windows sono stati tradizionalmente esposti ad attacchi per diverse ragioni.

In primo luogo, un tempo, i servizi Windows venivano generalmente eseguiti in account altamente privilegiati, come l'account sistema locale. Se un servizio eseguito nell'account sistema locale viene compromesso da un malware, il malware ha un'elevata possibilità di fare assolutamente tutto ciò che desidera entro quel sistema. Si valuti, per esempio, il servizio di chiamata di procedura remota (RPC) in Windows XP. Prima di Windows XP SP2, il servizio RPC era eseguito nell'account sistema locale ed è stato appunto questo a permettere a Blaster, Welchia e ad altri worm di eseguire attività di amministrazione una volta che era stata sfruttata la vulnerabilità dell'RPC.

In secondo luogo, molti servizi sono rivolti verso la rete, la quale consente ai malware di sfruttare questi servizi per creare connessioni in entrata o per creare connessioni in uscita a partire dai servizi infetti in modo da poter infettare altri sistemi o eseguire altre attività illecite come il monitoraggio dei tasti premuti. La maggior parte delle attuali infezioni causate da malware e worm si verifica tramite alcuni metodi di connessione alla rete.

Infine, i servizi sono tipicamente long-running, il che significa che essi rimangono attivi dal momento in cui il sistema si avvia fino allo spegnimento del computer. Questa è una caratteristica di grande interesse per i programmatori di malware perché ciò significa che essi possono esaminare il servizio in cerca di difetti per tutto il tempo in cui il sistema è attivo e, in definitiva, consentire al malware molto tempo per eseguire le sue nefande attività.

L'attacco dei cloni

Poteva essere il suo più grande trionfo. Se tutto fosse andato secondo i piani, avrebbe potuto controllare centinaia di migliaia di sistemi Windows in tutto il mondo, essendo in grado di impartire loro potenzialmente qualsiasi ordine, per poi colpire di nuovo ed osservare i sistemi obbedire diligentemente ad ogni suo comando.

Ostinato ma sfuggente nei suoi metodi, cominciò ad esaminare furtivamente molti sistemi, in cerca di un punto d'accesso vulnerabile. Non impiegò molto tempo a trovare esattamente ciò che stava cercando: un sistema non corretto e con una nota vulnerabilità che sapeva esattamente come sfruttare.

Ciò che rendeva questa vulnerabilità tanto pericolosa era il fatto che, potendo sfruttarla con successo, sarebbe stato in grado di ottenere un totale accesso all'amministrazione del sistema. Non stava semplicemente prendendo il controllo di un account: stava manovrando il più potente account di amministrazione presente in Windows. Ciò che avrebbe potuto fare in seguito avrebbe avuto un limite soltanto nella sua immaginazione.

Dopo qualche minuto di riflessione, provò il suo codice non autorizzato sulla macchina vulnerabile e unpatched e il tentativo ebbe successo! In pochi istanti era in possesso di privilegi illimitati sul computer. Utilizzò il suo accesso di amministrazione per costringere il computer a scaricare e installare un codice Trojan, effettuare modifiche del registro di sistema e quindi riavviare, per rendere il sistema infetto un sostituto in grado di obbedire ad ogni suo ordine. La modifica del registro di sistema fece in modo che il malware si attivasse ogni volta che il computer veniva riavviato.

A quel punto le sue intenzioni divennero chiare. Una volta infetto, il computer esaminava le porte di rete specifiche di tutti gli altri computer presenti sulla rete. Se la porta di rete era aperta e il computer vulnerabile, il codice Trojan veniva scaricato e installato sul nuovo computer. Si verificavano le stesse modifiche del registro di sistema. Il ciclo si sarebbe così ripetuto continuamente, creando un potente esercito di cloni. Entro la fine della giornata, migliaia di sistemi Windows in tutto il mondo erano diventati parte del suo pericoloso esercito di cloni, incapaci di obbedire a qualsiasi ordine impartito da altri.

E come se non bastasse, rivolse la sua attenzione al sito Microsoft Windows Update e ordinò ai suoi cloni di eseguire attacchi di tipo Denial of Service, il 15 agosto 2003, nel tentativo di impedire a qualunque computer nel mondo di scaricare i patch necessari che, ironia della sorte, erano disponibili da mesi.

A questo punto avrete intuito che ciò che ho appena descritto è la pandemia causata dal worm MS Blaster che, nell'agosto del 2003, colpì i computer Windows di tutto il mondo. Si può sostenere che Blaster fu uno dei più pericolosi attacchi a Windows di sempre, capace di causare miliardi di dollari di danni. Il fatto più curioso è che nonostante MS Blaster possedesse uno straordinario potere sulle macchine che infettava, era notevolmente semplice in quanto a implementazione.

Come funziona Blaster

Blaster e i suoi derivati si servono di una vulnerabilità nel servizio RPC di Windows per eseguire un buffer overflow. Un intruso in grado di sfruttare con successo tale vulnerabilità potrebbe eseguire codici con i privilegi sistema locale sul sistema infetto, consentendogli poi di operare qualsiasi attività su quel sistema: installare programmi, visualizzare, modificare o cancellare dati e creare nuovi account con pieni privilegi.

Nel caso di Blaster, il worm analizza automaticamente la rete in cerca di computer con porte 135 TCP aperte. Quando trova una vittima, Blaster prova a sfruttare la vulnerabilità RPC. Se il tentativo ha successo, si connette alla porta 4444 di destinazione e costringe il computer vittima ad avviare il Trivial File Transfer Protocol (tfpt) e a scaricare una copia del worm, denominata MSBLAST.EXE, dal sistema infetto (tftp è compreso nel sistema operativo di Windows 2000, Windows XP e Windows Server 2003). In seguito il sistema di attacco impone al computer infettato di avviare MSBLAST.EXE, facendo del computer vittima il nuovo aggressore. Blaster inoltre inserisce il codice nella chiave di registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\Run, consentendo la sua attivazione ogni volta che il computer viene avviato.

Protezione avanzata dei servizi

I servizi di Windows Vista sono stati rafforzati e protetti in quattro modi: esecuzione dei servizi con privilegio minimo, isolamento dei servizi, accesso di rete limitato e Session 0 Isolation. Illustrerò nel dettaglio ognuna di queste modalità.

Esecuzione con privilegio minimo In precedenza, numerosi servizi Windows funzionavano nel contesto dell'account del sistema locale, ovvero l'account più potente di Windows. L'account del sistema locale è dotato di diritti e privilegi per l'utente quali ad esempio la possibilità di accedere a quasi tutti gli oggetti del sistema o a un profilo utente differente, di spacciarsi per altri utenti, di aprire chiavi di registro riservate come: HKLM\SECURITY e di inviare le credenziali del computer a server remoti. Dato che gli autori del malware ambiscono a godere di un tale livello di accesso e di controllo di Windows, qualsiasi servizio in esecuzione nella protezione del sistema locale risulta senz'altro un bersaglio appetitoso.

Ne consegue che sebbene un buon numero di servizi Windows sia stato configurato in modo da funzionare nell'account del sistema locale, molti di questi necessitano solo di un sottoinsieme ridotto dei privilegi propri dell'account del sistema locale. Purtroppo Windows XP e le precedenti versioni di Windows non accettano mezze misure, vale a dire che non forniscono alcun meccanismo in grado di selezionare i privilegi necessari. Di conseguenza, è inevitabile che molti servizi Windows finiscano per funzionare senza alcuna ragione con privilegi di sicurezza eccessivi.

I servizi di protezione avanzata di Windows Vista affrontano la questione introducendo il concetto di privilegio minimo nella configurazione dei servizi. Il privilegio minimo permette ai servizi di funzionare con i minimi privilegi necessari, invece di costringerli ad utilizzare ognuno dei privilegi di default assegnati all'account che usano all'accesso.

Per esempio, un servizio può avere la necessità di operare come parte del sistema operativo, ma non di creare un token di protezione. Con il privilegio minimo, è possibile rimuovere il privilegio di creare token di protezione. Di conseguenza si diminuisce il danno potenziale che un intruso può causare nel caso in cui quel servizio diventasse vulnerabile ad uno sfruttamento nel futuro. Gli sviluppatori possono utilizzare strumenti da riga di comando come SC.exe (vedi figura 2) o adottare metodi programmatici per definire e specificare i privilegi di cui necessita il loro servizio. Inoltre, Microsoft ha applicato il privilegio minimo per ridurre i privilegi predefiniti su tutti i servizi integrati di Windows Vista.

Figura 2 Le opzioni di comando SC definiscono i privilegi dei servizi Windows Vista

Figura 2** Le opzioni di comando SC definiscono i privilegi dei servizi Windows Vista **(Fare clic sull'immagine per ingrandirla)

Isolamento del servizio Nelle versioni di Windows precedenti a Windows Vista, quando un servizio necessitava l'accesso ad un oggetto privilegiato (come una chiave di registro o un file riservato), lo otteneva mediante uno di questi tre metodi: utilizzando l'account del sistema locale per accedere all'oggetto; diminuendo la protezione sulle chiavi di registro o sui file per consentire ad un servizio a basso privilegio di ottenere l'accesso; oppure creando un account specifico per quel servizio e consentendo l'accesso agli oggetti solo tramite quell'account.

Sebbene ognuno di questi approcci funzioni, ci sono alcuni problemi fondamentali. I primi due sono intrinsecamente pericolosi e il terzo presenta la complicazione di avere da gestire manualmente delle password sui nuovi account.

Supponiamo, per esempio, che un programma antivirus installi un servizio che necessita di accedere a diversi oggetti di sistema riservati, come file di firma virus e voci di registro relative al software antivirus. Se il servizio antivirus era configurato, per accedere ai suoi oggetti, a utilizzare l'account del sistema locale o, allo stesso modo, qualunque altro account di protezione integrato, ciò significava che se qualsiasi altro servizio Windows che utilizzava quell'account veniva infettato dal malware, quello stesso malware era potenzialmente in grado di modificare la modalità di funzionamento del software antivirus, o semplicemente di interrompere completamente il servizio antivirus. In effetti i malware attuali usano proprio alcune di queste tecniche per nascondersi ed essere attivi.

Windows Vista offre delle soluzioni a queste problemi in merito alla protezione e alla gestibilità con l'isolamento del servizio, che consente ad un servizio di riservarsi l'uso esclusivo di un oggetto proteggendo la fonte, come un file o una chiave di registro, con una voce di controllo dell'accesso che contiene un ID di sicurezza per il servizio (SID). In questo modo, il servizio antivirus descritto nell'esempio precedente può funzionare entro un account a basso privilegio pur mantenendo l'accesso ai file delle firme riservati o alle chiavi di registro. Per ottenere l'accesso, il servizio antivirus (che funziona in tale account a basso privilegio) ha un proprio SID assegnatogli da Windows Vista. Una volta che il SID è assegnato, il programma antivirus può quindi modificare gli elenchi di controllo di accesso (ACL) dei file di sistema e degli oggetti del registro per garantire l'accesso esclusivamente al servizio antivirus.

Ecco un altro esempio. Nel 2003 l'worm Welchia sfruttò una vulnerabilità RPC per copiarsi in %System%\Wins\Dllhost.exe. Aggiunse anche chiavi di registro a HKLM\SYSTEM\CurrentControlSet\Services per installare i suoi servizi sui sistemi Windows infetti. Oggi, tuttavia, Windows Vista può contrastare Welchia limitando l'accesso a entrambi i percorsi per i servizi specifici appropriati e utilizzando account a basso privilegio per garantire l'accesso a quei servizi.

Accesso di rete limitato Windows Vista comprende un nuovo firewall che si basa sulle funzionalità introdotte con il firewall di Windows XP SP2. Le nuove funzionalità più importanti includono il filtraggio in uscita e l'integrazione con IPsec. Il nuovo firewall si integra anche con la protezione avanzata dei servizi di Windows Vista al fine di rendere più difficile che un malware possa sfruttare la vulnerabilità di un servizio Windows per eseguire attività di rete scorrette.

Nel firewall di Windows Vista, i criteri di protezione del firewall assegnati ai servizi Windows provvedono a determinare limitazioni e restrizioni al comportamento del servizio. Per esempio, ad un servizio come il Plug and Play, che non può mai avere bisogno di comunicare con una porta di rete, verrà assegnata la restrizione "accesso alla rete negato". Con questa protezione attivata, un exploit progettato per colpire quel servizio specifico non potrà mai raggiungere il servizio tramite un approccio basato sulla rete. Qualunque tentativo di comunicazione, in entrata o in uscita, da parte di quel servizio con restrizione, verrebbe bloccato dal firewall. Altri servizi che hanno una legittima necessità di accedere alla rete, possono essere configurati per utilizzare solo determinate porte. Gli sviluppatori possono sfruttare la possibilità di limitare l'accesso alla rete del loro servizio.

Le limitazioni di rete si combinano con il servizio di protezione avanzata per fornire una solida difesa contro potenziali attacchi basati sui servizi e questo è certamente un notevole passo in avanti rispetto alle precedenti versioni di Windows. In precedenza non c'era alcun modo per Windows di decidere come, dove e a quali servizi permettere di comunicare mediante la rete. Al contrario, usando le limitazioni di rete del firewall Windows Vista nei confronti del servizio RPC, è possibile impedire a virus come Blaster, Sasser, o Welchia di servirsi dei servizi infetti per comunicare con altri computer.

Session 0 Isolation Il rapido passaggio da un utente all'altro in Windows XP permette l'accesso contemporaneo a più utenti, ponendo ognuno di loro in differenti sessioni di Windows. la Session 0 viene creata all'avvio, con sessioni aggiunte successivamente a seconda della necessità. I servizi hanno sempre funzionato in Session 0 e, prima di Windows Vista, anche le applicazioni dell'utente erano in grado di funzionare in Session 0. Tuttavia, ci sono delle pericolose conseguenze di protezione nel permettere il funzionamento delle applicazioni utente e dei servizi Windows nella stessa sessione poiché i servizi funzionano con elevato privilegio e sono perciò bersagli per malware in cerca di mezzi per aumentare il loro livello di privilegio.

Windows Vista si concentra su questi rischi di protezione e limita l'uso della Session 0 esclusivamente ai servizi, eseguendo le applicazioni in altre sessioni e rendendo la Session 0 non interattiva (ciò significa che un servizio non può creare un interfaccia utente, una finestra di dialogo o un prompt di comandi, ai quali possa accedere un utente finale). A causa di queste modifiche, la Session 0 Isolation avrà un impatto sulla compatibilità delle applicazioni per chiunque sviluppi driver o servizi Windows.

Riepilogo

Windows Vista è il primo completo sistema operativo in conformità con l'iniziativa Trustworthy Computing prodotto da Microsoft e comprende notevoli miglioramenti che incrementano in maniera determinante la protezione degli utenti Windows. La protezione dei computer è, ovviamente, una disciplina in evoluzione e non c'è alcun dubbio che i programmatori di malware ricerchino, analizzino e sperimentino nuovi modi di sfruttare le vulnerabilità di Windows. Tuttavia, le funzionalità del nuovo servizio di protezione avanzata di Windows Vista aumentano gli ostacoli che è possibile opporre loro, rafforzando le impostazioni di protezione predefinite e riducendo l'area potenzialmente sensibile agli attacchi. Per maggiori informazioni in merito a questi essenziali miglioramenti, visitare il sito microsoft.com/whdc/system/vista/Vista_Services.mspx.

Wole Moses è una guida di Microsoft Regional Windows e un collaboratore Windows da otto anni. Attualmente residente a Istanbul, in Turchia, Wole lavora con i più importanti clienti dei mercati emergenti del Medio Oriente e dell'Africa per supportarli nell'ideazione e nella progettazione di soluzioni Microsoft in grado di ottimizzare le loro infrastrutture IT ed aumentarne contemporaneamente la sicurezza.

© 2008 Microsoft Corporation e CMP Media, LLC. Tutti i diritti riservati. È vietata la riproduzione completa o parziale senza autorizzazione.