Cada día se descubren nuevas vulnerabilidades que afectan a las librerías y productos que utilizamos a diario. Hoy le ha tocado a Kubernetes.

El Kubernetes Product Security Committee reveló un nuevo problema de seguridad (CVE-2020-8554) que afecta a todas las versiones de Kubernetes. Es de gravedad media y no hay ningún parche disponible.

Se recomienda a los administradores de Kubernetes que:

  • Limiten ciertos permisos del clúster.
  • Restrinjan y auditen manualmente el uso de IP externas dentro de los clústeres.

También se recomienda que los escenarios de clústeres multi-tentant se reconsideren cuando sea posible y apropiado.

Resumen de la vulnerabilidad

CVE-2020-8554 es una vulnerabilidad de Man in the Middle (MITM) que existe en todas las versiones de Kubernetes con el impacto más significativo en los clústeres multi-tentant.

Puede ser explotado por usuarios con permisos básicos, como crear o editar servicios y pods en un clúster de Kubernetes. Un usuario que tenga estos permisos puede interceptar el tráfico de otros pods en el clúster. Esto se hace más fácilmente creando un servicio, que permite al usuario especificar una dirección IP de clúster y también exponer un servicio utilizando una dirección IP externa. El tráfico a esa dirección IP externa desde el clúster se enrutará a ese servicio, lo que permitirá al usuario interceptarlo.

Esto también se puede lograr al parchear el estado de un servicio de load balancer. Vale la pena señalar que la vulnerabilidad en sí misma no otorga a los usuarios no autorizados la capacidad de crear servicios de Kubernetes.

Versiones de Kubernetes afectadas

Todas las versiones de Kubernetes (v1.0-1.20) se ven afectadas, lo que hace que el alcance de esta vulnerabilidad sea significativo. Sin embargo, las circunstancias en las que los clústeres son más vulnerables son principalmente aquellos que ejecutan multi-tentant.

¿Por qué es importante esta vulnerabilidad?

El impacto de esta vulnerabilidad es preocupante porque la realidad es que muchos clústeres de Kubernetes en la actualidad son multi-tentant, con muchos usuarios compartiendo el acceso para crear servicios y lo más preocupante es que este problema se debe a un fallo de diseño, como comenta Tim Allclair (Kubernetes Security en @Apple) en un reciente tuit.

En este caso, la vulnerabilidad surge de los permisos de usuario básicos, lo que significa que los ataques se pueden llevar a cabo con baja complejidad.

La comunidad de Kubernetes deberá determinar la mejor manera de abordar este problema a más largo plazo, y parece que requerirá cambios de diseño incompatibles con versiones anteriores.

Recomendaciones

Dada la ausencia de un parche para esta vulnerabilidad, el único enfoque que se puede tomar es aplicar las mitigaciones adecuadas.

Para ello, tenemos herramientas como Open Policy Agent (OPA), un motor de políticas que proporciona un lenguaje declarativo de alto nivel para definir y hacer cumplir políticas para diferentes sistemas, incluido Kubernetes.

En posteriores posts explicaremos más en profundidad por qué OPA nos parece una herramienta interesante que nos permite aumentar la calidad de nustros clústeres de Kubernetes.

Mi consejo para este CVE en concreto es que los administradores restrinjan el uso de direcciones IP externas con uno de los siguientes métodos:

  • OPA Gatekeeper: una plantilla de restricción de muestra está disponible aquí
  • Con el concepto de Kubernetes, Admission Controller: se puede encontrar un ejemplo aquí

Espero que os sirva de ayuda. Feliz parcheo! :)