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
Juan Luis de Sousa-Valadas dice
Hola,
El artículo da a entender que es un problema de OpenShift, cuando **TODAS** las distribuciones de kubernetes 1.0-1.12 están afectadas (salvo si existe alguna que haya con 1.13.0 que salió el día 3 de este mes). **TODOS** los clusters de kubernetes necesitan ser parcheados.
Entiendo que habeis traducido la descripción de Red Hat:
https://access.redhat.com/security/vulnerabilities/3716411
Pero en realidad esa descripción solo es aceptable para OpènShift, la distribución productizada por Red Hat. La vulnerabilidad de Kubernetes upstream y que afecta *A TODAS* las distribuciones de kubernetes se detalla aquí:
https://github.com/kubernetes/kubernetes/issues/71411#issue-384280279
La afirmación «Decir, que el servidor de API de OpenShift está incluido por defecto en todas las instalaciones de Kubernetes.» es rotundamente falsa.
OpenShift es una distribución de Kubernetes y el servidor del API de kubernetes (kube-apiserver) se encuentra en todas las instalaciones de Kubernetes, en OpenShift tenemos el servicio-openshift-master-api que tiene un kubernetes ligeramente modificado con una serie de extensiones. La vulnerabilidad no está relacionada con ninguna de esas modificaciones y afecta a **TODAS** las versiones de kubernetes de 1.0 a 1.12 (la 1.13 rc1 estaría afectada).
Lo que si es cierto, es que openshift está parcheado desde la 3.2 (equivalente a kubernetes 1.2), mientras que kubernetes uptream solo tiene parche a partir de la 1.9 (equivalente a ocp 3.9).
Por último, la afrimación «Adicionalmente, en versiones 3.6 y superiores de OpenShift Container Platform, la vulnerabilidad permitiría acceder con permisos de “administrador de cluster” a cualquier API del servidor de API de OpenShift, como por ejemplo los servicios ‘metrics-service’ y ‘servicecatalog’.» también es errónea, la vulnerabilidad permite acceder sin restricciones únicamente a APIs agregadas, que son una minoría: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/
Saludos
Francisco Salido dice
Juan Luis,
muchas gracias por la corrección y por explicarlo tan detalladamente. Ya hemos corregido la información errónea.
Un saludo.