(Tavis Ormandy), ricercatore della sicurezza di Google, sta sviluppando un progetto , volto a portare le librerie DLL raccolte per Windows per il loro utilizzo in applicazioni per Linux. Il progetto offre una libreria di interfaccia, attraverso la quale è possibile caricare un file DLL in formato PE/COFF e chiamare funzioni specifiche in esso. Il caricatore PE/COFF si basa sul codice . Il codice del progetto è sotto licenza GPLv2.
LoadLibrary gestisce le operazioni di caricamento della libreria in memoria e di importazione dei simboli esistenti, fornendo all'applicazione Linux un'API in stile dlopen. Il codice collegato può essere eseguito in modalità di debug utilizzando gdb, ASAN e Valgrind. È prevista la possibilità di modificare il codice eseguibile durante l'esecuzione tramite l'inserimento di hook e patching a runtime. Sono supportati la gestione e l'unwinding delle eccezioni per C++.
L'obiettivo del progetto è organizzare un test di fuzzing distribuito, scalabile ed efficace delle librerie DLL in un ambiente basato su Linux. Su Windows, la conduzione di test di fuzzing e coverage non consente di ottenere l'efficacia desiderata e spesso richiede l'esecuzione di un'istanza virtualizzata separata di Windows, soprattutto nel tentativo di analizzare prodotti complessi come i software antivirus, che operano a livello di kernel e nell'area utente. Utilizzando LoadLibrary, i ricercatori di Google stanno cercando vulnerabilità in codec video, scanner antivirus, librerie di estrazione dati, decodificatori di immagini e simili.
Ad esempio, attraverso LoadLibrary è stato possibile portare in Linux il motore antivirus di Windows Defender. L'analisi di mpengine.dll, che costituisce la base di Windows Defender, ha permesso di analizzare un gran numero di gestori complessi di vari formati, emulatori di FS e interpreti di linguaggi, che potrebbero fornire vettori per .
LoadLibrary è stato utilizzato anche per identificare nel pacchetto antivirus Avast. Durante l'analisi delle DLL di questo antivirus, è stato scoperto che il processo privilegiato chiave di scansione 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 riduce i privilegi e analizza dati esterni non verificati dal filesystem e dal traffico di rete intercettato. Poiché qualsiasi vulnerabilità in questo processo complesso e non protetto può potenzialmente portare a una compromissione remota dell'intero sistema, è stata sviluppata una shell speciale basata su LoadLibrary. per l'analisi delle vulnerabilità nel scanner antivirus Avast in un ambiente basato su Linux.
Fonte: opennet.ru
