Hay varios tipos de controladores de kernel; lo primero que me viene a la mente son los controladores de dispositivos que proporcionan una interfaz de software a los dispositivos de hardware, como interfaces plug and play o controladores de filtro. Estos componentes de bajo nivel del sistema tienen un proceso de desarrollo estricto que incluye un escrutinio con respecto a la seguridad. Sin embargo, existen controladores o “drivers” de software adicionales que están diseñados para ejecutarse en el Ring 0 y brindan funciones específicas no relacionadas con el hardware, como debugging y diagnóstico de software, análisis del sistema, etc. Como puede observarse a continuación, estos son propensos a extender la superficie de ataque de manera significativa.
Si bien ya no es posible cargar directamente un controlador malicioso sin firma en las versiones más recientes de Windows (a menos que la aplicación de firma del controlador esté explícitamente deshabilitada durante el arranque) y los rootkits de kernel se consideran cosa del pasado, todavía hay formas de cargar código malicioso en el kernel. Si bien las vulnerabilidades y los exploits que permiten eso reciben mucha atención, hay una manera mucho más fácil: abusar de controladores legítimos y firmados. Hay muchos controladores de varios proveedores de hardware y software que ofrecen funcionalidad para acceder completamente al kernel con un mínimo esfuerzo.
Las vulnerabilidades en controladores firmados son utilizadas principalmente por los desarrolladores de cheats para juegos con el objetivo de evadir los mecanismos anti-cheating de los creadores, pero también se ha observado que son utilizadas por varios grupos APT así como por códigos maliciosos del tipo “commodity”.
En la versión en inglés de este artículo se analiza los tipos de vulnerabilidades que generalmente ocurren en los controladores del kernel, se presentan varios casos de estudio de código malicioso que utilizan dichos controladores vulnerables, se analizan ejemplos de controladores vulnerables que descubrimos durante nuestra investigación y se incluyen técnicas de mitigación efectivas contra este tipo de explotación. Si bien este problema no es nuevo y se han publicado en el pasado investigaciones relevantes sobre el tema, principalmente durante 2018 y 2019 ([1], [2], [3]), la realidad indica que al momento de escribir este artículo sigue siendo un problema.
Si bien cada vulnerabilidad es diferente, parece que hay ciertos tipos de vulnerabilidades recurrentes en controladores de kernel que no están relacionados. Esto puede deberse en parte a muestras de código de controlador (antiguo) que fueron creadas cuando el acceso al modo kernel no estaba restringido a controladores firmados y los desarrolladores no tenían en cuenta la seguridad (el malware podía fácilmente cargar controladores de rootkit sin firma). Las diferentes secciones de este artículo describen las vulnerabilidades observadas con mayor frecuencia en los controladores de una gran variedad de proveedores de hardware y software, incluso de alto perfil.
A modo de adelanto, los tipos de vulnerabilidades más comunes son:
- Lectura/escritura en MSR
- SMEP
- SMAP
- KVA shadowing
- Lectura/escritura en memoria física
- Lectura/escritura en memoria virtual
En la versión completa de esta publicación compartimos información detallada sobre cada uno de estos tipos de vulnerabilidades, así como casos de estudio sobre grupos de APT como Slingshot e InvisMole o el ransomware RobinHood que utilizan controladores de kernel vulnerables. Además, los investigadores de ESET no solo catalogaron las vulnerablidades existentes y crearon una lista completa, sino que incluyeron información sobre nuevas vulnerabilidades recientemente descubiertas. Algunos proveedores fueron contactados por ESET como parte del proceso de divulgación y se mostraron proactivos para corregir los fallos.
Por último, en el artículo completo se detallan técnicas de mitigación para estas fallas, como la seguridad basada en virtualización, revocación de certificados, o el blacklisting de controladores.
Lea el artículo completo aquí.