Tavis Ormandy (), ricercatore della sicurezza di Google, sta sviluppando un progetto , mirato al porting di librerie DLL compile per Windows per il loro utilizzo in applicazioni Linux. Il progetto fornisce una libreria di interfaccia che consente di caricare un file DLL in formato PE/COFF e di invocare funzioni specifiche al suo interno. Il caricatore PE/COFF si basa su codice . Il codice del progetto è sotto licenza GPLv2.
LoadLibrary si occupa delle funzioni di caricamento della libreria in memoria e dell'importazione dei simboli disponibili, fornendo all'applicazione Linux un'API in stile dlopen. Il codice collegato può essere eseguito in fase di debug tramite gdb, ASAN e Valgrind. È prevista la possibilità di modificare il codice eseguibile durante il runtime tramite l'aggiunta di hook e patch (runtime patching). Sono supportati il trattamento e lo smontaggio (unwinding) delle eccezioni per C++.
L'obiettivo del progetto è l'organizzazione di test di fuzzing distribuiti e scalabili per le librerie DLL in un ambiente basato su Linux. Su Windows, la conduzione di test di fuzzing e coverage non consente di raggiungere l'efficacia desiderata e spesso richiede l'esecuzione di una istanza virtualizzata separata di Windows, specialmente quando si tenta di analizzare prodotti complessi come il software antivirus che operano a livello di kernel e spazio utente. Grazie a LoadLibrary, i ricercatori di Google stanno cercando vulnerabilità nei codec video, negli scanner antivirus, nelle librerie di decompressione dei dati, nei decoder di immagini, ecc.
Ad esempio, grazie a LoadLibrary è stato possibile portare per l'esecuzione su Linux il motore antivirus 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 FS e interpreti di linguaggi, potenzialmente fornendo vettori per .
LoadLibrary è stato utilizzato anche per identificare nel pacchetto antivirus Avast. Durante l'analisi della DLL di questo antivirus, è emerso che il processo privilegiato 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 declassa i privilegi e analizza dati esterni non verificati dal file system e dal traffico di rete intercettato. Poiché qualsiasi vulnerabilità in questo processo complesso e non protetto potrebbe potenzialmente portare a una compromissione remota dell'intero sistema, è stata sviluppata una shell speciale basata su LoadLibrary. per l'analisi delle vulnerabilità nell'antivirus Avast in un ambiente basato su Linux.
Fonte: opennet.ru
