L'ambiente .NET di Microsoft consente di scrivere, in differenti linguaggi ad alto livello, le istruzioni dei quali saranno poi tradotte in
MSIL, ed eseguite su una macchina virtuale. Dal punto di vista di un malintenzionato, sarebbe molto comodo avere a disposizione l'intero ambiente già compromesso, ed è quanto ha fatto
Erez Metula, che offre uno strumento fatto apposta per questo scopo.
Il software si chiama
.Net-Sploit 1.0, e
consente di inserire codice malevolo in stile rootkit in punti dove ben pochi si sognerebbero di guardare, come asicura lo stesso
Metula,
software security engineer di
2BSecure. Egli ha mostrato una
presentazione alla recente
Black Hat conference di Amsterdam.
Il programma in questione permette di automatizzare alcuni dei compiti più difficili per compromettere l'ambiente .NET: per esempio, togliere una DLL di libreria e sostituirla con quella voluta. A questo punto, a un applicativo con un meccanismo di autenticazione possono essere agevolmente intercettate nome utente e password.
La
presentazione sopracitata è già sufficiente per farsi un'idea di come agisce
.Net-Sploit, ma si può consultare anche questo
white paper, più dettagliato. Per chi volesse ulteriormente approfondire le conoscenze, questa
pagina ha tutto quello che occorre, compreso il codice sorgente.
Il metodo, in due parole, è il seguente: localizzare la DLL nel
GAC, decompilarla, modificare il codice
MSIL, ricompilare, forzare il framework a usare la nuova DLL.
Dopo aver compiuto la sua opera, l'attaccante può agire indisturbato per parecchio tempo; bisogna però avere il pieno controllo della macchina prima che il tool possa essere usato. Proprio a fronte di questa esigenza, il
Microsoft Security Response Center, avvertito nel settembre 2008, non ha nessun piano a breve termine per sistemare questo problema, che
viene considerato più una debolezza che una vera e propria vulnerabilità.
Metula ammette questa classificazione, ma dice che i programmi per la sicurezza dei vari venditori dovrebbero essere aggiornati. Tra l'altro, .NET non è l'unico ambiente attaccabile; anche la Java Virtual Machine è soggetta agli stessi pericoli.