IT-Sicherheit Glossar

Was ist LDAP Injection?

LDAP Injection ist eine Injection-Schwachstelle in Anwendungen, die einen Verzeichnisdienst abfragen. Werden Benutzereingaben direkt in einen LDAP-Filter oder Distinguished Name eingesetzt, können Sonderzeichen die Bedeutung der Abfrage verändern. Angreifer umgehen damit möglicherweise einen Login, zählen Verzeichniseinträge auf oder lesen Informationen außerhalb des vorgesehenen Bereichs.

Der grundlegende Fehler ähnelt einer SQL Injection, LDAP besitzt jedoch eine eigene Syntax und eigene Escaping-Regeln. Ein Suchfilter muss außerdem anders behandelt werden als ein Distinguished Name. Eine beliebige allgemeine Escape-Funktion ist daher nicht automatisch sicher.

Wie lässt sich LDAP Injection verhindern?

  • - Eine Bibliothek verwenden, die LDAP-Filter und Distinguished Names sicher zusammensetzt.
  • - Werte für den exakten LDAP-Kontext maskieren und gegen ein enges erwartetes Format prüfen.
  • - Die Verbindung zum Verzeichnis mit einem eigenen, minimal berechtigten Dienstkonto aufbauen.
  • - In Fehlermeldungen nicht offenlegen, ob einzelne Konten oder Attribute existieren.

Codebeispiel: LDAP-Filter sicher zusammensetzen

Verwundbar:

$username = $_POST['username'];
$filter = "(&(objectClass=person)(uid=$username))";
$result = ldap_search($ldap, $baseDn, $filter);

Sicher im Filterkontext:

$username = $_POST['username'];
if (!preg_match('/\A[a-zA-Z0-9._-]{1,64}\z/', $username)) {
    throw new InvalidArgumentException('Ungültiger Benutzername');
}

$safeUsername = ldap_escape($username, '', LDAP_ESCAPE_FILTER);
$filter = "(&(objectClass=person)(uid=$safeUsername))";
$result = ldap_search($ldap, $baseDn, $filter);

Für einen Distinguished Name wäre stattdessen LDAP_ESCAPE_DN erforderlich. Validierung begrenzt das fachlich erlaubte Format; kontextbezogenes Escaping schützt die LDAP-Syntax.

Wo tritt die Schwachstelle typischerweise auf?

Typische Stellen sind Unternehmens-Logins, Adressbuchsuchen, Gruppenabfragen und Administrationswerkzeuge, die mit Active Directory oder einem anderen LDAP-kompatiblen Verzeichnis verbunden sind.

Wie funktioniert ein LDAP-Filter?

LDAP-Suchfilter bestehen aus Attributen, Werten und logischen Operatoren. Eine Anwendung kann etwa nach einem Benutzer suchen, dessen Name und Status zwei Bedingungen erfüllen. Werden Klammern, Wildcards oder Operatoren aus einer Eingabe ungeprüft Teil dieses Filters, verändert sich nicht nur der gesuchte Wert, sondern die Abfragelogik. Ein manipulierter Filter kann mehrere Konten liefern, eine Bedingung neutralisieren oder zusätzliche Attribute sichtbar machen. Für Distinguished Names gelten wiederum andere Sonderzeichen und Maskierungsregeln.

Mögliche Auswirkungen

  • - Umgehung einer fehlerhaft implementierten LDAP-basierten Anmeldung.
  • - Aufzählung von Benutzern, Gruppen, E-Mail-Adressen und organisatorischen Strukturen.
  • - Zugriff auf Einträge außerhalb der vorgesehenen Suchbasis.
  • - Veränderung von Verzeichnisdaten, wenn das Dienstkonto Schreibrechte besitzt.

Die tatsächliche Reichweite hängt von Suchbasis, angeforderten Attributen und Berechtigungen des Dienstkontos ab. LDAP Injection bedeutet nicht automatisch eine Übernahme des gesamten Active Directory, kann aber sensible Informationen und weitere Angriffswege offenlegen.

Wie wird LDAP Injection getestet?

Tester erfassen alle Eingaben, die Verzeichnissuchen, Gruppenprüfungen oder Distinguished Names beeinflussen. Kontrollierte Sonderzeichen und logisch äquivalente Filter zeigen, ob sich Ergebnismenge oder Authentisierungsentscheidung verändern. Fehlermeldungen, unterschiedliche Antwortzeiten und abweichende Trefferzahlen liefern zusätzliche Hinweise. Im Code muss für jeden Datenfluss klar sein, ob der Wert in einem Suchfilter oder einem Distinguished Name landet und welche kontextspezifische Escape-Funktion verwendet wird.

Sichere Architektur rund um LDAP

Eine Anwendung sollte gegen feste Attribute und innerhalb einer eng definierten Search Base suchen. Das Dienstkonto benötigt nur die tatsächlich gelesenen Attribute und normalerweise keine Schreibrechte. TLS schützt Zugangsdaten und Verzeichnisinformationen auf dem Transportweg, verhindert aber keine Injection. Ergebnisse sollten begrenzt und sensible Attribute gar nicht erst angefordert werden. Für eine Anmeldung ist eine etablierte Identity-Lösung robuster als selbst zusammengesetzte LDAP-Filter.

Penetrationstests

Sicherheitslücken aufdecken

Professionelle Penetrationstests für Ihr Unternehmen

Web Apps
Netzwerke
Mobile Apps
10% Neukunden-Rabatt
Jetzt planen

Mehr Informationsmaterial

Vielen Dank für dein Feedback! Wir werden es prüfen und unseren Artikel anpassen.

Hast du Feedback zum Thema LDAP Injection? Schreib uns!