Vulnerabilidades en ingress-nginx que permiten comprometer los clústeres de Kubernetes

En el controlador ingress-nginx desarrollado por el proyecto Kubernetes se han identificado tres vulnerabilidades que permiten, en la configuración predeterminada, acceder a la configuración del objeto Ingress, que, entre otras cosas, almacena las credenciales de acceso a los servidores de Kubernetes, permitiendo un acceso privilegiado. al cúmulo. Los problemas solo aparecen en el controlador ingress-nginx del proyecto Kubernetes y no afectan al controlador kubernetes-ingress desarrollado por los desarrolladores de NGINX.

El controlador de ingreso actúa como puerta de enlace y se utiliza en Kubernetes para organizar el acceso desde la red externa a los servicios dentro del clúster. El controlador ingress-nginx es el más popular y utiliza el servidor NGINX para reenviar solicitudes al clúster, enrutar solicitudes externas y equilibrar la carga. El proyecto Kubernetes proporciona controladores de ingreso centrales para AWS, GCE y nginx, el último de los cuales no está relacionado de ninguna manera con el controlador de ingreso de kubernetes mantenido por F5/NGINX.

Vulnerabilidades en ingress-nginx que permiten comprometer los clústeres de Kubernetes

Las vulnerabilidades CVE-2023-5043 y CVE-2023-5044 le permiten ejecutar su código en el servidor con los derechos del proceso del controlador de ingreso, utilizando “nginx.ingress.kubernetes.io/configuration-snippet” y “nginx.ingress Parámetros .kubernetes” para sustituirlo por .io/permanent-redirect". Entre otras cosas, los derechos de acceso obtenidos le permiten recuperar un token utilizado para la autenticación en el nivel de gestión del clúster. La vulnerabilidad CVE-2022-4886 le permite omitir la verificación de la ruta del archivo mediante la directiva log_format.

Las dos primeras vulnerabilidades aparecen solo en las versiones de ingress-nginx anteriores a la versión 1.9.0, y la última, antes de la versión 1.8.0. Para llevar a cabo un ataque, un atacante debe tener acceso a la configuración del objeto de entrada, por ejemplo, en clústeres de Kubernetes multiinquilino, en los que los usuarios tienen la posibilidad de crear objetos en su espacio de nombres.

Fuente: opennet.ru

Añadir un comentario