El nuevo error de escape del contenedor Docker afecta las funciones de Microsoft Azure

El investigador de seguridad cibernética Paul Litvak reveló hoy una vulnerabilidad sin parches en Microsoft Azure Functions que podría ser utilizada por un atacante para aumentar los privilegios y escapar del contenedor Docker utilizado para alojarlos.

Los hallazgos forman parte de las investigaciones de Intezer Lab sobre la infraestructura informática de Azure.

Luego de la divulgación a Microsoft, se dice que el fabricante de Windows «determinó que la vulnerabilidad no tiene un impacto en la seguridad de los usuarios de Function, ya que el host en sí todavía está protegido por otro límite de defensa contra la posición elevada que alcanzamos en el host del contenedor».

Azure Functions, de forma análoga a Amazon AWS Lambda, es una solución sin servidor que permite a los usuarios ejecutar código activado por eventos sin tener que proporcionar o administrar la infraestructura explícitamente y, al mismo tiempo, posibilita escalar y asignar computación y recursos en función de la demanda.

Al incorporar Docker a la mezcla, hace posible que los desarrolladores implementen y ejecuten Azure Functions fácilmente, ya sea en la nube o en las instalaciones.

Dado que el código de activación es un evento (p. ej., una solicitud HTTP) que está configurado para llamar a una función de Azure, los investigadores primero crearon un activador HTTP para afianzarse en el contenedor de la función, usándolo para encontrar sockets que pertenecen a procesos con «raíz». «privilegios.

A partir de ahí, se identificó que uno de esos procesos privilegiados asociado con un binario «Mesh» contenía una falla que podría explotarse para otorgar al usuario de la «aplicación» que ejecuta los permisos de raíz de la función anterior.

Si bien el binario de Mesh en sí mismo tenía poca o ninguna documentación para explicar su propósito, los investigadores de Intezer encontraron referencias a él en una imagen pública de Docker, que usaron para realizar ingeniería inversa y lograr una escalada de privilegios.

En el paso final, se abusó de los privilegios extendidos asignados al contenedor (usando el indicador «–privileged») para escapar del contenedor Docker y ejecutar un comando arbitrario en el host.

Intezer también ha lanzado un código de explotación de prueba de concepto (PoC) en GitHub para sondear el entorno de host de Docker.

«Instancias como esta subrayan que las vulnerabilidades a veces están fuera del control del usuario de la nube», dijeron los investigadores de Intezer Labs. «Los atacantes pueden encontrar una forma de entrar a través del software vulnerable de terceros.

«Es fundamental que tenga medidas de protección para detectar y terminar cuando el atacante ejecuta código no autorizado en su entorno de producción. Esta mentalidad de Zero Trust incluso se repite en Microsoft».

Continua leyendo