LoadLibrary, un livello per caricare le DLL di Windows nelle applicazioni Linux

Tavis Ormandy (Tavis ormandy), un ricercatore di sicurezza di Google che sta sviluppando il progetto LoadLibrary, finalizzato al porting di DLL compilate per Windows per l'utilizzo in applicazioni Linux. Il progetto mette a disposizione una libreria di layer con la quale è possibile caricare un file DLL in formato PE/COFF e richiamare le funzioni in esso definite. Il bootloader PE/COFF è basato sul codice ndiwrapper. Codice del progetto distribuito da concesso in licenza con GPLv2.

LoadLibrary si occupa di caricare la libreria in memoria e di importare i simboli esistenti, fornendo all'applicazione Linux un'API in stile dlopen. È possibile eseguire il debug del codice del plug-in utilizzando gdb, ASAN e Valgrind. È possibile modificare il codice eseguibile durante l'esecuzione collegando hook e applicando patch (patch runtime). Supporta la gestione e lo svolgimento delle eccezioni per C++.

L'obiettivo del progetto è organizzare test di fuzzing distribuiti scalabili ed efficienti delle librerie DLL in un ambiente basato su Linux. Su Windows, i test di fuzzing e copertura non sono molto efficienti e spesso richiedono l'esecuzione di un'istanza virtualizzata separata di Windows, soprattutto quando si tenta di analizzare prodotti complessi come software antivirus che abbracciano il kernel e lo spazio utente. Utilizzando LoadLibrary, i ricercatori di Google cercano le vulnerabilità nei codec video, negli scanner antivirus, nelle librerie di decompressione dei dati, nei decodificatori di immagini, ecc.

Ad esempio, con l'aiuto di LoadLibrary siamo riusciti a eseguire il porting del motore antivirus di Windows Defender su Linux. Lo studio di mpengine.dll, che costituisce la base di Windows Defender, ha permesso di analizzare un gran numero di sofisticati processori per vari formati, emulatori di file system e interpreti di linguaggio che potenzialmente forniscono vettori per possibile attacchi.

Per identificare è stato utilizzato anche LoadLibrary vulnerabilità remota nel pacchetto antivirus Avast. Studiando la DLL di questo antivirus, è stato rivelato che il processo di scansione con privilegi chiave include un interprete JavaScript completo utilizzato per emulare l'esecuzione di codice JavaScript di terze parti. Questo processo non è isolato in un ambiente sandbox, non ripristina i privilegi e analizza i dati esterni non verificati dal file system e il traffico di rete intercettato. Poiché qualsiasi vulnerabilità in questo processo complesso e non protetto potrebbe potenzialmente portare alla compromissione remota dell'intero sistema, è stata sviluppata una shell speciale basata su LoadLibrary avscript per analizzare le vulnerabilità nello scanner antivirus Avast in un ambiente basato su Linux.

Fonte: opennet.ru

Aggiungi un commento