LoadLibrary, una capa para cargar DLL de Windows en aplicaciones de Linux.

Tavis Ormandy (Tavis Ormandy), investigador de seguridad de Google, está desarrollando un proyecto LoadLibrary, destinado a portar bibliotecas DLL recopiladas para Windows para su uso en aplicaciones para Linux. El proyecto proporciona una biblioteca intermedia que permite cargar un archivo DLL en formato PE/COFF y llamar a funciones específicas contenidas en él. El cargador PE/COFF se basa en el código de ndiswrapper. El código del proyecto se distribuye bajo la licencia GPLv2.

LoadLibrary se encarga de las funciones de carga de la biblioteca en memoria e importación de los símbolos disponibles, proporcionando a la aplicación Linux una API al estilo de dlopen. El código plugable se puede depurar utilizando gdb, ASAN y Valgrind. Se prevé la posibilidad de modificar el código ejecutable en tiempo de ejecución mediante la conexión de hooks y la aplicación de parches (runtime patching). Se soporta el manejo y deshacer (unwinding) excepciones para C++.

El objetivo del proyecto es organizar pruebas fuzzing distribuidas escalables y eficientes para bibliotecas DLL en un entorno basado en Linux. En Windows, la realización de pruebas de fuzzing y cobertura no permite alcanzar la eficacia adecuada y a menudo requiere ejecutar una instancia virtualizada separada de Windows, especialmente al intentar analizar productos complejos, como software antivirus, que abarcan la operación a nivel de núcleo y de espacio de usuario. Con LoadLibrary, los investigadores de Google están buscando vulnerabilidades en códecs de video, escáneres antivirus, bibliotecas de descompresión de datos, decodificadores de imágenes, etc.

Por ejemplo, con LoadLibrary se logró portar el motor antivirus Windows Defender para su ejecución en Linux. El estudio de mpengine.dll, que es el núcleo de Windows Defender, permitió analizar un gran número de controladores complejos de varios formatos, emuladores de sistemas de archivos e intérpretes de lenguajes, que potencialmente ofrecen vectores para posibles ataques?.

LoadLibrary también se utilizó para identificar una vulnerabilidad remota en el paquete antivirus Avast. Al analizar el DLL de este antivirus, se descubrió que el proceso de escaneo privilegiado clave incluye un intérprete JavaScript completo, utilizado para emular la ejecución de código JavaScript externo. Este proceso no está aislado en un entorno sandbox, no reduce privilegios y realiza el análisis de datos externos no verificados del sistema de archivos y del tráfico de red interceptado. Dado que cualquier vulnerabilidad en este proceso complicado y no protegido puede potencialmente llevar a la compromisión remota de todo el sistema, se desarrolló una capa especial basada en LoadLibrary. avscript para analizar vulnerabilidades en el escáner antivirus Avast en un entorno basado en Linux.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster