El Comité de seguridad de productos de Kubernetes ha brindado consejos sobre cómo bloquear temporalmente a los atacantes para que no aprovechen una vulnerabilidad que podría permitirles interceptar el tráfico de otros pods en clústeres de Kubernetes de múltiples inquilinos en ataques man-in-the-middle (MiTM).

Kubernetes (también conocido como K8s), originalmente desarrollado por Google y ahora mantenido por Cloud Native Computing Foundation, es un sistema de código abierto diseñado para ayudar a automatizar la implementación, el escalado y la administración de cargas de trabajo, servicios y aplicaciones en contenedores en grupos de hosts.

Para ello, organiza los contenedores de aplicaciones en pods, nodos (máquinas físicas o virtuales) y clústeres, con varios nodos que forman un clúster administrado por un maestro que coordina las tareas relacionadas con el clúster, como escalar, programar o actualizar aplicaciones.

Servicios afectados que no se implementan ampliamente

El problema de seguridad de gravedad media se rastrea como CVE-2020-8554 y fue informado por Etienne Champetier de Anevia.

Puede ser explotado de forma remota por atacantes con permisos de inquilino básicos (como crear o editar servicios y pods) sin la interacción del usuario como parte de ataques de baja complejidad.

CVE-2020-8554 es una falla de diseño que afecta a todas las versiones de Kubernetes, con clústeres de múltiples inquilinos que permiten a los inquilinos crear y actualizar servicios y pods siendo los más vulnerables a los ataques.

“Si un atacante potencial ya puede crear o editar servicios y pods, entonces es posible que pueda interceptar el tráfico de otros pods (o nodos) en el clúster”, explica Tim Allclair, ingeniero de software que trabaja en la seguridad de Kubernetes en Apple, en un aviso de seguridad publicado el lunes.

“Si crea un servicio con una IP externa arbitraria, entonces el tráfico a esa IP externa desde el clúster se enrutará a ese servicio”, agregó Allclair. “Esto permite a un atacante que tiene permiso para crear un servicio con una IP externa para interceptar el tráfico a cualquier IP objetivo”.

Afortunadamente, la vulnerabilidad debería afectar a una pequeña cantidad de implementaciones de Kubernetes dado que los servicios de IP externos no se utilizan ampliamente en clústeres de múltiples inquilinos, y no se recomienda otorgar a los usuarios inquilinos permisos de estado / servicio de parche para las IP de LoadBalancer.

Cómo bloquear exploits CVE-2020-8554

Dado que el equipo de desarrollo de Kubernetes aún no ha proporcionado una actualización de seguridad para abordar este problema, se recomienda a los administradores que mitiguen CVE-2020-8554 restringiendo el acceso a las funciones vulnerables.

Puede usar un contenedor de webhook de admisión para restringir el uso de IP externas; el código fuente y las instrucciones de implementación están disponibles aquí.

Las direcciones IP externas también se pueden restringir con la ayuda del controlador de políticas Open Policy Agent Gatekeeper para Kubernetes utilizando restricciones y plantillas disponibles aquí.

No se proporcionan medidas de mitigación para las direcciones IP de LoadBalancer, ya que la configuración recomendada no es vulnerable pero, si se requieren restricciones, las recomendaciones de direcciones IP externas también se aplican a las direcciones IP de LoadBalancer.

Para detectar ataques que intentan aprovechar esta vulnerabilidad, debe auditar manualmente el uso de IP externa dentro de los clústeres de múltiples inquilinos utilizando las funciones vulnerables.

“Los servicios de IP externa no se utilizan ampliamente, por lo que recomendamos auditar manualmente cualquier uso de IP externa”, dijo Allclair. “Los usuarios no deben aplicar parches al estado del servicio, por lo que los eventos de auditoría para las solicitudes de estado del servicio de parches autenticados a un usuario pueden ser sospechosos”.