Un error de verificación de contenedores permite que imágenes maliciosas se nublen en Kubernetes

Un error de verificacion de contenedores permite que imagenes maliciosas

Una vulnerabilidad de seguridad de alta gravedad en el controlador de admisión Kyverno para imágenes de contenedores podría permitir que los actores malintencionados importen una gran cantidad de código nefasto en entornos de producción en la nube.

El controlador de admisión de Kyverno ofrece un mecanismo de verificación de firma diseñado para garantizar que solo las imágenes de contenedor validadas y firmadas se introduzcan en un clúster de Kubernetes determinado. Esto puede evitar una serie de malos resultados, dado que las imágenes de contenedores con trampas explosivas pueden contener cargas útiles tan variadas como criptomineros, rootkits, kits de explotación para el escape de contenedores y el movimiento lateral, ladrones de credenciales y más.

Sin embargo, el error (CVE-2022-47633) puede ser explotado para subvertir ese mecanismo. «La vulnerabilidad permite a un atacante… inyectar imágenes sin firmar en el clúster protegido, sin pasar por la política de verificación de imágenes», explicaron los investigadores de ARMO, en un publicación de blog el 21 de diciembre. Hay mucho en juego: el atacante puede tomar el control de la cápsula de una víctima de manera efectiva y usar todos sus activos y credenciales, incluido el token de la cuenta de servicio para acceder al servidor API, advirtieron.

«La vulnerabilidad permite una omisión completa de la verificación de firmas de imágenes. En el caso de un clúster de Kubernetes, esto le da a un ataque una amplia gama de objetivos. Cualquier carga de trabajo puede montar volúmenes de datos y secretos de clúster», dijo Ben Hirschberg, CTO y cofundador de ARMO, le dice a Dark Reading. «Esto significa que el atacante puede inyectar código que puede robar datos y credenciales del clúster de Kubernetes de la víctima. Esto también permite que el atacante inyecte su propio código y use la CPU de la víctima para cosas como la minería de criptomonedas».

Dentro del error: subvirtiendo el controlador de admisión de contenedores

Cuando se solicita una nueva carga de trabajo, definida a través de una imagen con una etiqueta, desde un servidor de la API de Kubernetes, el servidor de la API le pide al controlador de admisión de Kyverno que valide la nueva carga de trabajo. Para determinar si se puede admitir una carga de trabajo en el clúster, el controlador de admisión solicita el manifiesto de la imagen y una firma del registro del contenedor.

Si se retiran, la imagen recibe luz verde y el tiempo de ejecución del contenedor inicia una nueva carga de trabajo basada en dicha imagen.

La vulnerabilidad surge porque el proceso de validación de la firma del controlador descarga el manifiesto de la imagen dos veces, pero solo verifica una firma para una de las descargas, según el aviso.

Por lo tanto, el ataque se ve así: un administrador está diseñado socialmente para extraer una imagen de contenedor de un registro o proxy malicioso. Cuando la imagen se importa por primera vez, el registro malicioso devuelve una imagen válida, benigna y firmada al controlador de admisión. Hasta ahora tan bueno.

Sin embargo, luego el controlador de admisión solicita el manifiesto de la imagen firmada por segunda vez, para obtener el digerir para la mutación — es decir, para actualizar la etiqueta legible por humanos del contenedor. Esta vez, no se produce ninguna validación de firma, lo que permite que el registro malicioso devuelva una imagen diferente, sin firmar y maliciosa, que es, en última instancia, la que se activa y ejecuta.

«Este es un ejemplo clásico de un [time-of-check-to-time-of-use] Problema de TOCTOU eso le permite al atacante tirar de un cebo y cambiar «, según el análisis de ARMO. «Dado que el manifiesto de imagen que finalmente se utilizará no es el mismo que se verificó, esto permite que el atacante engañe al cliente».

La vulnerabilidad se introdujo en la versión 1.8.3 y se corrigió en la versión 1.8.5; Los usuarios de Kyverno deben actualizar lo antes posible. El parche garantiza que se utilice el mismo hash de imagen para cambiar la especificación de la carga de trabajo que se utilizó para verificar la firma.

Esta vulnerabilidad específica afecta solo a Kubernetes con Kyverno, pero otras herramientas de verificación de firmas de imágenes deben tener cuidado de no ser vulnerables al mismo método, advirtió Hirschberg.

Ingeniería social de un ataque de contenedor malicioso

Para llevar a cabo un ataque en el mundo real, los actores de amenazas pueden usar cuentas comprometidas en registros existentes para alojar imágenes maliciosas, o pueden establecer su propio registro de contenedor privado y luego convencer a un administrador para que confíe en él.

Desde un punto de vista práctico, «crear un registro malicioso para un atacante experimentado no es un desafío», dice Hirschberg. «Un atacante puede tomar cualquier software de registro de código abierto, hacer algunas modificaciones menores para que el ataque funcione y ejecutarlo en la nube bajo un dominio personalizado».

El siguiente paso es convencer a un administrador para que confíe en el contenedor malicioso, que tampoco es tan difícil. Las imágenes de contenedores de terceros a menudo se utilizan para poner en marcha aplicaciones listas para usar, de la misma manera que los desarrolladores de aplicaciones obtienen bloques de código preconstruidos de repositorios abiertos como npm: la idea es no tener que reinventar la rueda para funciones y utilidades comunes.

Hirschberg señala que solo una fracción de los usuarios de Kubernetes tienen restricciones sobre de dónde pueden extraer las cargas de trabajo de los contenedores, por lo que es probable que los administradores de la nube no se pongan en guardia de inmediato cuando se trata de usar registros de terceros, especialmente si tienen verificación de firma de imagen en sitio.

“El atacante podría hacer phishing y publicar en múltiples foros una notificación de que hay una nueva versión del software XYZ, y aquí están los Kubernetes YAML o Helm para ejecutarlo”, explica. «Dado que algunas personas se sienten protegidas por la verificación de la firma de la imagen, bajarían la guardia y no tendrían miedo de ejecutar la imagen».

Seguridad de los contenedores: una preocupación creciente

Los contenedores son un buen objetivo para los ciberdelincuentes porque en su mayoría se ejecutan en la nube con acceso a una gran cantidad de recursos informáticos, que son preciosos y costosos, señala Hirschberg, por lo que esto permite a los atacantes robar recursos informáticos y datos, al mismo tiempo que pasan desapercibidos durante un tiempo. periodo de tiempo relativamente largo.

«No tenemos estadísticas exactas, pero está muy claro que con la amplia adopción de contenedores, este se está convirtiendo en un problema más frecuente», dice. «Los equipos de seguridad están aprendiendo a manejarlos, y Kubernetes en general. No creo que sea un verdadero ‘punto ciego’, pero los equipos de seguridad de contenedores todavía están aprendiendo todo el entorno con muchas áreas descuidadas».

Con la adopción de la verificación de firmas de imágenes aún en sus primeras etapas, los controladores de admisión representan una de esas áreas potencialmente desatendidas. Pero también son parte de una conversación más amplia sobre la seguridad del software de la cadena de suministro, que debería ser el centro de atención.

«El ataque de SolarWinds le mostró al mundo cuán delicado es este problema cuando se trata de confiar en la seguridad de un código externo», dice Hirschberg. «Kyverno se encuentra entre las primeras herramientas de seguridad en implementar la validación de firmas, y con las nuevas funciones pueden surgir nuevos errores. Con suerte, este hallazgo lo convierte en un mecanismo más seguro y ayudará a la industria a superar el problema de verificar el software en Kubernetes».

Fuente del artículo

Deja un comentario