Cómo detectar y corregir la vulnerabilidad de Kubernetes CVE-2019-11249
Hayley Denbraver
11 de marzo de 2020
0 minutos de lecturaEn los últimos años, Kubernetes irrumpió en el mundo tecnológico y se convirtió en el sistema de orquestación de contenedores en la nube más popular. Kubernetes sigue siendo un sistema de código abierto potente y útil para desarrolladores, pero, como cualquier herramienta, debe usarse con cuidado y debes tomar medidas para proteger tus clústeres. Hoy queremos hablar de dos vulnerabilidades recientes (CVE-2019-11247 y CVE-2019-11249) y de cómo puedes abordarlas.
Vulnerabilidades de traversal de directorios en Kubernetes
El traversal de directorios es un tipo de ataque que permite a los hackers acceder a directorios y archivos restringidos fuera del directorio raíz del servidor. Al manipular las URL, es posible forzar a una aplicación a revelar archivos «restringidos» o ejecutar comandos para los que, técnicamente, el usuario no debería tener permiso.
A diferencia de otros tipos de ataques, el traversal de directorios encuentra brechas en una política de seguridad para desarrolladores que, por lo demás, funciona correctamente. No necesariamente hay errores en el código. Todo funciona correctamente. Más bien, los permisos, las rutas o las configuraciones de acceso a los archivos son incorrectos o insuficientes.
Los problemas comenzaron hace casi dos años con una clásica vulnerabilidad de traversal de directorios en la operación kubectl cp. En este caso, el código malicioso en los contenedores podía escribir cualquier archivo en cualquier ruta del nodo (máquina) desde el que se copiaba, debido al manejo inseguro de los datos TAR. No era difícil recorrer el directorio para descubrir los nombres de los archivos.
Las correcciones posteriores intentaron sanear las rutas de directorio eliminando los traversal de rutas, pero el problema no se resolvió por completo. Después del parche, se descubrió que los actores maliciosos todavía podían manipular las rutas mediante la creación y el seguimiento de enlaces simbólicos desde los encabezados de los archivos TAR.
A principios de 2019 se identificó un tercer problema de traversal de directorios al usar la operación kubectl cp. Los actores maliciosos podían copiar archivos y directorios entre contenedores y nodos mediante un archivo binario TAR malicioso incluido en un contenedor descargado. En la práctica, un hacker podía reemplazar o crear archivos en la máquina de un usuario, incluso si esa ubicación estaba fuera del directorio de destino de la operación kubectl cp.
CVE-2019-11249
En agosto, Kubernetes publicó CVE-2019-11249, que incluía una corrección que finalmente solucionó la vulnerabilidad de traversal de directorios. La operación kubectl cp ahora realiza verificaciones mucho más rigurosas de la ruta de destino de cada archivo durante la descompresión de archivos TAR. Ya no es posible copiar archivos descomprimidos en rutas que no sean el directorio de destino de la operación kubectl cp original.
Un breve vistazo a CPE-2019-11247
Casi al mismo tiempo que se corrigió la vulnerabilidad de traversal de directorios, se descubrió la vulnerabilidad CVE-2019-11247. Esta vulnerabilidad permitía a los actores maliciosos leer, modificar o eliminar recursos personalizados de todo el clúster, incluso si sus roles de permisos solo les permitían acceder a recursos dentro de su propio espacio de nombres o sección del clúster.
La vulnerabilidad de traversal de directorios y la vulnerabilidad CPE-2019-11247 son similares: en ambos casos, los usuarios podían acceder a partes del contenedor (y, por lo tanto, de los nodos) para las que no deberían tener permiso o no lo tienen.
Sin embargo, CPE-2019-11247 era una vulnerabilidad que se originaba en la forma en que el servidor de API interpretaba los permisos de seguridad en relación con el alcance del endpoint de API. En cambio, la vulnerabilidad de traversal de directorios se debía a permisos de seguridad insuficientes. Se trataba, fundamentalmente, de un problema de control de acceso basado en roles (RBAC). En otras palabras, si un recurso personalizado global (de todo el clúster) tenía como alcance un espacio de nombres y la cuenta que accedía al recurso tenía una definición de rol determinada (como un comodín), era posible omitir el espacio de nombres y manipular recursos globales.
Pasos para corregir CVE-2019-11247 y CVE-2019-11249
Ambas vulnerabilidades están clasificadas como problemas de riesgo medio a alto que deben abordarse lo antes posible. Se recomiendan dos medidas para corregir CVE-2019-11247 y CVE-2019-11249:
Actualiza Kubernetes a una versión con los parches:Se recomienda encarecidamente a todos los usuarios que actualicen sus clústeres y clientes de kubectl a una versión con los parches. Kubernetes 1.13.9, 1.14.5 y 1.15.2 incluyen parches que corrigen ambas vulnerabilidades. Los usuarios que ejecuten la versión 1.12 o una anterior deberán consultar la documentación oficial para determinar la forma correcta de actualizar. Si usas la versión 1.12 o una anterior, es hora de actualizar: la versión 1.12 llegó al fin de su vida útil.
Si no puedes actualizar, elimina las definiciones de roles con comodines de todo el clúster:Es posible que algunos usuarios de plataformas administradas no puedan actualizar de inmediato. En ese caso, elimina los permisos con comodines (indicados por *) para los recursos o apiGroups.
No elimines RBAC de un clúster
Los clústeres que no tienen RBAC habilitado no se ven afectados por CVE-2019-11249 y, en teoría, tampoco por CVE-2019-11247. Sin embargo, no usar RBAC representa un riesgo de seguridad aún mayor, ya que todas las cuentas tendrán acceso root. No elimines RBAC de un clúster, ni siquiera como «solución temporal rápida».
Conclusiones
Los efectos de esta vulnerabilidad de Kubernetes variarán entre clústeres según la naturaleza de cada uno y los recursos que se usen en ellos. Aun así, las vulnerabilidades en Kubernetes son un problema grave, ya que cada vez más organizaciones confían en esta plataforma para orquestar sus contenedores en la nube. Se cree que los parches más recientes corrigen CVE-2019-11247 y CVE-2019-11249.
Sin embargo, la seguridad es un esfuerzo continuo. Estos parches reflejan que los hackers siempre encontrarán formas ingeniosas de aprovechar brechas y errores en el código. Mantente protegido: actualiza y mantente al día con la seguridad de Kubernetes.
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.
