Una vulnerabilidad en el sistema de orquestación de Google permitiría a un atacante sin autenticar, conseguir privilegios de administrador en cualquier nodo de un cluster basado en Kubernetes.
Kubernetes es un sistema de orquestación open-source para gestionar aplicaciones en contenedores Docker, entre otros.
La vulnerabilidad, considerada de gravedad crítica, se encuentra en el servidor de API de Kubernetes y permitiría comprometer los «pods» en ejecución de un determinado nodo. Los «pods» son las unidades mínimas que puede manejar Kubernetes, y se componen de uno o más contenedores y volúmenes.
El fallo reside en una conexión TCP vulnerable, a través de la cuál un atacante remoto podría enviar peticiones especialmente manipuladas a una de las API agregadas del servidor de API de Kubernetes y escalar privilegios utilizando las credenciales TLS de dicho servicio.
El siguiente comando permitiría descubrir las API agregadas al cluster:
kubectl get apiservices \
-o 'jsonpath={range .items[?(@.spec.service.name!="")]}{.metadata.name}{"\n"}{end}'
Las políticas RBAC (Role-based access control) por defecto permiten realizar estas peticiones a cualquier usuario, esté o no autenticado.
En última instancia, un atacante que consiga escalar privilegios a través de alguna de las API agregadas podría acceder a un «pod» en ejecución, listar los «pods» de un determinado nodo, ejecutar comandos arbitrarios o revelar información sensible.
La vulnerabilidad ya se ha corregido y se recomienda actualizar cuanto antes.
Versiones seguras de Kubernetes:
- v1.10.11
- v1.11.5
- v1.12.3
- v1.13.0-rc.1
Más información:
CVE-2018-1002105: proxy request handling in kube-apiserver can leave vulnerable TCP connections
https://github.com/kubernetes/kubernetes/issues/71411
Kubernetes Security Announcement – v1.10.11, v1.11.5, v1.12.3 released to address CVE-2018-1002105
https://groups.google.com/forum/#!forum/kubernetes-announce