Tavis Ormandy (), pesquisador de segurança do Google que está desenvolvendo o projeto , visando portar DLLs compiladas para Windows para uso em aplicações Linux. O projeto fornece uma biblioteca de camadas com a qual você pode carregar um arquivo DLL no formato PE/COFF e chamar as funções nele definidas. O bootloader PE/COFF é baseado em código . Código do projeto licenciado sob GPLv2.
LoadLibrary se encarrega de carregar a biblioteca na memória e importar os símbolos existentes, fornecendo ao aplicativo Linux uma API estilo dlopen. O código do plug-in pode ser depurado usando gdb, ASAN e Valgrind. É possível ajustar o código executável durante a execução conectando ganchos e aplicando patches (correção em tempo de execução). Suporta tratamento e desenrolamento de exceções para C++.
O objetivo do projeto é organizar testes de difusão distribuídos escaláveis e eficientes de bibliotecas DLL em um ambiente baseado em Linux. No Windows, os testes de difusão e cobertura não são muito eficientes e geralmente exigem a execução de uma instância virtualizada separada do Windows, especialmente ao tentar analisar produtos complexos, como software antivírus que abrangem o kernel e o espaço do usuário. Usando LoadLibrary, os pesquisadores do Google estão procurando vulnerabilidades em codecs de vídeo, scanners de vírus, bibliotecas de descompressão de dados, decodificadores de imagens, etc.
Por exemplo, com a ajuda do LoadLibrary conseguimos portar o mecanismo antivírus do Windows Defender para rodar no Linux. O estudo do mpengine.dll, que forma a base do Windows Defender, tornou possível analisar um grande número de processadores sofisticados para diversos formatos, emuladores de sistemas de arquivos e intérpretes de linguagem que potencialmente fornecem vetores para .
LoadLibrary também foi usado para identificar no pacote antivírus Avast. Ao estudar a DLL deste antivírus, foi revelado que o processo de verificação privilegiada de chave inclui um interpretador JavaScript completo usado para emular a execução de código JavaScript de terceiros. Esse processo não é isolado em um ambiente sandbox, não redefine privilégios e analisa dados externos não verificados do sistema de arquivos e do tráfego de rede interceptado. Como qualquer vulnerabilidade neste processo complexo e desprotegido poderia levar ao comprometimento remoto de todo o sistema, um shell especial foi desenvolvido baseado em LoadLibrary para analisar vulnerabilidades no scanner antivírus Avast em um ambiente baseado em Linux.
Fonte: opennet.ru
