Qué es la escalada de privilegios

¿Por qué estas vulnerabilidades son tan valiosas para los hackers?

0
25

Las vulnerabilidades de escalada de privilegios son problemas de seguridad que permiten a los usuarios obtener más permisos y un mayor nivel de acceso a sistemas o aplicaciones de lo que pretendían sus administradores. Este tipo de vulnerabilidades son valiosas para los atacantes, porque son necesarias para lograr cadenas de exploits completas, pero pueden ser pasadas por alto por los defensores o desarrolladores debido a que sus puntuaciones de gravedad suelen ser bajas.

En general, cualquier violación de un límite de seguridad intencional puede considerarse un problema de escalada de privilegios, incluyendo obtener acceso al kernel desde una aplicación de usuario en un sistema operativo, escapar de una máquina virtual para acceder al hipervisor subyacente, obtener acceso de administrador de dominio desde una estación de trabajo, u obtener funciones privilegiadas en nubes públicas mediante la explotación de configuraciones erróneas.

¿Por qué las vulnerabilidades de escalada de privilegios son peligrosas?
En la comunidad de seguridad, se presta mucha atención a las vulnerabilidades que pueden provocar la ejecución arbitraria de código, especialmente aquellas que pueden ser explotadas de forma remota: la ejecución remota de código (RCE, por sus siglas en inglés). Estas fallas suelen tener los puntajes de gravedad más altos, pero parte de la razón es histórica, pues tradicionalmente los defensores se centraban en evitar que los hackers tengan acceso a sus sistemas en primer lugar.

Si bien esto sigue siendo importante, en el paisaje moderno de amenazas, los hackers pueden obtener acceso a un sistema de varias maneras, no solo explotando las fallas de RCE. Los correos electrónicos de phishing con archivos adjuntos maliciosos siguen siendo una de las formas más comunes en que los atacantes ingresan a las redes, mientras que aprovechar las credenciales débiles o robadas es otro método popular.

Debido al elemento de comportamiento humano, que es difícil de controlar a través de medios técnicos, la mentalidad de defensa ha cambiado en los últimos años de la prevención de amenazas a la detección y contención de amenazas. La prevención sigue siendo importante, pero actualmente la planificación de seguridad se basa en la premisa de que los atacantes probablemente obtendrán acceso a un sistema de una forma u otra. Por lo tanto, la capacidad de limitar el impacto del acceso no autorizado se considera tan vital para la seguridad de las empresas como lo es la prevención del acceso no autorizado.

Los desarrolladores de sistemas operativos y aplicaciones han hecho grandes avances para prevenir la explotación de ciertos tipos de fallas de corrupción de memoria y contener el daño si se produce. Esta es la razón por la que se ha hablado tanto en la última década sobre el principio de mínimo privilegio, arquitecturas de confianza cero de redes, sandboxing de aplicaciones, kernel memory space isolation, virtualización y contenedorización, división de aplicaciones monolíticas en microservicios y otras técnicas similares.

Hoy en día, es raro encontrar una vulnerabilidad RCE en una aplicación que, por sí sola, pueda comprometer completamente el sistema subyacente. Los ataques modernos requieren cadenas de exploits que combinen diferentes vulnerabilidades: por ejemplo, un error de seguridad de la memoria para lograr la ejecución arbitraria de código, una fuga de información para eludir las defensas de aleatorización de la memoria como ASLR, y un problema de escalada de privilegios para obtener acceso completo al sistema. Por lo tanto, las vulnerabilidades de escalada de privilegios son críticas para atacar las aplicaciones y los sistemas operativos modernos, y los hackers están dispuestos a pagar mucho dinero por ellas.

Zerodium, la plataforma de adquisición de exploits, ofrece 10 mil dólares por una escalada de privilegios local de antivirus, 80 mil dólares por una escalada de privilegios en Windows y 200 mil dólares por un escape de máquina virtual VMware. Más importante aún, muchas de las cadenas de exploits específicas de la aplicación que compra la empresa, como las que tienen como objetivos a los navegadores y los sistemas operativos móviles donde los procesos están protegidos, siempre requieren una ejecución remota de código combinada con una escalada de privilegios. Una cadena Chrome RCE + LPE cuesta hasta 500 mil dólares y una cadena WhatsApp RCE + LPE cuesta 1.5 millones de dólares.

¿Qué tan comunes son las vulnerabilidades de escalada de privilegios?
La superficie de ataque de las vulnerabilidades de escalada de privilegios es grande cuando se trata de sistemas operativos. Existen muchos servicios de sistemas operativos, controladores y otras tecnologías que se ejecutan con privilegios del sistema, y exponen la funcionalidad a las aplicaciones de userspace a través de APIs. Si el acceso a esas capacidades no se controla y restringe adecuadamente, los atacantes pueden aprovecharlo para realizar tareas privilegiadas.

Investigadores de la empresa de seguridad CyberArk encontraron recientemente una vulnerabilidad de escalada de privilegios en la Directiva de Grupo de Windows, el mecanismo principal para administrar de manera centralizada la configuración de computadoras y usuarios de Windows en entornos de Active Directory. La falla afectó a todas las versiones de Windows a partir de Windows Server 2008 (que se lanzó hace 12 años) y fue el resultado de una verificación de acceso incorrecta en la rutina de actualización de políticas. Anteriormente, la compañía encontró más de 60 fallas de escalada de privilegios en productos de los principales proveedores como parte de un proyecto de investigación de un año de duración.

Muchos problemas de escalada de privilegios caen en la categoría de fallas lógicas o de diseño en lugar de errores de código; y, si bien los desarrolladores pueden prevenir las vulnerabilidades de código adoptando prácticas de programación seguras, las fallas lógicas son el resultado de no considerar las implicaciones de seguridad de las características o funcionalidades legítimas. Este comportamiento es mucho más difícil de corregir y requiere un cambio de mentalidad -incorporar la seguridad tempranamente en la etapa de diseño del desarrollo.

Según el último informe sobre el estado de las vulnerabilidades publicado por la Agencia de la Unión Europea para la Ciberseguridad (ENISA), las debilidades relacionadas con los permisos, privilegios y controles de acceso fueron la sexta fuente más común de vulnerabilidades y la cuarta en términos de puntaje de gravedad. En cuanto a la popularidad de las técnicas de ataque basadas en el marco ATT&CK de MITRE, la escalada de privilegios fue la tercera más común después de la persistencia y la evasión de la defensa.

Los boletines de seguridad mensuales de Microsoft frecuentemente incluyen parches para fallas de escalada de privilegios que se encuentran en los servicios y controladores del sistema, pero los controladores de terceros creados por fabricantes de componentes de hardware están plagados de problemas similares.

El año pasado, los investigadores de la empresa de seguridad Eclypsium encontraron vulnerabilidades y fallas de diseño en 40 controladores de Windows de más de 20 proveedores de hardware diferentes. Y, recientemente, los investigadores revelaron una vulnerabilidad en un controlador comúnmente utilizado en cajeros automáticos y dispositivos de punto de venta del fabricante de dispositivos financieros Diebold Nixdorf, destacando el riesgo de tales fallas en los dispositivos incrustados que tienen una larga vida útil y son difíciles de actualizar. El kernel y otras utilidades de Linux también han estado plagadas de vulnerabilidades de escalada de privilegios de alta severidad a lo largo de los años, por lo que este no es solo un problema del ecosistema de Windows.

«La mayoría de las veces son vulnerabilidades de la arquitectura y no de implementación”, explica Jesse Michael, investigador principal de Eclypsium. «Pero debido a que los desarrolladores no entendían cómo la arquitectura en sí o el diseño podían ser mal utilizados, construyeron algo que es fundamentalmente inseguro. El código resultante técnicamente no cuenta con una vulnerabilidad y solo hace lo que ellos pretendían que hiciera, pero lo hace para todos, no solo para su aplicación específica”.

Otra gran superficie de ataque para la escalada de privilegios es el secuestro de DLL o la precarga de DLL. Esto se refiere a las aplicaciones que intentan cargar bibliotecas de enlaces dinámicos (DLL) sin especificar una ruta totalmente calificada. En esos casos, Windows busca automáticamente esas DLLs en varias ubicaciones predefinidas en un orden determinado, de modo que, si los atacantes logran colocar una DLL maliciosa con el nombre correcto en una ubicación anterior a la DLL legítima en la ruta de búsqueda, las aplicaciones cargarán la maliciosa en su lugar. Si esas aplicaciones o servicios se ejecutan con privilegios elevados, el código malicioso heredará sus permisos.

En muchos casos, la carga de DLLs es condicional, por ejemplo: «busque esta DLL y cárguela si existe para ampliar la funcionalidad de la aplicación”, que es común para los plug-ins de las aplicaciones y los módulos externos. En muchos casos, las DLLs buscadas pueden no existir de manera predeterminada y los atacantes pueden colocar una DLL maliciosa en cualquier lugar de la ruta de búsqueda donde tengan acceso. Microsoft ofrece orientación para los desarrolladores sobre cómo evitar algunos de estos escollos, pero los ataques de secuestro de DLL siguen siendo frecuentes.

«Hay miles de ellos que vemos todos los días”, cuenta Shay Nahari, jefe de Red Team Services en CyberArk. «Microsoft proporciona una solución, pero es muy difícil especificar la ubicación cada vez que carga una biblioteca. Incluso si lo hace de la manera correcta, hay cosas que estarían fuera de su control. Es la forma fundamental en que operan los programas de Windows, por lo que el secuestro de DLL definitivamente sigue siendo válido y es probable que sea la mayor fuente de escalada de privilegios en Windows que vemos hoy en día”.

Tipos de escalada de privilegios
Al igual que la ejecución arbitraria de código, los problemas de escalada de privilegios pueden ser locales o remotos, dependiendo del tipo de acceso disponible para el atacante. Sin embargo, pueden ocurrir a nivel de la aplicación, cuando un atacante obtiene acceso administrativo a una aplicación desde un usuario con privilegios inferiores; a nivel del sistema operativo, cuando el atacante obtiene acceso a nivel de kernel o sistema desde una cuenta de usuario restringida; a nivel de dominio, cuando el atacante logra obtener un administrador de dominio en una red de Windows Active Directory; e incluso a través de los límites de la red, desde una red local hasta la nube.

La escalada de privilegios a nivel del sistema operativo normalmente recibe la mayor atención, pero los problemas de control de acceso que permiten a los atacantes moverse lateralmente a través de las redes y obtener acceso al dominio también se explotan de manera recurrente en los ataques. Del mismo modo, son comunes las configuraciones incorrectas de la infraestructura de la nube donde las aplicaciones o los servidores virtualizados se ejecutan con más privilegios de los que requieren. «A nivel de dominio, el vector de escalada de privilegios más grande que hemos visto y explotado para obtener administradores de dominio casi todas las veces son las cuentas de servicio”, señala Nahari.

En una red de Active Directory, cualquier usuario puede solicitar un ticket de servicio para cualquier recurso dentro del dominio, incluso si no tiene privilegios para acceder a él. Los tickets de servicio están encriptados con la contraseña del usuario o cuenta de servicio, de modo que técnicamente no pueden ser utilizados de forma directa por usuarios no autorizados. Sin embargo, pueden descifrarse sin conexión con técnicas de fuerza bruta sin arriesgarse a que la cuenta sea bloqueada.

«Si hablamos de las grandes organizaciones, probablemente tienen cientos de esas cuentas de servicio disponibles y cualquier usuario puede solicitar tickets de servicio de todas esas cuentas y luego tratar de descifrarlas sin conexión”, señala Nahari. «Le garantizo que podrá descifrar con éxito al menos una o dos, lo que significa que probablemente obtendrá un administrador de dominio en cuestión de minutos. Este no es un nuevo ataque, pero es extremadamente eficiente y muy común en casi todas las organizaciones que probamos hoy en día”.

A nivel de la nube, las causas más comunes para la escalada de privilegios son el uso de roles de administración de acceso e identidad (IAM) excesivamente permisivos. Cualquier usuario de caja provisionada en la nube, independientemente del proveedor de la nube, puede solicitar una URL de metadatos que contendrá las credenciales del rol de IAM que aprovisionó esa caja. Según Nahari, esto ocurre por diseño, y ocho de cada diez veces el rol de IAM que se usó para aprovisionar un servidor será poderoso y posiblemente proporcionará acceso a toda la infraestructura de la nube de la organización. Estos problemas suelen ser el resultado del aprovisionamiento automatizado de los servidores en la nube, donde los administradores adoptaron el enfoque más fácil a pesar de las advertencias de los proveedores de la nube sobre el uso adecuado de los roles de IAM.

Lo que esto significa en la práctica es que una vulnerabilidad simple de la aplicación web que permite a un atacante realizar solicitudes desde el interior de la máquina local, puede llegar a comprometer toda la infraestructura de la nube debido al uso inadecuado de los roles de IAM, indica Nahari.

Los problemas de escalada de privilegios también pueden catalogarse como verticales u horizontales. La escalada de privilegios vertical ocurre cuando el atacante logra obtener más privilegios que los de la cuenta a la que ya tiene acceso. Un ejemplo sería acceder a una cuenta más privilegiada como la de un administrador. La escalada de privilegios horizontal ocurre cuando el atacante logra obtener acceso a los recursos de un usuario diferente que tiene los mismos privilegios que su propia cuenta, pero cuyos recursos se supone que están protegidos de otros usuarios.

Cómo defenderse contra la escalada de privilegios
Cuando se trata de vulnerabilidades de escalada de privilegios a nivel del sistema operativo, es vital instalar parches de seguridad lo antes posible, no solo para el sistema operativo, sino para todas las aplicaciones de terceros utilizadas en el sistema.

Las tecnologías de listas blancas de aplicaciones pueden utilizarse para restringir qué programas pueden ejecutarse en un sistema, permitiendo a las organizaciones reducir la superficie de ataque de una máquina. También es muy importante asegurarse de que los servicios innecesarios estén desactivados y que los componentes y controladores de hardware no utilizados estén deshabilitados.

Según Nahari, las organizaciones deberían centrar su vigilancia en el acceso privilegiado, porque su modelo de seguridad debería asumir que el código ya se está ejecutando sin autorización en al menos una máquina en sus redes, independientemente de cómo pudo haber sucedido. «Es difícil monitorear cada vez que un usuario ejecuta algo en cualquier dispositivo, pero es relativamente más fácil monitorear aquello que está utilizando el acceso privilegiado en su dominio”, explica. «Entonces, creo que esta es una buena oportunidad para que las organizaciones limiten su detección y prevención”.

CyberArk ha lanzado varias herramientas de código abierto que se pueden usar para detectar el secuestro de DLL, encontrar administradores en la sombra en entornos de AD, gestionar secretos e identidades de aplicaciones, escanear los clústeres de Kubernetes en busca de permisos peligrosos, y más. Otros productos comerciales y herramientas gratuitas pueden escanear despliegues de cloud en busca de configuraciones inseguras, incluyendo los roles de IAM.

Después de diseñar sus redes e infraestructuras en la nube siguiendo los principios de mínimo privilegio, las organizaciones deberían contratar regularmente equipos de seguridad externos para realizar pruebas de penetración con un enfoque en la escalada de privilegios. Dado que la mayoría de los ataques automáticos se basan en cadenas de exploits que combinan múltiples vulnerabilidades, romper un eslabón de esa cadena puede impedir que todo el ataque tenga éxito.

Lucian Constantin, CSOonline.com – CIOPeru.pe