Skip to main content

Petit guide de l’injection LDAP

Écrit par
blog feature playwright end to end tests

1 juin 2023

0 minutes de lecture

Le protocole LDAP (Lightweight Directory Access Protocol) est un mécanisme d’authentification qui sécurise les applications web. LDAP est populaire parce qu’il est léger et facilement évolutif, des caractéristiques appréciées des développeurs, mais qui impliquent que les bases de données LDAP stockent souvent de grandes quantités d’informations précieuses. Elles constituent donc des cibles de choix pour les attaquants.

Les applications construisent des requêtes LDAP à partir des données saisies par les utilisateurs pour accéder aux informations stockées dans les bases de données LDAP et les manipuler. Idéalement, l’application devrait valider et assainir les données saisies par l’utilisateur. Mais ce n’est pas toujours le cas, ce qui rend ces requêtes vulnérables aux injections LDAP.

Dans cet article, nous verrons comment fonctionne l’injection LDAP, quelles sont les conséquences potentielles de ce type d’attaque et comment renforcer les applications pour s’en protéger.

Fonctionnement de l’injection LDAP

Les requêtes LDAP utilisent des prédicats construits à partir de caractères spéciaux — tels que les guillemets, les astérisques, les crochets et les esperluettes — pour contrôler le sens de la requête. Ces caractères spéciaux sont appelés métacaractères. En général, ces données sont assainies et validées avant la création et l’envoi de la requête au serveur. Toutefois, dans un environnement non sécurisé où la validation des données saisies est insuffisante, un attaquant peut modifier les caractères de contrôle et altérer le comportement prévu de la requête.

Par exemple, une page de connexion demande un USER et un PASSWORD pour authentifier l’accès à une base de données à l’aide de l’une des implémentations LDAP les plus répandues : OpenLDAP. Le serveur LDAP utilise un filtre de recherche comme celui ci-dessous pour vérifier que les identifiants USER et PASSWORD fournis par l’utilisateur figurent dans une liste de paires autorisées à accéder au système :

(&(USER=jsmith)(PASSWORD=sec87pD02))

Il est important de noter qu’en raison d’une particularité technique des fonctions Active Directory Application Mode (ADAM), nous ne pouvons pas diviser cette requête de recherche en deux filtres, comme suit :

(USER=jsmith)(PASSWORD=sec87pD02)

OpenLDAP ne traiterait que le premier filtre et ignorerait le second. C’est pourquoi nous avons besoin de l’opérateur AND (&) pour garantir que le filtre de recherche renvoie TRUE lorsque nous saisissons correctement nos identifiants.

Ainsi, si notre paire nom d’utilisateur/mot de passe figure dans la base de données, nous pouvons nous authentifier avec succès en saisissant respectivement « jsmith » et « sec87pD02 » comme nom d’utilisateur et mot de passe.

Cependant, si un attaquant connaît uniquement le nom d’utilisateur jsmith, il peut injecter la chaîne d’attaque suivante dans le champ USER de la page de connexion :

jsmith)(&))

Par conséquent, si nous n’assainissons pas les données saisies par l’utilisateur avant de les insérer dans la requête de recherche LDAP générée, la requête se présenterait comme suit :

(& (USER=jsmith)(&))(PASSWORD=randomstring))

L’attaquant a essentiellement complété le premier filtre que le serveur LDAP va traiter. Comme le premier filtre qui utilise l’opérateur & renvoie TRUE, le script ignore le mot de passe incorrect dans le second filtre et accorde l’accès à la base de données.

Le filtre de syntaxe LDAP, qui interroge l’annuaire actif, est une cible privilégiée des attaquants. Les acteurs malveillants peuvent l’utiliser pour transmettre des valeurs de chaîne qui manipulent le serveur LDAP afin qu’il exécute des requêtes spécifiques et d’autres instructions LDAP. Ils injectent ainsi des commandes qui exploitent des autorisations inappropriées ou des erreurs de configuration du serveur LDAP. Des autorisations mal configurées peuvent permettre à un attaquant d’accéder à l’annuaire LDAP et de compromettre sa structure de données principale : l’arborescence des informations d’annuaire. Les attaquants peuvent également modifier les instructions LDAP ou les applications web qui génèrent ces instructions à partir des données saisies par les utilisateurs.

Conséquences des attaques par injection LDAP

Une injection LDAP est une faille de sécurité dangereuse qui peut permettre un accès non autorisé aux applications et aux ressources, compromettant ainsi les informations d’annuaire. Les attaquants peuvent recourir à différentes méthodes pour mener des attaques LDAP, chacune pouvant entraîner de graves conséquences.

Contourner les mécanismes d’authentification

L’une des principales raisons d’utiliser des services d’annuaire est d’autoriser et d’authentifier les utilisateurs. LDAP contrôle l’accès des utilisateurs aux ressources et aux applications qui le prennent en charge. Pour accéder à une application ou à une ressource, l’utilisateur fournit ses identifiants de connexion, comme son nom d’utilisateur et son mot de passe, que LDAP compare aux données de l’annuaire LDAP. Si les identifiants correspondent, l’utilisateur est autorisé à accéder à la ressource.

Les attaques LDAP visent souvent à contourner la vérification des mots de passe. Les acteurs malveillants construisent une injection de code qui met fin à la requête après le nom d’utilisateur. Les attaquants peuvent ainsi demander au serveur d’authentifier l’utilisateur auprès de LDAP sans saisir le bon mot de passe. Un attaquant peut, par exemple, utiliser les métacaractères &, * ou | pour contourner l’authentification.

Les attaques par injection LDAP visant à contourner la connexion peuvent avoir de graves conséquences. Les attaquants peuvent accéder à des comptes administrateur, entraînant l’exposition de données et des atteintes à la vie privée. À terme, ces attaques peuvent compromettre l’intégralité du système, nuire à la réputation et provoquer des pertes financières liées aux poursuites judiciaires, aux amendes et à la perte d’activité.

Exposition des données et des ressources

Une injection LDAP peut permettre aux attaquants de divulguer, modifier, insérer ou supprimer des données sensibles (concernant des hôtes et des utilisateurs) représentées dans l’arborescence LDAP. Les attaques par injection LDAP touchent les applications qui utilisent des filtres LDAP pour fournir des ressources partagées.

Un acteur malveillant peut injecter du code de filtre LDAP ou utiliser une requête LDAP pour répertorier toutes les ressources de l’annuaire. Cela peut entraîner la compromission des données de l’entreprise, y compris des informations sensibles. Cela peut également conduire à des modifications de l’annuaire, telles que des suppressions ou des ajouts. Une fois les informations de l’annuaire obtenues, un pirate peut utiliser les données sensibles comme moyen de pression dans une attaque par rançongiciel.

Comment renforcer les applications contre l’injection LDAP

Pour éviter les attaques par injection LDAP, le meilleur moyen consiste à sécuriser nos applications contre celles-ci. En appliquant les bonnes pratiques suivantes, nous pouvons protéger nos applications et réduire la gravité de toute attaque par injection LDAP potentielle.

Valider et assainir les données saisies par les utilisateurs

La principale défense contre les attaques par injection LDAP consiste à valider et à assainir les données saisies. Notre application doit valider toutes les données saisies par les utilisateurs dans une requête LDAP, y compris les paramètres POST et GET, les cookies et les en-têtes HTTP. Elle doit également rejeter toute donnée qui semble invalide. Si un champ nécessite une adresse e-mail, vous pouvez limiter les caractères autorisés aux points (.), aux lettres, aux chiffres, au signe arobase (@), aux signes plus (+), aux traits de soulignement (_) et aux traits d’union (-).

Pour une application client-serveur, la validation des données côté serveur est obligatoire. Côté client, elle est techniquement facultative, mais essentielle. La validation côté serveur empêche les utilisateurs de contourner la validation côté client en désactivant JavaScript, ce qui permettrait à un attaquant d’exfiltrer des bases de données et de lire ou modifier des données. Lorsque les applications ne valident pas les données saisies par les utilisateurs, elles deviennent vulnérables aux attaques par traversée de répertoires, qui permettent aux attaquants de lire des fichiers arbitraires sur le serveur de l’application.

Appliquer le principe du moindre privilège et l’autorisation Zero Trust pour l’accès aux annuaires

Le principe du moindre privilège (PoLP) est une mesure de sécurité qui limite les droits d’accès des utilisateurs au strict minimum nécessaire pour accéder à une ressource, et ce pendant la durée la plus courte possible. Le PoLP garantit que les utilisateurs peuvent uniquement écrire, exécuter ou lire les ressources dont ils ont besoin pour remplir leurs fonctions et responsabilités. Il garantit ainsi l’autorisation de toutes les requêtes LDAP exécutées sur le serveur LDAP. Pour prévenir les injections LDAP, le PoLP restreint l’accès au compte LDAP qui établit la liaison avec l’annuaire dans une application.

En limitant les privilèges des comptes de liaison LDAP, nous pouvons réduire l’impact de toute attaque par injection réussie. Avec le modèle Zero Trust, nous définissons et limitons également la période pendant laquelle les administrateurs peuvent utiliser des privilèges élevés. En plus des mots de passe, envisagez d’intégrer l’authentification multifacteur (MFA) à LDAP. Avec la MFA, les utilisateurs LDAP qui se connectent à une application doivent fournir un mot de passe et un moyen de vérification supplémentaire.

Échapper les variables et la syntaxe LDAP

Une autre méthode pour empêcher les injections dans les requêtes LDAP consiste à utiliser les fonctions fournies par les frameworks et à échapper les variables. Les attaquants peuvent exploiter des caractères tels que &, *, ! et | pour lancer des attaques par injection LDAP. Nous pouvons donc assainir les données saisies par les utilisateurs en échappant ces caractères spéciaux. La norme RFC 2254 explique comment échapper les valeurs d’assertion dans la représentation sous forme de chaîne des filtres de recherche LDAP.

Prévenir les injections LDAP

Les attaquants s’appuient souvent sur des données utilisateur non validées pour inciter l’interpréteur de requêtes LDAP à exécuter des requêtes arbitraires. Cette méthode modifie la structure prévue de la requête LDAP et permet à l’attaquant d’accéder sans autorisation à des informations sensibles sur les utilisateurs.

Pour prévenir les injections LDAP, nous devons valider et assainir correctement les données saisies, utiliser des variables échappées et appliquer le PoLP ainsi que les politiques d’autorisation Zero Trust. Ces méthodes permettent de contrôler l’accès aux comptes de liaison LDAP et de réduire l’impact d’une attaque par injection LDAP. Même si nous ne pouvons pas éliminer toutes les attaques potentielles par injection LDAP, nous pouvons appliquer ces bonnes pratiques pour garantir que nos applications et les données de leurs utilisateurs restent aussi sécurisées que possible.

Lire la suite

illustration hero ai
Blog

PHP corrige deux vulnérabilités RCE critiques exploitables sans authentification (CVE-2026-109618, CVE-2026-109619) : mettez à jour dès maintenant

Deux vulnérabilités critiques dans le cycle de traitement des requêtes de PHP peuvent permettre l’exécution de code à distance sans authentification. Passez à une version corrigée ou installez un correctif rétroporté par votre fournisseur pour les versions antérieures.

blog feature ai lilac
Blog

Transformez votre backlog de vulnérabilités en pull requests grâce à la remédiation agentique

Evo Remediation Agent est désormais disponible en aperçu ouvert et apporte la résolution automatisée des dépendances à Evo Agentic AppSec. Les équipes AppSec peuvent désormais lancer des campagnes de remédiation continues

AI Background min crop
Blog

L’IA fait surgir tous les risques que vous avez acceptés : sept enseignements du panel de sécurité de l’IA sans filtre

L’IA rend les attaques moins coûteuses et plus rapides, exposant des risques déjà présents dans les organisations. Quatre responsables de la sécurité expliquent pourquoi une défense à la vitesse des machines et une remédiation accélérée sont désormais indispensables.