Además de Flash, otro producto de Adobe que generalmente se encuentra instalado en los ordenadores es Adobe Reader, el conocido lector de documentos. Hace poco los investigadores de ESET descubrieron dos vulnerabilidades zero-day, una en la mencionada aplicación y otra en el sistema operativo Windows, que combinadas puede terminar siendo un arma peligrosa en manos de los atacantes.
La vulnerabilidad que afecta a Adobe Reader (CVE-2018-4990) es una ejecución de código en remoto, mientras que la de Windows (CVE-2018-8120) es una escalada de privilegios que se ejecuta en el espacio del kernel. Esto abre la puerta a ejecutar código arbitrario con altos privilegios sobre un sistema vulnerable, sin que se requiera de un elevado nivel del interacción por parte del usuario. Las Ameanzas Persistentes Avanzadas suelen apoyarse bastante en este tipo de combinaciones para llevar a cabo campañas que llegan a tener un gran impacto.
Para explotarlas solo se necesita de un fichero PDF malicioso con JavaScript embebido, aunque este también tiene que saltarse un mecanismo de aislamiento (sandbox) incorporado en Adobe Reader llamado Protected Mode. Esta medida de protección dificulta la explotación de vulnerabilidad en la propia aplicación, y la forma más efectiva de saltársela es apoyándose en otro fallo de seguridad localizando en el sistema operativo que está ejecutando Adobe Reader.
Nada más abrir el PDF malicioso, el JavaScript que contiene entra en ejecución para manipular el objeto Button1, que contiene una imagen JPEG2000 específicamente diseñada para explotar las dos vulnerabilidades. Los atacantes han implementado técnicas de pulverización para corromper las estructuras internas de datos y así poder leer y escribir en el acceso a la memoria. Luego los atacantes localizan la dirección de memoria en la que se encuentra en plugin Escrip.api, que es el motor de JavaScript propio de Adobe Reader. El JavaScript malicioso establece una cadena de instrucciones de ensamblaje que podría llevar a la ejecución código de shell nativo.
La vulnerabilidad de Windows es utilizada para romper el aislamiento de Adobe Reader. Concretamente, se encuentra en la función NtUserSetImeInfoEx de win32k, que es un componte del kernel de Windows. Lo que hay que hacer para llevar a cabo el ataque es que la subrutina SetImeInfoEx de NtUserSetImeInfoEx no valide ningún puntero de datos, permitiendo así punteros de desreferencia NULL. Por lo tanto mapeando una página NULL y estableciendo un puntero a offset 0x2C, un atacante puede apoyarse en la vulnerabilidad para escribir en una dirección de memoria arbitraria en el espacio del kernel. Sin embargo, es importante tener en cuenta que desde Windows 8 los usuarios no pueden mapear una página NULL.
La lista de productos afectados es la siguiente:
Acrobat DC (versión 2018.011.20038 y anteriores)
Acrobat Reader DC (versión 2018.011.20038 y anteriores)
Acrobat 2017 (versión 011.30079 y anteriores)
Acrobat Reader DC 2017 (versión 2017.011.30079 y anteriores)
Acrobat DC (Classic 2015) (versión 2015.006.30417 y anteriores)
Acrobat Reader DC (Classic 2015) versión (2015.006.30417 y anteriores)
Windows 7 para 32-bit Service Pack 1
Windows 7 para x64 Systems Service Pack 1
Windows Server 2008 para 32-bit Service Pack 2
Windows Server 2008 para sistemas basados en Itanium Service Pack 2
Windows Server 2008 para x64 Service Pack 2
Windows Server 2008 R2 para sistemas basados en Itanium Service Pack 1
Windows Server 2008 R2 for x64-based Systems Service Pack 1