Trois vulnérabilités ont été identifiées dans le contrôleur d'ingress ingress-nginx du projet Kubernetes en développement, permettant d'accéder, dans la configuration par défaut, aux paramètres de l'objet Ingress, qui contiennent, entre autres, les informations d'identification nécessaires pour communiquer avec les serveurs Kubernetes, permettant d'obtenir un accès privilégié au cluster. Ces problèmes ne concernent que le contrôleur ingress-nginx du projet Kubernetes et n'affectent pas le contrôleur kubernetes-ingress, développé par F5/NGINX.
Le contrôleur d'ingress agit comme une passerelle et est utilisé dans Kubernetes pour organiser l'accès des réseaux externes aux services à l'intérieur du cluster. Le contrôleur ingress-nginx est le plus populaire et utilise serveur NGINX pour la redirection des requêtes vers le cluster, la gestion de la circulation des demandes externes et l'équilibrage de charge. Le projet Kubernetes fournit des contrôleurs d'ingress de base pour AWS, GCE et nginx, ce dernier n'étant pas lié au contrôleur kubernetes-ingress, dont l'assistance est assurée par F5/NGINX.

Les vulnérabilités CVE-2023-5043 et CVE-2023-5044 permettent l'exécution de code personnalisé avec le serveur les droits du processus du contrôleur d'ingress, en utilisant pour sa substitution les paramètres «nginx.ingress.kubernetes.io/configuration-snippet» et «nginx.ingress.kubernetes.io/permanent-redirect». Parmi d'autres choses, les droits d'accès obtenus permettent d'extraire le token utilisé pour l'authentification au niveau de la gestion du cluster. La vulnérabilité CVE-2022-4886 permet de contourner la vérification des chemins de fichiers en utilisant la directive log_format.
Les deux premières vulnérabilités ne se manifestent que dans les versions de l'ingress-nginx antérieures à 1.9.0, et la dernière, à celles antérieures à 1.8.0. Pour mener une attaque, un attaquant doit avoir accès à la configuration de l'objet d'ingress, par exemple, dans des clusters Kubernetes multi-utilisateurs, où les utilisateurs sont autorisés à créer des objets dans leur propre espace de noms.
Source : opennet.ru
