Centinaia di applicazioni a rischio per una falla di Windows

Il problema risiede nel modo i cui il sistema operativo carica le DLL. La vulnerabilità è nota da tempo, ma sono ancora molti i software potenzialmente a rischio. La risposta di Microsoft e i consigli per difendersi.

Si fa un gran parlare, in queste ore, di una presunta nuova vulnerabilità che – insita in Windows – coinvolgerebbe decine e decine di applicazioni. Mitja Kolsek, CEO di Acros Security – un’azienda slovacca che si occupa di sicurezza informatica – ha dichiarato: “sembra che praticamente ogni applicazione Windows sia afflitta dalla medesima vulnerabilità“.

La notizia è stata confermata dal celebre esperto di sicurezza HD Moore che ha preferito non fare nomi evitando di citare le applicazioni coinvolte.

Abbiamo esaminato più di 220 applicazioni, sviluppate dalle principali 100 software house, accorgendoci che praticamente la totalità di esse è vulnerabile“, ha aggiunto Kolsek che spiega come il problema sia collegato all’approccio utilizzato da Windows per il caricamento di librerie DLL e file eseguibili (EXE/COM).
Windows include la cartella corrente tra quelle utilizzate per il caricamento degli eseguibili: è questo il problema principale“, ha osservato Kolsek.

Marco Giuliani, Malware Technology Specialist per Prevx, ha voluto ricordare – da parte sua – come la vulnerabilità emersa in questi giorni non sia propriamente una novità. “Si tratta di una tematica nota da diversi anni: ci sono però tutt’oggi numerose applicazioni ancora affette dal problema“, ha fatto presente.

HD Moore ha rivelato che il bug oggetto di discussione è stato ad esempio risolto da parte di Apple, in iTunes, alcuni mesi fa.

Giuliani, da parte sua, fa riferimento al bollettino di Apple col quale l’azienda ha informato i suoi utenti circa l’esistenza della falla (CVE-2010-1795): “iTunes cerca una specifica DLL all’interno del percorso di lavoro dell’applicazione. Nel caso in cui un aggressore dovesse piazzare un file maligno, opportunamente congeniato, nella directory di lavoro di iTunes, potrebbe verificarsi l’esecuzione di codice dannoso sul sistema dell’utente“, si legge.

Il funzionamento nel dettaglio

Si tratta di un approccio che alcuni malware hanno usato nel corso degli anni“, ha commentato Giuliani spiegando che l’espressione chiave è “dynamic-link library search order“: “quando un’applicazione tenta di caricare uno specifico modulo nello spazio degli indirizzi del processo che richiede tale modulo” – continua Giuliani – “vengono di solito impiegate le API di Windows LoadLibrary e LoadLibraryEx, almeno nel caso in cui lo sviluppatore desideri seguire la metodologia documentata“.

Uno dei parametri accettati in ingresso da parte delle due funzioni è il percorso della libreria che deve essere caricata. “Nel caso in cui lo sviluppatore indichi solo il nome della libreria senza abbinare un percorso, il sistema operativo inizia a cercare il modulo in alcune cartelle“.

L’elenco delle directory controllate da Windows viene offerto da Microsoft in questa pagina. Se la libreria indicata dal programmatore dell’applicazione venisse individuata nella cartella corrente (la directory a partire dalla quale il programma viene lanciato), Windows interrompe le successive ricerche in altre locazioni sul disco.

E’ quindi chiaro che se un aggressore dovesse riuscire a salvare, nella medesima cartella di lavoro di un’applicazione vulnerabile, una libreria “maligna” dotata dello stesso nome di un modulo (legittimo) usato dal programma, potrebbe verificarsi l’esecuzione di codice potenzialmente dannoso.

Sebbene si possa discutere sull’implementazione di un ordine di ricerca che vede in testa alla lista la directory corrente di ciascuna applicazione“, conclude Giuliani, “non ritengo si tratti di un problema del sistema operativo. La logica utilizzata da Windows è infatti ben documentata così come le funzioni LoadLibrary e LoadLibraryEx“.

La risposta di Microsoft
Microsoft ha preparato un bollettino “ad hoc” con lo scopo di fornire alcuni approfondimenti sul tema ed alcune soluzioni per scongiurare eventuali rischi di aggressione, aggiungendo che i tecnici dell’azienda stanno al momento verificando se la vulnerabilità coinvolge anche le applicazioni firmate dal colosso di Redmond.

Non si tratta di una vulnerabilità insita in un prodotto Microsoft“, ha voluto precisare Christopher Budd, uno dei responsabili per la comunicazione del team MSRC (Microsoft Security Response Center), indicando che non si tratta di una “lacuna” del sistema operativo. “Si tratta di un attacco che, attraverso un espediente, forza un’applicazione al caricamento di una libreria insicura“, ha continuato.

L’aggressore sfrutta la pratica sconveniente, utilizzata da alcuni programmatori nei loro software, che consiste nell’invocare una DLL senza specificarne l’esatto percorso. In tal modo, effettuando una richiesta “generica”, il sistema operativo provvede a “scandagliare” una serie di cartelle sul disco, alla ricerca della libreria indicata.

Microsoft non può rilasciare una patch per Windows dal momento che ciò potrebbe impattare negativamente sul funzionamento di centinaia di applicazioni. La strada da seguire sembra chiara: ciascuno sviluppatore dovrà correggere autonomamente il funzionamento dei propri software per Windows invocando le DLL in modo corretto.

Microsoft ha comunque deciso di mettere a disposizione le informazioni circa una chiave del registro di sistema (CWDIllegalInDllSearch) che può essere ad esempio utilizzata per bloccare il caricamento delle DLL da locazioni remote (unità USB, siti web, rete LAN e così via). Le informazioni – disponibili in questa pagina – sono state comunque rese di pubblico dominio a beneficio delle realtà aziendali escludendo gli utenti finali.

Come scoprire le applicazioni a rischio
Per capire quali applicazioni sono affette dal problema relativo al caricamento delle librerie DLL, basta usare un programma come Process Monitor e controllare le chiamate QueryOpen effettuate all’avvio di una certa applicazione. Noterete come in molti casi si tenti di aprire una DLL ricercandola prima nella directory di lavoro del programma, poi nella cartella di sistema di Windows e così via.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome