Definition

LDAP Injection

Was ist LDAP Injection?

Die LDAP Injection (Lightweight Directory Access Protocol) ist eine Art von Sicherheitslücke, die dazu genutzt wird, den Authentifizierungsprozess von Websites zu kompromittieren. Websites, die LDAP-Anweisungen aus Benutzerdaten erstellen, sind anfällig für diese Art von Angriffen.

Organisationen verwenden LDAP häufig, um eine Single-Sign-On-Anmeldung zu ermöglichen und Benutzer für lokale und webbasierte Anwendungen zu authentifizieren. In LDAP-Verzeichnissen werden Objekte gespeichert, die Informationen über diese Benutzer und die Ressourcen der Organisation enthalten. Ein LDAP-Verzeichnis kann beispielsweise Listen mit den verschiedenen Benutzernamen, Passwörtern und E-Mail-Adressen der Benutzer in der Organisation enthalten. Wenn ein LDAP-Verzeichnis für die Website-Authentifizierung verwendet wird, kann ein Angreifer schädlichen Code in ein Benutzereingabefeld eingeben, sich unbefugten Zugriff auf das Verzeichnis verschaffen und Benutzernamen und Passwörter anzeigen oder ändern.

Laut Sicherheitsexperten liegt der Hauptgrund dafür, dass LDAP-Injection-Angriffe und ähnliche Exploits funktionieren, darin, dass die Sicherheit während des Anwendungsentwicklungsprozesses oft unzureichend ist. Um die Integrität von Websites zu schützen, die Formulare verwenden, empfehlen Experten die Implementierung eines Bereinigungsprozesses, um die Art und Anzahl der Zeichen zu kontrollieren, die von Eingabefeldern akzeptiert werden können, sowie die Verwendung einer Multifaktor-Authentifizierung für öffentlich zugängliche Webanwendungen.

Wie funktioniert eine LDAP Injection?

Ein LDAP-Injection-Angriff nutzt Sicherheitslücken aus, die durch unsaubere Benutzereingabedaten entstehen. Mit anderen Worten: LDAP Injections erstellen fehlerhafte Abfragen, um Zugriff zu erhalten und möglicherweise Daten in einem Verzeichnis zu ändern. LDAP-Abfragen enthalten Sonderzeichen wie Sternchen, Klammern, kaufmännisches Und (Ampersand) und Anführungszeichen. Diese Zeichen steuern die Bedeutung von LDAP-Abfragen und bestimmen die Art und Anzahl der von einer Abfrage zurückgegebenen Objekte. Angreifer können die Abfrage und ihr beabsichtigtes Verhalten ändern, indem sie diese Steuerzeichen in der Abfrage modifizieren. Beispielsweise kann ein Angreifer in einer Anmeldeabfrage, die LDAP verwendet, den Benutzernamen zusammen mit mehreren Metazeichen eingeben, die das Protokoll so manipulieren, dass das Kennwortfeld ignoriert wird.

Mit Hilfe der sogenannten LDAP Injection kann ein Angreifer in das Verzeichnis eindringen, um Zugriff auf nicht autorisierte Informationen zu erhalten oder LDAP-Anweisungen und Inhalte innerhalb der LDAP-Struktur zu ändern. Angreifer können auch Webanwendungen ausnutzen, die LDAP-Anweisungen auf der Grundlage von Benutzereingaben erstellen. Zu den Tools, die LDAP verwenden, gehören Red Hat Directory Server und Microsoft Active Directory.

Welche Arten von LDAP-Injection-Angriffen gibt es?

Es gibt verschiedene Arten von LDAP-Injection-Angriffen, darunter die folgenden:

Umgehung der Authentifizierung. Auf einer Anmeldeseite gibt es in der Regel zwei Textfelder für einen Benutzernamen und ein Passwort. LDAP validiert normalerweise Benutzernamen- und Passwort-Paare mithilfe von LDAP-Filtern. Um den Teil des Prozesses zur Passwortvalidierung zu umgehen, kann der Angreifer ein Metazeichen eingeben – insbesondere ein kaufmännisches Und-Zeichen.

Erhöhung der Zugriffsrechte. Ein Angreifer verwendet nicht bereinigte Benutzereingaben, um sich unbefugten Zugriff auf Informationen zu verschaffen, die im System privilegierten Benutzern vorbehalten sind.

Offenlegung von Ressourcen. Der Angreifer nutzt die Tatsache aus, dass einige Objekte im LDAP-System von jedem Benutzer durchsucht werden können. Der Angreifer sucht nach einem bestimmten Objekt, und unter normalen Umständen würde das Verzeichnis alle öffentlich verfügbaren Ergebnisse zurückgeben. Durch das Einfügen von Schadcode könnte der Angreifer diese Abfrage so manipulieren, dass alle Objekte dieses Typs zurückgegeben werden, sowohl private als auch öffentliche.

Blinder Angriff. Blinde LDAP-Injektionen arbeiten mit Binärdaten. Sie rufen eine wahre oder falsche Antwort vom Server ab, wodurch der Angreifer Informationen über den Inhalt des Verzeichnisses erhält. Diese Angriffe sind langsamer in der Umsetzung, aber einfacher, da sie nur auf einer wahren oder falschen Antwort beruhen. Angreifer können testen, ob eine bestimmte Ressource existiert oder verfügbar ist – beispielsweise ein Benutzerobjekt oder ein Drucker. Ein erfahrener Hacker könnte diese Technik nutzen, um mithilfe eines Mechanismus namens Boolesche Umformung komplexere Werte zurückzugeben. Ein Angreifer könnte beispielsweise jeden Wert in einer Zeichenkette als wahr oder falsch abfragen, bis die gesamte Zeichenkette offengelegt ist.

Wie man LDAP-Injection-Angriffe verhindert

LDAP-Injection-Angriffe können dazu verwendet werden, um Zugriff auf sensible Daten zu erlangen, LDAP-Daten zu ändern oder sogar die Kontrolle über ein System zu übernehmen, das LDAP verwendet. Daher ist es wichtig, Maßnahmen zu ergreifen, um das System vor diesen Angriffen zu schützen. Wie bei jedem Injection-basierten Angriff ist die beste Möglichkeit, LDAP-Injection-Angriffe zu verhindern, die Bereinigung nicht vertrauenswürdiger Eingaben und die Verwendung einer ordnungsgemäßen Eingabevalidierung. Anwendungsentwickler sollten alle Informationen in der Anwendungsschicht ordnungsgemäß verschlüsseln und bereinigen. Einige Verfahren, die dies ermöglichen, sind:

Eingabevalidierung (Positivliste, Allowlist). Bei der Positivliste werden nur Eingaben akzeptiert, die als gut bekannt sind, beispielsweise durch Festlegen einer erwarteten Länge oder eines numerischen Bereichs für ein bestimmtes Eingabefeld.

Umgehen aller Variablen. Dadurch wird der Computer angewiesen, die Sonderfunktionen von Metazeichen – wie etwa dem kaufmännischen Und-Zeichen – zu ignorieren, die Hacker zur Manipulation von LDAP-Eingabefeldern verwenden können. Einige Abfrage-Frameworks umgehen automatisch, wenn sie Abfragen erstellen – wie etwa LINQtoLDAP.

Indizierung von Feldern, die sensible Informationen enthalten. Dadurch erhöht sich die Anzahl der Filter, die ein Angreifer umgehen oder manipulieren muss, um auf sensible Informationen zuzugreifen.

Werkzeuge zur statischen Quellcode-Analyse. Diese ermöglichen es Entwicklern, eine LDAP-Anwendung zu debuggen, bevor sie ausgeführt wird.

Dynamische Prüfungen. Diese ermöglichen es Entwicklern, eine Anwendung zu testen und zu debuggen, während sie ausgeführt wird.

Entwickler können auch die den LDAP-Konten zugewiesenen Berechtigungen auf ein Minimum beschränken, so dass sie im Falle einer Kompromittierung nur minimale Auswirkungen auf das gesamte System haben. Administratoren sollten auch die LDAP-Server und Benutzerberechtigungen richtig konfigurieren, insbesondere für mobile und Webanwendungen.

Wie unterscheiden sich SQL Injection und LDAP Injection?

LDAP Injection und SQL Injection weisen viele Ähnlichkeiten auf. Bei beiden handelt es sich um Code-Injection-Angriffe, bei denen der böswillige Benutzer einen Teil seines eigenen Codes in einen bestehenden Datenstrom einfügt, um zu versuchen, die Sicherheitsmaßnahmen zu umgehen. Code-Injection kann bei einer Reihe verschiedener Protokolle durchgeführt werden, darunter XML (Extensible Markup Language), HTML (HyperText Markup Language), Structured Query Language (SQL) und LDAP. Alle diese Injektionsangriffe machen sich Szenarien zunutze, in denen eine Anwendung die Benutzereingaben nicht ordnungsgemäß bereinigt.

Die LDAP Injection funktioniert ähnlich wie die SQL Injection, bei der der Angreifer SQL-Code in ein Webformular einfügt. Beide Arten von Angriffen erfolgen in erster Linie aufgrund einer fehlenden oder unzureichenden Eingabevalidierung, bei der nicht korrekte Eingaben nicht zurückgewiesen oder bösartige LDAP-Steuerzeichen nicht entfernt werden, bevor nicht vertrauenswürdige Benutzereingaben in eine Abfrage aufgenommen werden.

Der Unterschied zwischen LDAP und SQL Injection liegt in dem Protokoll oder der Sprache, das/die sie ausnutzen, und somit in der Syntax der Angriffsdaten. LDAP ist ein Protokoll für den Zugriff auf Informationen in Verzeichnissen, während SQL eine Abfragesprache für Datenbanken ist. Daher zielen die Angriffe auf unterschiedliche Informationsspeicher ab. LDAP-Injektionen zielen auf Verzeichnisse, während SQL-Injektionen auf Datenbanken abzielen. LDAP-Verzeichnisse eignen sich besser für die Speicherung von Daten, die hauptsächlich gelesen und nicht geschrieben werden. SQL-Datenbanken eignen sich besser für den Umgang mit Daten, die häufig gelesen und geschrieben werden.

Injektion im Allgemeinen, unabhängig von der Art, wird in der Top-10-Liste des Open Web Application Security Project (OWASP) als drittwichtigstes Sicherheitsrisiko für Anwendungen im Jahr 2021 aufgeführt. Die Log4j-Sicherheitslücke deckte eine Schwachstelle auf, die der LDAP und SQL Injection ähnelt und als Java Naming and Directory Interface Injection bezeichnet wird.

Diese Definition wurde zuletzt im März 2025 aktualisiert

Erfahren Sie mehr über Bedrohungen