Controladores de kernel firmados: una puerta desprotegida para acceder al núcleo de Windows

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”.

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

Regresar a Noticias
T-Cert / Tigo Copyright©, Guatemala todos los derechos reservados.