Correction des failles de sécurité dans l’implémentation de référence LDAP de NGINX

NGINX | 11 avril 2022

Le 9 avril 2022, des vulnérabilités de sécurité dans l’implémentation de référence LDAP de NGINX ont été rendues publiques. Nous avons déterminé que seule l’implémentation de référence est concernée. NGINX Open Source et NGINX Plus ne sont pas eux-mêmes concernés, et aucune mesure corrective n’est nécessaire si vous n’utilisez pas l’implémentation de référence.

L’implémentation de référence LDAP de NGINX utilise le protocole LDAP (Lightweight Directory Access Protocol) pour authentifier les utilisateurs des applications faisant l’objet d’un proxy par NGINX. Elle est publiée sous la forme d’un démon Python accompagné de la configuration NGINX correspondante à l’adresse https://github.com/nginxinc/nginx-ldap-auth, et son objectif ainsi que sa configuration sont décrits en détail sur notre blog.

Les déploiements de l’implémentation de référence LDAP sont affectés par les vulnérabilités si l’une des conditions suivantes s’applique. Nous examinons ci-dessous ces conditions plus en détail ainsi que les mesures permettant d’en atténuer les effets :

  1. Des paramètres de ligne de commande sont utilisés pour configurer le démon Python
  2. Certains paramètres de configuration facultatifs ne sont pas utilisés
  3. L’authentification LDAP dépend de l’appartenance à un groupe spécifique

Remarque : L’implémentation de référence LDAP est publiée à titre d’exemple et décrit le fonctionnement de l’intégration ainsi que tous les composants nécessaires à sa vérification. Il ne s’agit pas d’une solution LDAP adaptée à un environnement de production. Par exemple, le nom d’utilisateur et le mot de passe utilisés sur la page de connexion d’exemple ne sont pas chiffrés, comme l’indiquent les avertissements de sécurité.

Condition d’atténuation 1 : des paramètres de ligne de commande sont utilisés pour configurer le démon Python

La principale méthode de configuration de l’implémentation de référence LDAP consiste à utiliser plusieurs directives proxy_set_header comme indiqué dans l’exemple de configuration et la documentation. Toutefois, les paramètres de configuration peuvent également être définis dans la ligne de commande qui initialise le démon Python (nginx-ldap-auth-daemon.py).

Lorsque les paramètres de configuration sont spécifiés sur la ligne de commande, un attaquant peut remplacer tout ou partie de ces paramètres en envoyant des en-têtes de requête HTTP spécialement conçus. Pour éviter cela, assurez-vous que tous les en-têtes de requête superflus sont ignorés lors de l’authentification en ajoutant la configuration suivante au bloc location = /auth-proxy de la configuration NGINX (nginx-ldap-auth.conf dans le dépôt).

location = /auth-proxy {
    # ...
    proxy_pass_request_headers off;
    proxy_set_header Authorization $http_authorization; # If using Basic auth
    # ...
}

Condition d’atténuation 2 : paramètres de configuration facultatifs non utilisés

Comme dans le cas de la condition 1, un attaquant peut transmettre des en-têtes de requête HTTP spécialement conçus pour remplacer certains paramètres de configuration si ceux-ci n’ont pas été définis dans la configuration. Par exemple, le modèle de recherche LDAP peut être remplacé s’il n’est pas explicitement défini dans la configuration. La protection est la même que pour la condition 1 : il suffit d’ajouter la configuration suivante au bloc location = /auth-proxy de la configuration NGINX.

location = /auth-proxy {
    # ...
    proxy_pass_request_headers off;
    proxy_set_header Authorization $http_authorization; # If using Basic auth
    # ...
}

Condition d’atténuation 3 : l’appartenance à un groupe LDAP est requise

Le démon Python ne nettoie pas ses entrées. Par conséquent, un attaquant peut utiliser un en-tête de requête spécialement conçu pour contourner la vérification de l’appartenance aux groupes (memberOf) et ainsi forcer la réussite de l’authentification LDAP, même si l’utilisateur authentifié n’appartient pas aux groupes requis.

Pour atténuer ce problème, assurez-vous que le démon backend qui présente le formulaire de connexion supprime tous les caractères spéciaux du champ du nom d’utilisateur. Il doit notamment supprimer les parenthèses ouvrante et fermante – ( ) – ainsi que le signe égal (=) ; tous ces caractères ont une signification particulière pour les serveurs LDAP. Le démon backend de l’implémentation LDAP de référence sera mis à jour en conséquence en temps voulu.

Remerciements

Nous remercions Lucas Verney, valodzka et @_Blue_hornet d’avoir attiré notre attention sur ces vulnérabilités de sécurité.


Partager
Mots-clés : F5 NGINX, News, Tech, 2022

À propos de l’auteur

Liam Crilly
Liam CrillyDirecteur senior de la gestion des produits

Autres articles de Liam Crilly

Articles de blog associés

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA
NGINX | 13/10/2025

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA

Découvrez les principaux enseignements tirés des réponses à l’enquête annuelle F5 NGINX sur les dernières tendances en matière de technologies cloud natives, de sécurité, d’ingénierie de plateforme et d’IA.

Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?
NGINX | 03/11/2023

Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?

Lorsque de nouvelles CVE sont signalées, il est facile de ne plus savoir si elles concernent un outil de contrôleur Ingress NGINX particulier, car il existe plusieurs projets. Cet article présente les CVE et explique comment distinguer les différents projets de contrôleurs Ingress afin de dissiper toute confusion.

Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX
NGINX | 11/03/2020

Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX

Votre API répond-elle aux requêtes en moins de 30 ms ? Si ce n’est pas le cas, il ne s’agit pas d’une API en temps réel offrant la faible latence exigée par la grande majorité des organisations. Mesurez la latence de votre API avec l’outil rtapi de NGINX et découvrez comment NGINX peut l’aider à offrir une réactivité en temps réel.

Un testeur d’expressions régulières pour NGINX et NGINX Plus
NGINX | 11/06/2019

Un testeur d’expressions régulières pour NGINX et NGINX Plus

Le testeur d’expressions régulières (regex) pour NGINX et NGINX Plus vous évite de tâtonner en vous indiquant si une expression régulière utilisée dans un bloc location ou map correspond aux valeurs comme prévu. Il génère la configuration appropriée et affiche les valeurs des groupes de capture.

Caches partagés avec les clusters de cache NGINX Plus, partie 1
NGINX | 24/01/2017

Caches partagés avec les clusters de cache NGINX Plus, partie 1

Optimisez la capacité de votre cache web en le répartissant entre plusieurs serveurs de cache web NGINX ou NGINX Plus. Découvrez comment procéder dans cet article.

Introduction aux microservices
NGINX | 19/05/2015

Introduction aux microservices

Les microservices suscitent actuellement beaucoup d’intérêt. Cet article de blog est le premier d’une série de sept consacrée à la conception, au développement et au déploiement de microservices.