Daniel Petri

L'injection LDAP représente un formidable vecteur de cyberattaque, ciblant les mécanismes d'authentification et d'autorisation au sein de votre environnement Active Directory. En exploitant une mauvaise validation des entrées, les attaquants peuvent manipuler les déclarations LDAP et potentiellement obtenir un accès non autorisé à votre service d'annuaire.

Les experts en cybersécurité et en sécurité des identités de Semperis ont une connaissance approfondie de l'injection LDAP, de ses mécanismes aux stratégies d'atténuation. Cet article fournit des connaissances que vous pouvez utiliser pour protéger vos infrastructures Active Directory contre les attaques par injection LDAP.

Qu'est-ce que l'injection LDAP ?

L'injection LDAP est un vecteur de cyberattaque sophistiqué qui cible les vulnérabilités de la couche application des systèmes qui utilisent le protocole LDAP (Lightweight Directory Access Protocol). LDAP est un composant essentiel des services Active Directory, qui fournit un format structuré pour les entrées d'annuaire et une méthode permettant aux clients d'interagir avec les données de l'annuaire.

L'injection LDAP ressemble à l'injection SQL bien connue dans sa méthodologie et son impact. Cependant, l'injection LDAP cible spécifiquement les services d'annuaire tels qu'Active Directory, où les déclarations et les requêtes LDAP sont générées dynamiquement à partir des entrées de l'utilisateur. Lorsque ces entrées ne sont pas rigoureusement assainies ou validées, les attaquants peuvent potentiellement modifier les requêtes LDAP et manipuler les services d'annuaire pour divulguer des informations ou s'authentifier de manière malveillante.

Pour exécuter une injection LDAP, les acteurs malveillants doivent avoir une connaissance approfondie de la syntaxe LDAP et une compréhension claire de la structure des requêtes de l'application cible. Les attaquants testent généralement la vulnérabilité de l'injection LDAP par le biais de messages d'erreur ou en observant le comportement de l'application en réponse à des données d'entrée élaborées.

Comment fonctionne l'injection LDAP ?

Les requêtes LDAP sont utilisées pour rechercher et manipuler les entrées de l'annuaire, en respectant des filtres et des contrôles spécifiques. Ces requêtes doivent être codées de manière sécurisée afin d'empêcher toute altération de leur fonction prévue.

Les injections LDAP exploitent la manière dont une application web construit les requêtes LDAP en fonction des entrées de l'utilisateur. L'attaque vise le cœur des mécanismes d'authentification basés sur les services d'annuaire. Cette méthode d'attaque est rendue possible par l'insuffisance de l'assainissement ou de la validation des données utilisateur avant qu'elles ne soient introduites dans une déclaration LDAP.

Dans un système présentant une vulnérabilité d'injection LDAP, les caractères spéciaux - tels que les parenthèses [()], l'astérisque (*) ou l'esperluette (&) - qui sont intégrés dans les entrées utilisateur sans être correctement échappés peuvent modifier la structure logique des requêtes LDAP. Si une application n'échappe pas correctement les caractères spéciaux dans les entrées fournies par l'utilisateur, ces entrées peuvent être élaborées pour étendre ou modifier la requête LDAP prévue.

Par exemple, les attaquants peuvent utiliser un caractère générique dans une entrée mal assainie pour récupérer un ensemble d'enregistrements plus large que ce qui est normalement autorisé. Les attaquants peuvent injecter un filtre et des contrôles LDAP, modifier les requêtes et exécuter des commandes arbitraires traitées par le serveur LDAP.

Voici un exemple : Un attaquant adapte un nom d'utilisateur ou un terme de recherche par ailleurs anodin pour y inclure un filtre LDAP tel que :

 )(|(uid=*))

S'il est directement incorporé dans une requête, ce filtre peut renvoyer tous les utilisateurs, ce qui permet de contourner les restrictions de recherche prévues. Pour les applications qui utilisent LDAP pour l'authentification, l'attaquant pourrait injecter des éléments de contrôle, tels que LDAP_SCOPE_SUBTREE ou des opérateurs booléens, ce qui permet de tromper le système et de lui accorder un accès sans les informations d'identification appropriées.

Si la requête de l'application inclut des fonctions administratives, l'attaquant peut être en mesure de modifier les entrées ou le schéma LDAP, de supprimer des enregistrements ou même de modifier les contrôles d'accès, en fonction des droits de l'exécuteur de la requête LDAP.

Les systèmes vulnérables à l'injection LDAP comprennent généralement des applications web avec des backends LDAP, où les entrées des utilisateurs ne sont pas correctement nettoyées avant d'être transmises aux interpréteurs de requêtes LDAP. Les applications qui permettent aux utilisateurs de saisir directement des filtres de recherche sont particulièrement exposées.

L'injection d'opérateurs de requête LDAP peut transformer une consultation d'annuaire anodine en une commande qui expose des données sensibles pour les utilisateurs, comme par exemple :

  • Noms d'utilisateur
  • Adresses électroniques
  • Hachures de mots de passe

Par conséquent, ce type d'attaque peut conduire à des actions non autorisées telles que la visualisation ou la manipulation d'informations privilégiées au sein du service d'annuaire. L'attaque ne contourne pas seulement les mécanismes d'authentification, mais peut également modifier ou corrompre les données de l'annuaire, ce qui représente un risque important pour la sécurité de l'infrastructure informatique d'une organisation.

Quels sont les risques liés à l'injection LDAP ?

Une injection LDAP réussie peut faire plus que compromettre une application ; l'attaque peut avoir des effets en cascade sur tous les systèmes qui s'appuient sur le même répertoire pour l'authentification et l'autorisation.

Par exemple, un attaquant peut récupérer des informations sensibles sur l'utilisateur, y compris des identifiants de connexion, qu'il peut ensuite utiliser dans d'autres attaques. La violation initiale peut conduire à la consultation non autorisée d'enregistrements, à la modification de données d'annuaire ou au contournement de protocoles d'authentification. L'attaque compromet l'intégrité et la confidentialité des services Active Directory, ce qui entraîne une perte de confiance et un risque de non-conformité aux réglementations.

Les risques associés à l'injection LDAP ne se limitent pas à l'exposition des données. Étant donné que LDAP peut également être utilisé pour authentifier les utilisateurs, une injection peut être utilisée pour usurper l'identité d'un autre utilisateur - potentiellement un compte administratif - en modifiant une requête d'authentification pour qu'elle renvoie toujours True, quel que soit le mot de passe fourni.

Comment détecter une attaque par injection LDAP ?

Pour détecter une injection LDAP, les professionnels de la sécurité doivent surveiller les requêtes LDAP inhabituelles. Ils doivent rechercher des schémas indiquant une injection, tels que des requêtes peu orthodoxes ou des requêtes contenant des charges utiles typiques d'une injection. Il est prudent d'utiliser des systèmes de détection d'intrusion qui recherchent spécifiquement ces anomalies.

Comment atténuer les effets d'une attaque par injection LDAP ?

Il est impératif de comprendre et d'atténuer l'injection LDAP, car elle peut compromettre l'intégrité et la confidentialité des systèmes d'authentification basés sur des annuaires. LDAP est un service fondamental pour de nombreux systèmes d'entreprise, notamment :

  • Clients de messagerie
  • Cadres d'authentification unique (SSO)
  • Applications reposant sur des services de consultation d'annuaires

Les conséquences d'une telle attaque sont considérables. La sécurisation des requêtes LDAP n'est pas seulement une pratique de programmation défensive. Il s'agit plutôt d'une mesure de protection essentielle pour la sécurité des services d'annuaire d'entreprise et, par extension, de l'ensemble du réseau de l'organisation.

L'atténuation de l'injection LDAP implique les actions suivantes :

  • Mise en œuvre d'une validation robuste des entrées dans l'application recevant les entrées de l'utilisateur LDAP
  • Adoption de déclarations préparées avec des requêtes paramétrées
  • Utilisation des routines d'échappement LDAP
  • Respecter le principe du moindre privilège lors de l'octroi des autorisations d'accès

Les administrateurs d'Active Directory sont les premiers défenseurs contre les attaques par injection LDAP. Voici 10 mesures à prendre pour renforcer vos défenses :

  1. Valider les données. Mettez en œuvre des contrôles rigoureux de validation des entrées pour toutes les données fournies par l'utilisateur. Appliquer des jeux de caractères et des modèles d'entrée stricts. Rejeter toute demande contenant des caractères inattendus ou illégaux. Utilisez des expressions régulières pour définir les entrées autorisées. Veiller à ce que seules les données assainies soient traitées.
  2. Utiliser des bibliothèques LDAP sécurisées. Utilisez des bibliothèques et des structures qui prennent intrinsèquement en charge les requêtes paramétrées lors de la construction d'instructions LDAP. Ces bibliothèques empêchent l'inclusion d'entrées non fiables dans le contexte d'exécution de la commande, neutralisant ainsi les tentatives d'injection.
  3. Échapper correctement les caractères spéciaux. Développez un mécanisme d'échappement robuste dans lequel tous les caractères spéciaux sont échappés correctement, conformément à la syntaxe LDAP, avant d'être inclus dans les requêtes LDAP. Cette partie systématique du processus d'assemblage des requêtes permet d'éviter que l'interprète identifie à tort des données comme étant du code.
  4. Respecter le principe du moindre privilège. Appliquez le principe du moindre privilège à tous les comptes du service LDAP. Veillez à ce que les comptes utilisés par les applications pour interagir avec le serveur LDAP ne disposent que des privilèges nécessaires à l'exécution des tâches requises.
  5. Auditer souvent. Auditer et surveiller en permanence les schémas d'interrogation LDAP et les journaux d'accès. Établissez des lignes de base pour le comportement normal des requêtes et utilisez des outils automatisés pour détecter les écarts qui pourraient indiquer des tentatives d'injection ou des injections réussies.
  6. Former les utilisateurs et les développeurs. Organisez régulièrement des sessions de formation pour les utilisateurs et les développeurs. Enseignez aux utilisateurs l'importance de l'hygiène des données. Formez les développeurs aux pratiques de codage sécurisé, en particulier en ce qui concerne l'interaction avec LDAP. Les alerter sur les signes d'une injection LDAP et leur communiquer les meilleures pratiques de prévention.
  7. Mise à jour et correctifs. Maintenez vos serveurs LDAP et les logiciels associés à jour avec les derniers correctifs de sécurité. De nombreuses injections exploitent des vulnérabilités connues pour lesquelles des correctifs sont disponibles, de sorte que des mises à jour régulières constituent une défense simple mais efficace.
  8. Couche de sécurité. Combinez les mesures de sécurité telles que les pare-feu, les systèmes de détection des intrusions et l'authentification multifactorielle (MFA) pour créer des couches de sécurité. Cela permet de ralentir les attaquants et de multiplier les occasions de détecter une attaque et d'y répondre.
  9. Documenter un plan de réponse aux incidents. Élaborer un plan de réponse aux incidents spécifiquement pour les attaques par injection LDAP. Ce plan doit comprendre des étapes permettant d'identifier l'étendue de la violation, de contenir l'attaque, d'éradiquer la menace, de rétablir le fonctionnement normal des systèmes et de notifier les parties concernées.
  10. Créer des sauvegardes régulières. Effectuez des sauvegardes régulières des données de l'annuaire LDAP et d'Active Directory. En cas de corruption des données due à une attaque par injection, les sauvegardes peuvent garantir une interruption minimale des services.

Audit de la surface d'attaque d'Active Directory

L'injection LDAP constitue une menace importante pour les environnements Active Directory. La compréhension du fonctionnement de cette attaque et la mise en œuvre d'une approche de sécurité à plusieurs niveaux peuvent toutefois réduire considérablement les risques. La vigilance, associée à des mesures de protection techniques, est primordiale pour garantir la sécurité des services d'annuaire face à des vecteurs d'attaque aussi sophistiqués. Un bon point de départ : Téléchargez Purple Knight et procédez dès aujourd'hui à l'audit de votre système Active Directory hybride.