Foxit Reader, presentado como una alternativa al lector de PDF Adobe Reader con algunas mejoras, sufre de una de las vulnerabilidades menos conocidas: la carga insegura de DLL’s.
Foxit Reader es una herramienta dedicada al formato de archivos PDF, que puede ver, crear, editar, imprimir y firmar digitalmente. Bajo el modelo de características base gratuitas y servicios adicionales de pago conocido como ‘freemium’, esta aplicación está desarrollada por Foxit Software, una compañía localizada en Fremont, California. Las primeras versiones de Foxit Reader se hicieron famosas por ser rápidas y livianas.
Esta vez, Foxit Reader es noticia por presentar una vulnerabilidad poco común, que tiene su origen en un fallo de programación a la hora de especificar las DLL’s a cargar por el programa. La vulnerabilidad concreta es conocida como ‘Unsafe DLL loading’, y consiste en que es posible engañar al programa para que cargue una DLL diferente a la original. Debido a que por defecto las DLL’s al ser cargadas ejecutan un método encargado de inicializar recursos que necesite la DLL (llamado ‘DllMain’), esto es equivalente a ejecución de código arbitrario, si bien las condiciones están ciertamente restringidas.
Generalmente, en Windows la carga de DLL’s funciona buscando la librería en distintas rutas, siguiendo el siguiente orden (en Windows XP, en versiones modernas varía ligeramente):
- Donde reside el ejecutable
- El directorio actual (no es lo mismo que el primer punto)
- El de sistema (típicamente ‘C:\Windows\System32\’)
- Otro de sistema, pero el de 16 bits (‘C:\Windows\System\’)
- El directorio de Windows (‘C:\Windows\’)
- Los directorios especificados en la variable de entorno ‘PATH’