Nueva vulnerabilidad de controlador ingress-nginx para Kubernetes

La comunidad de Kubernetes descubrió recientemente la vulnerabilidad de ingress-nginx identifica como CVE-2021-25748 y una puntuación CVSS de 7.6.

Esta falla de seguridad implica que un usuario que puede crear o actualizar objetos de ingreso, puede usar un carácter de nueva línea para omitir la desinfección del campo “spec.rules[].http.paths[].path” de un objeto de ingreso (en el grupo de API “networking.k8s.io” o “extensions”) para obtener las credenciales del controlador ingress-nginx. En la configuración predeterminada, esa credencial tiene acceso a todos los secretos del clúster.

Versiones afectadas

Versiones de ingress-nginx inferiores a la 1.2.1

Solución

Actualizar ingress-nginx  a la versión 1.2.1 o superior

Solución alternativa 1

  • Ejecute el siguiente comando para modificar nginx-configuration ConfigMap en kube-system:

kubectl edit configmap -n kube-system nginx-configuration

  • Agregue annotation-value-word-blocklist en ConfigMap.

data:

  annotation-value-word-blocklist: «load_module,lua_package,_by_lua,location,root,proxy_pass,serviceaccount,{,},’,\»»

  • Reinicie los pods que están aprovisionados para el controlador NGINX Ingress.

Solución alternativa 2

  • Utilice la función de gobierno de políticas de Container Service for Kubernetes (ACK) para implementar la política ACKCheckNginxAnnotation. Esto le permite denegar las solicitudes de modificación de Ingress que contienen configuraciones riesgosas.

Solución alternativa 3

  • Revoque los permisos para crear y modificar Ingresos desde cuentas de Alibaba Cloud que no sean cuentas de administrador.

Recomendaciones

  • Se recomienda a los usuarios de ingress-nginx que actualicen a versión corregida lo antes posible.
  • En caso de no poder implementar las actualizaciones, optar por alguna solución alternativa.

Referencias