Tavis Ormandy (), investigador de seguridad de Google, está desarrollando un proyecto , 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 . El código del proyecto 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 .
LoadLibrary también se utilizó para identificar 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. para analizar vulnerabilidades en el escáner antivirus Avast en un entorno basado en Linux.
Fuente: opennet.ru
