Coders Conquer Security: Share & Learn Series - LDAP-Injektionen
Die große Mehrheit der Computersysteme verwendet das Lightweight Directory Access Protocol (LDAP). Es wird verwendet, um verteilte Verzeichnisinformationsdienste über ein beliebiges Internet Protocol (IP)-Netzwerk zu verwalten. Es dient also im Wesentlichen dazu, den Überblick über die Benutzer zu behalten.
LDAP wird häufig als Authentifizierungsquelle von Anwendungen verwendet, um festzustellen, ob ein Benutzer die Berechtigung hat, verschiedene Aktionen durchzuführen, insbesondere in Bezug auf seine definierte Rolle innerhalb einer Organisation. So können beispielsweise nur Mitarbeiter der Buchhaltung die Buchhaltungssoftware des Unternehmens nutzen. Anwendungen werden oft so programmiert, dass sie eine LDAP-Tabelle überprüfen, um sicherzustellen, dass die Benutzer innerhalb ihrer festgelegten Berechtigungen handeln.
Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.
LDAP-Injektionen können knifflig sein, aber in dieser Folge lernen wir es:
- Wie sie funktionieren
- Warum sie so gefährlich sind
- Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.
Wie nutzen Angreifer LDAP Injection?
Einer der Gründe, warum LDAP-basierte Angriffe seit Jahren beliebt sind, ist die Tatsache, dass fast jedes Computersystem es verwendet. LDAP ist quelloffen und funktioniert extrem gut, sodass nicht viele Alternativen geschaffen wurden.
Im Kern ist LDAP eine Datenbank, die gültige Benutzer innerhalb eines IP-basierten Computersystems oder Netzwerks verfolgt. Es kann Benutzern ermöglichen, Informationen über Systeme, Netzwerke, Server, Anwendungen und sogar andere Benutzer im selben Netzwerk auszutauschen.
Informationen werden von LDAP in dem Äquivalent einer Datenbankzeile oder eines Datensatzes gespeichert, der als Distinguished Name bezeichnet wird, oft abgekürzt als DN. Jeder DN ist eindeutig. So könnte zum Beispiel ein DN für einen Benutzer aussehen, der in der Buchhaltung eines großen Unternehmens in Chicago arbeitet.
cn=James Smith, ou=Corporate Accounts, dc=Chicago, do=Parkview
Um sicherzustellen, dass jeder DN eindeutig ist, können dem Datensatz verschiedene Codes hinzugefügt werden, wie "+", "/", "=" und einige andere. Es können auch Leerzeichen vor oder nach einem Datensatz eingefügt werden, um sicherzustellen, dass selbst wenn es zwei James Smiths gibt, die im Chicago Parkview Office in der Abteilung Corporate Accounts arbeiten, sie jeweils individuelle DNs haben.
Anwendungen verwenden LDAP im Allgemeinen, um Benutzern die Möglichkeit zu geben, Abfragen über bestimmte DNs zu senden, wie z. B. beim Versuch, den richtigen Ansprechpartner in der Lohnbuchhaltung zu finden, um über einen Fehler auf dem Scheck zu sprechen. LDAP-Injektionen können auftreten, wenn keine Validierung der vom Benutzer bereitgestellten Parameter in Suchanfragen erfolgt. In diesem Fall können Hacker gutartige Suchanfragen manipulieren, um Authentifizierungsmechanismen zu umgehen oder zusätzliche beliebige Abfragen auszuführen. Dies kann den Server dazu bringen, Ergebnisse anzuzeigen, die nicht erlaubt sein sollten, wie z. B. Benutzerpasswörter, oder sogar eine Anwendung dazu veranlassen, Zugriff auf hochsichere Bereiche innerhalb des Netzwerks zu gewähren, mit oder ohne gültiges Passwort.
Warum sind LDAP-Injektionen so gefährlich?
Die größte Gefahr bei LDAP-Injektionen ist wahrscheinlich die weite Verbreitung des Protokolls in den meisten IP-Computernetzwerken weltweit. Es ist ein leichtes Sprungbrett für Hacker, die Informationen stehlen oder ihre Privilegien in einem Netzwerk erhöhen wollen. Kein geschulter Hacker wird es versäumen, zu prüfen, ob LDAP-Injections möglich sind, daher müssen Sicherheitsteams sicherstellen, dass diese Löcher immer geschlossen sind.
Konkret sind etliche Anwendungen so programmiert, dass sie gültigen Benutzern helfen, begrenzte Informationen über Benutzer und Gruppen innerhalb einer Organisation oder andere in den DNs enthaltene Informationen zu finden. Zum Beispiel könnte eine Anwendung jemandem erlauben, mit LDAP nach den Kontaktinformationen von Buchhaltern in Chicago zu suchen, was unseren Freund James Smith aus dem obigen Beispiel zurückbringen würde. Abhängig von den Berechtigungen ist dies wahrscheinlich eine vollkommen gültige Verwendung einer LDAP-Abfrage.
Die Gefahr entsteht, wenn ein böswilliger Benutzer der Abfrage ungefilterte Parameter hinzufügen kann, wodurch die Art der Suche verändert und der Server dazu gebracht wird, Informationen bereitzustellen, die normalerweise nicht gegeben werden sollten. Durch Hinzufügen einer user=*-Zeichenkette könnten Angreifer beispielsweise Informationen über jeden einzelnen Benutzer einer ganzen Organisation erhalten, was wahrscheinlich niemals erlaubt sein sollte.
Bei Anwendungen, die LDAP zur Authentifizierung verwenden, kann das Problem sogar noch größer sein. Angreifer können z. B. die Zeichenfolge (&) am Ende einer LDAP-Abfrage verwenden, um dem Server vorzugaukeln, dass das Argument wahr ist. Wenn eine Anwendung LDAP zur Überprüfung eines Kennworts verwendet, kann das Erzwingen eines "True"-Arguments durch eine LDAP-Injektion es einem nicht autorisierten Benutzer ermöglichen, sich als Administrator im Netzwerk anzumelden, auch ohne ein Kennwort.
Machen Sie LDAP-Injection zu einem L-DON'T in Ihrem Netzwerk
Eine der besten Möglichkeiten, LDAP-Injektionen zu verhindern, besteht darin, etwas wie LINQtoAD oder andere Frameworks zu implementieren, die speziell dafür entwickelt wurden. Dies ist möglicherweise nicht möglich, wenn es in einem Netzwerk bereits Anwendungen gibt, die LDAP-Abfragen nutzen. Aber selbst in diesem Fall ist es immer noch eine gute Idee, für jede neue Anwendung injektionsresistente Frameworks zu verwenden.
Vorhandene Anwendungen, die LDAP verwenden, können auch durch die Verwendung von Whitelist-Validierung und Eingabensanitisierung gegen Injektionen gehärtet werden. Beschränken Sie die Benutzereingabe nach Möglichkeit auf eine begrenzte Anzahl vertrauenswürdiger Werte. Andernfalls sollten Benutzereingaben, die Teil einer LDAP-Abfrage sind, zuerst bereinigt werden. Vergessen Sie nicht, GET- und POST-Parameter, Cookies und HTTP-Header mit einzubeziehen, da diese ebenfalls als Angriffsvektoren dienen können. Schreiben Sie keine eigenen Funktionen, um die Eingabensanitisierung durchzuführen; verwenden Sie stattdessen eine vertrauenswürdige, auf Sicherheit fokussierte Bibliothek eines Drittanbieters oder integrierte Framework-APIs.
Neben gezielten Korrekturen können auch gute Computerpraktiken helfen, wie z. B. die Zuweisung von LDAP-abfragenden Anwendungen mit den geringsten Berechtigungen, die in einem Netzwerk benötigt werden. Auf diese Weise kann im schlimmsten Fall, wenn eine LDAP-Injektion durchkommt, der Schaden gemindert werden.
Weitere Informationen über LDAP-Injektionen
Weitere Informationen finden Sie im OWASP-Artikel über LDAP-Injektionen oder im Spickzettel zur Vermeidung von Injektionen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Wenn Sie mehr darüber erfahren möchten, wie Sie diese Sicherheitslücke und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .
Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.
Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
Die große Mehrheit der Computersysteme verwendet das Lightweight Directory Access Protocol (LDAP). Es wird verwendet, um verteilte Verzeichnisinformationsdienste über ein beliebiges Internet Protocol (IP)-Netzwerk zu verwalten. Es dient also im Wesentlichen dazu, den Überblick über die Benutzer zu behalten.
LDAP wird häufig als Authentifizierungsquelle von Anwendungen verwendet, um festzustellen, ob ein Benutzer die Berechtigung hat, verschiedene Aktionen durchzuführen, insbesondere in Bezug auf seine definierte Rolle innerhalb einer Organisation. So können beispielsweise nur Mitarbeiter der Buchhaltung die Buchhaltungssoftware des Unternehmens nutzen. Anwendungen werden oft so programmiert, dass sie eine LDAP-Tabelle überprüfen, um sicherzustellen, dass die Benutzer innerhalb ihrer festgelegten Berechtigungen handeln.
Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.
LDAP-Injektionen können knifflig sein, aber in dieser Folge lernen wir es:
- Wie sie funktionieren
- Warum sie so gefährlich sind
- Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.
Wie nutzen Angreifer LDAP Injection?
Einer der Gründe, warum LDAP-basierte Angriffe seit Jahren beliebt sind, ist die Tatsache, dass fast jedes Computersystem es verwendet. LDAP ist quelloffen und funktioniert extrem gut, sodass nicht viele Alternativen geschaffen wurden.
Im Kern ist LDAP eine Datenbank, die gültige Benutzer innerhalb eines IP-basierten Computersystems oder Netzwerks verfolgt. Es kann Benutzern ermöglichen, Informationen über Systeme, Netzwerke, Server, Anwendungen und sogar andere Benutzer im selben Netzwerk auszutauschen.
Informationen werden von LDAP in dem Äquivalent einer Datenbankzeile oder eines Datensatzes gespeichert, der als Distinguished Name bezeichnet wird, oft abgekürzt als DN. Jeder DN ist eindeutig. So könnte zum Beispiel ein DN für einen Benutzer aussehen, der in der Buchhaltung eines großen Unternehmens in Chicago arbeitet.
cn=James Smith, ou=Corporate Accounts, dc=Chicago, do=Parkview
Um sicherzustellen, dass jeder DN eindeutig ist, können dem Datensatz verschiedene Codes hinzugefügt werden, wie "+", "/", "=" und einige andere. Es können auch Leerzeichen vor oder nach einem Datensatz eingefügt werden, um sicherzustellen, dass selbst wenn es zwei James Smiths gibt, die im Chicago Parkview Office in der Abteilung Corporate Accounts arbeiten, sie jeweils individuelle DNs haben.
Anwendungen verwenden LDAP im Allgemeinen, um Benutzern die Möglichkeit zu geben, Abfragen über bestimmte DNs zu senden, wie z. B. beim Versuch, den richtigen Ansprechpartner in der Lohnbuchhaltung zu finden, um über einen Fehler auf dem Scheck zu sprechen. LDAP-Injektionen können auftreten, wenn keine Validierung der vom Benutzer bereitgestellten Parameter in Suchanfragen erfolgt. In diesem Fall können Hacker gutartige Suchanfragen manipulieren, um Authentifizierungsmechanismen zu umgehen oder zusätzliche beliebige Abfragen auszuführen. Dies kann den Server dazu bringen, Ergebnisse anzuzeigen, die nicht erlaubt sein sollten, wie z. B. Benutzerpasswörter, oder sogar eine Anwendung dazu veranlassen, Zugriff auf hochsichere Bereiche innerhalb des Netzwerks zu gewähren, mit oder ohne gültiges Passwort.
Warum sind LDAP-Injektionen so gefährlich?
Die größte Gefahr bei LDAP-Injektionen ist wahrscheinlich die weite Verbreitung des Protokolls in den meisten IP-Computernetzwerken weltweit. Es ist ein leichtes Sprungbrett für Hacker, die Informationen stehlen oder ihre Privilegien in einem Netzwerk erhöhen wollen. Kein geschulter Hacker wird es versäumen, zu prüfen, ob LDAP-Injections möglich sind, daher müssen Sicherheitsteams sicherstellen, dass diese Löcher immer geschlossen sind.
Konkret sind etliche Anwendungen so programmiert, dass sie gültigen Benutzern helfen, begrenzte Informationen über Benutzer und Gruppen innerhalb einer Organisation oder andere in den DNs enthaltene Informationen zu finden. Zum Beispiel könnte eine Anwendung jemandem erlauben, mit LDAP nach den Kontaktinformationen von Buchhaltern in Chicago zu suchen, was unseren Freund James Smith aus dem obigen Beispiel zurückbringen würde. Abhängig von den Berechtigungen ist dies wahrscheinlich eine vollkommen gültige Verwendung einer LDAP-Abfrage.
Die Gefahr entsteht, wenn ein böswilliger Benutzer der Abfrage ungefilterte Parameter hinzufügen kann, wodurch die Art der Suche verändert und der Server dazu gebracht wird, Informationen bereitzustellen, die normalerweise nicht gegeben werden sollten. Durch Hinzufügen einer user=*-Zeichenkette könnten Angreifer beispielsweise Informationen über jeden einzelnen Benutzer einer ganzen Organisation erhalten, was wahrscheinlich niemals erlaubt sein sollte.
Bei Anwendungen, die LDAP zur Authentifizierung verwenden, kann das Problem sogar noch größer sein. Angreifer können z. B. die Zeichenfolge (&) am Ende einer LDAP-Abfrage verwenden, um dem Server vorzugaukeln, dass das Argument wahr ist. Wenn eine Anwendung LDAP zur Überprüfung eines Kennworts verwendet, kann das Erzwingen eines "True"-Arguments durch eine LDAP-Injektion es einem nicht autorisierten Benutzer ermöglichen, sich als Administrator im Netzwerk anzumelden, auch ohne ein Kennwort.
Machen Sie LDAP-Injection zu einem L-DON'T in Ihrem Netzwerk
Eine der besten Möglichkeiten, LDAP-Injektionen zu verhindern, besteht darin, etwas wie LINQtoAD oder andere Frameworks zu implementieren, die speziell dafür entwickelt wurden. Dies ist möglicherweise nicht möglich, wenn es in einem Netzwerk bereits Anwendungen gibt, die LDAP-Abfragen nutzen. Aber selbst in diesem Fall ist es immer noch eine gute Idee, für jede neue Anwendung injektionsresistente Frameworks zu verwenden.
Vorhandene Anwendungen, die LDAP verwenden, können auch durch die Verwendung von Whitelist-Validierung und Eingabensanitisierung gegen Injektionen gehärtet werden. Beschränken Sie die Benutzereingabe nach Möglichkeit auf eine begrenzte Anzahl vertrauenswürdiger Werte. Andernfalls sollten Benutzereingaben, die Teil einer LDAP-Abfrage sind, zuerst bereinigt werden. Vergessen Sie nicht, GET- und POST-Parameter, Cookies und HTTP-Header mit einzubeziehen, da diese ebenfalls als Angriffsvektoren dienen können. Schreiben Sie keine eigenen Funktionen, um die Eingabensanitisierung durchzuführen; verwenden Sie stattdessen eine vertrauenswürdige, auf Sicherheit fokussierte Bibliothek eines Drittanbieters oder integrierte Framework-APIs.
Neben gezielten Korrekturen können auch gute Computerpraktiken helfen, wie z. B. die Zuweisung von LDAP-abfragenden Anwendungen mit den geringsten Berechtigungen, die in einem Netzwerk benötigt werden. Auf diese Weise kann im schlimmsten Fall, wenn eine LDAP-Injektion durchkommt, der Schaden gemindert werden.
Weitere Informationen über LDAP-Injektionen
Weitere Informationen finden Sie im OWASP-Artikel über LDAP-Injektionen oder im Spickzettel zur Vermeidung von Injektionen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Wenn Sie mehr darüber erfahren möchten, wie Sie diese Sicherheitslücke und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .
Die große Mehrheit der Computersysteme verwendet das Lightweight Directory Access Protocol (LDAP). Es wird verwendet, um verteilte Verzeichnisinformationsdienste über ein beliebiges Internet Protocol (IP)-Netzwerk zu verwalten. Es dient also im Wesentlichen dazu, den Überblick über die Benutzer zu behalten.
LDAP wird häufig als Authentifizierungsquelle von Anwendungen verwendet, um festzustellen, ob ein Benutzer die Berechtigung hat, verschiedene Aktionen durchzuführen, insbesondere in Bezug auf seine definierte Rolle innerhalb einer Organisation. So können beispielsweise nur Mitarbeiter der Buchhaltung die Buchhaltungssoftware des Unternehmens nutzen. Anwendungen werden oft so programmiert, dass sie eine LDAP-Tabelle überprüfen, um sicherzustellen, dass die Benutzer innerhalb ihrer festgelegten Berechtigungen handeln.
Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.
LDAP-Injektionen können knifflig sein, aber in dieser Folge lernen wir es:
- Wie sie funktionieren
- Warum sie so gefährlich sind
- Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.
Wie nutzen Angreifer LDAP Injection?
Einer der Gründe, warum LDAP-basierte Angriffe seit Jahren beliebt sind, ist die Tatsache, dass fast jedes Computersystem es verwendet. LDAP ist quelloffen und funktioniert extrem gut, sodass nicht viele Alternativen geschaffen wurden.
Im Kern ist LDAP eine Datenbank, die gültige Benutzer innerhalb eines IP-basierten Computersystems oder Netzwerks verfolgt. Es kann Benutzern ermöglichen, Informationen über Systeme, Netzwerke, Server, Anwendungen und sogar andere Benutzer im selben Netzwerk auszutauschen.
Informationen werden von LDAP in dem Äquivalent einer Datenbankzeile oder eines Datensatzes gespeichert, der als Distinguished Name bezeichnet wird, oft abgekürzt als DN. Jeder DN ist eindeutig. So könnte zum Beispiel ein DN für einen Benutzer aussehen, der in der Buchhaltung eines großen Unternehmens in Chicago arbeitet.
cn=James Smith, ou=Corporate Accounts, dc=Chicago, do=Parkview
Um sicherzustellen, dass jeder DN eindeutig ist, können dem Datensatz verschiedene Codes hinzugefügt werden, wie "+", "/", "=" und einige andere. Es können auch Leerzeichen vor oder nach einem Datensatz eingefügt werden, um sicherzustellen, dass selbst wenn es zwei James Smiths gibt, die im Chicago Parkview Office in der Abteilung Corporate Accounts arbeiten, sie jeweils individuelle DNs haben.
Anwendungen verwenden LDAP im Allgemeinen, um Benutzern die Möglichkeit zu geben, Abfragen über bestimmte DNs zu senden, wie z. B. beim Versuch, den richtigen Ansprechpartner in der Lohnbuchhaltung zu finden, um über einen Fehler auf dem Scheck zu sprechen. LDAP-Injektionen können auftreten, wenn keine Validierung der vom Benutzer bereitgestellten Parameter in Suchanfragen erfolgt. In diesem Fall können Hacker gutartige Suchanfragen manipulieren, um Authentifizierungsmechanismen zu umgehen oder zusätzliche beliebige Abfragen auszuführen. Dies kann den Server dazu bringen, Ergebnisse anzuzeigen, die nicht erlaubt sein sollten, wie z. B. Benutzerpasswörter, oder sogar eine Anwendung dazu veranlassen, Zugriff auf hochsichere Bereiche innerhalb des Netzwerks zu gewähren, mit oder ohne gültiges Passwort.
Warum sind LDAP-Injektionen so gefährlich?
Die größte Gefahr bei LDAP-Injektionen ist wahrscheinlich die weite Verbreitung des Protokolls in den meisten IP-Computernetzwerken weltweit. Es ist ein leichtes Sprungbrett für Hacker, die Informationen stehlen oder ihre Privilegien in einem Netzwerk erhöhen wollen. Kein geschulter Hacker wird es versäumen, zu prüfen, ob LDAP-Injections möglich sind, daher müssen Sicherheitsteams sicherstellen, dass diese Löcher immer geschlossen sind.
Konkret sind etliche Anwendungen so programmiert, dass sie gültigen Benutzern helfen, begrenzte Informationen über Benutzer und Gruppen innerhalb einer Organisation oder andere in den DNs enthaltene Informationen zu finden. Zum Beispiel könnte eine Anwendung jemandem erlauben, mit LDAP nach den Kontaktinformationen von Buchhaltern in Chicago zu suchen, was unseren Freund James Smith aus dem obigen Beispiel zurückbringen würde. Abhängig von den Berechtigungen ist dies wahrscheinlich eine vollkommen gültige Verwendung einer LDAP-Abfrage.
Die Gefahr entsteht, wenn ein böswilliger Benutzer der Abfrage ungefilterte Parameter hinzufügen kann, wodurch die Art der Suche verändert und der Server dazu gebracht wird, Informationen bereitzustellen, die normalerweise nicht gegeben werden sollten. Durch Hinzufügen einer user=*-Zeichenkette könnten Angreifer beispielsweise Informationen über jeden einzelnen Benutzer einer ganzen Organisation erhalten, was wahrscheinlich niemals erlaubt sein sollte.
Bei Anwendungen, die LDAP zur Authentifizierung verwenden, kann das Problem sogar noch größer sein. Angreifer können z. B. die Zeichenfolge (&) am Ende einer LDAP-Abfrage verwenden, um dem Server vorzugaukeln, dass das Argument wahr ist. Wenn eine Anwendung LDAP zur Überprüfung eines Kennworts verwendet, kann das Erzwingen eines "True"-Arguments durch eine LDAP-Injektion es einem nicht autorisierten Benutzer ermöglichen, sich als Administrator im Netzwerk anzumelden, auch ohne ein Kennwort.
Machen Sie LDAP-Injection zu einem L-DON'T in Ihrem Netzwerk
Eine der besten Möglichkeiten, LDAP-Injektionen zu verhindern, besteht darin, etwas wie LINQtoAD oder andere Frameworks zu implementieren, die speziell dafür entwickelt wurden. Dies ist möglicherweise nicht möglich, wenn es in einem Netzwerk bereits Anwendungen gibt, die LDAP-Abfragen nutzen. Aber selbst in diesem Fall ist es immer noch eine gute Idee, für jede neue Anwendung injektionsresistente Frameworks zu verwenden.
Vorhandene Anwendungen, die LDAP verwenden, können auch durch die Verwendung von Whitelist-Validierung und Eingabensanitisierung gegen Injektionen gehärtet werden. Beschränken Sie die Benutzereingabe nach Möglichkeit auf eine begrenzte Anzahl vertrauenswürdiger Werte. Andernfalls sollten Benutzereingaben, die Teil einer LDAP-Abfrage sind, zuerst bereinigt werden. Vergessen Sie nicht, GET- und POST-Parameter, Cookies und HTTP-Header mit einzubeziehen, da diese ebenfalls als Angriffsvektoren dienen können. Schreiben Sie keine eigenen Funktionen, um die Eingabensanitisierung durchzuführen; verwenden Sie stattdessen eine vertrauenswürdige, auf Sicherheit fokussierte Bibliothek eines Drittanbieters oder integrierte Framework-APIs.
Neben gezielten Korrekturen können auch gute Computerpraktiken helfen, wie z. B. die Zuweisung von LDAP-abfragenden Anwendungen mit den geringsten Berechtigungen, die in einem Netzwerk benötigt werden. Auf diese Weise kann im schlimmsten Fall, wenn eine LDAP-Injektion durchkommt, der Schaden gemindert werden.
Weitere Informationen über LDAP-Injektionen
Weitere Informationen finden Sie im OWASP-Artikel über LDAP-Injektionen oder im Spickzettel zur Vermeidung von Injektionen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Wenn Sie mehr darüber erfahren möchten, wie Sie diese Sicherheitslücke und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .
Klicken Sie auf den unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht ansehenDemo buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
Die große Mehrheit der Computersysteme verwendet das Lightweight Directory Access Protocol (LDAP). Es wird verwendet, um verteilte Verzeichnisinformationsdienste über ein beliebiges Internet Protocol (IP)-Netzwerk zu verwalten. Es dient also im Wesentlichen dazu, den Überblick über die Benutzer zu behalten.
LDAP wird häufig als Authentifizierungsquelle von Anwendungen verwendet, um festzustellen, ob ein Benutzer die Berechtigung hat, verschiedene Aktionen durchzuführen, insbesondere in Bezug auf seine definierte Rolle innerhalb einer Organisation. So können beispielsweise nur Mitarbeiter der Buchhaltung die Buchhaltungssoftware des Unternehmens nutzen. Anwendungen werden oft so programmiert, dass sie eine LDAP-Tabelle überprüfen, um sicherzustellen, dass die Benutzer innerhalb ihrer festgelegten Berechtigungen handeln.
Probleme können auftreten, wenn böswillige Benutzer eine LDAP-Abfrage manipulieren können. Dadurch kann der empfangende Server dazu gebracht werden, ungültige Abfragen auszuführen, die normalerweise nicht erlaubt wären, oder sogar ungültigen oder unsicheren Benutzern ohne Kennwort Zugang auf hoher Ebene oder als Administrator zu gewähren.
LDAP-Injektionen können knifflig sein, aber in dieser Folge lernen wir es:
- Wie sie funktionieren
- Warum sie so gefährlich sind
- Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.
Wie nutzen Angreifer LDAP Injection?
Einer der Gründe, warum LDAP-basierte Angriffe seit Jahren beliebt sind, ist die Tatsache, dass fast jedes Computersystem es verwendet. LDAP ist quelloffen und funktioniert extrem gut, sodass nicht viele Alternativen geschaffen wurden.
Im Kern ist LDAP eine Datenbank, die gültige Benutzer innerhalb eines IP-basierten Computersystems oder Netzwerks verfolgt. Es kann Benutzern ermöglichen, Informationen über Systeme, Netzwerke, Server, Anwendungen und sogar andere Benutzer im selben Netzwerk auszutauschen.
Informationen werden von LDAP in dem Äquivalent einer Datenbankzeile oder eines Datensatzes gespeichert, der als Distinguished Name bezeichnet wird, oft abgekürzt als DN. Jeder DN ist eindeutig. So könnte zum Beispiel ein DN für einen Benutzer aussehen, der in der Buchhaltung eines großen Unternehmens in Chicago arbeitet.
cn=James Smith, ou=Corporate Accounts, dc=Chicago, do=Parkview
Um sicherzustellen, dass jeder DN eindeutig ist, können dem Datensatz verschiedene Codes hinzugefügt werden, wie "+", "/", "=" und einige andere. Es können auch Leerzeichen vor oder nach einem Datensatz eingefügt werden, um sicherzustellen, dass selbst wenn es zwei James Smiths gibt, die im Chicago Parkview Office in der Abteilung Corporate Accounts arbeiten, sie jeweils individuelle DNs haben.
Anwendungen verwenden LDAP im Allgemeinen, um Benutzern die Möglichkeit zu geben, Abfragen über bestimmte DNs zu senden, wie z. B. beim Versuch, den richtigen Ansprechpartner in der Lohnbuchhaltung zu finden, um über einen Fehler auf dem Scheck zu sprechen. LDAP-Injektionen können auftreten, wenn keine Validierung der vom Benutzer bereitgestellten Parameter in Suchanfragen erfolgt. In diesem Fall können Hacker gutartige Suchanfragen manipulieren, um Authentifizierungsmechanismen zu umgehen oder zusätzliche beliebige Abfragen auszuführen. Dies kann den Server dazu bringen, Ergebnisse anzuzeigen, die nicht erlaubt sein sollten, wie z. B. Benutzerpasswörter, oder sogar eine Anwendung dazu veranlassen, Zugriff auf hochsichere Bereiche innerhalb des Netzwerks zu gewähren, mit oder ohne gültiges Passwort.
Warum sind LDAP-Injektionen so gefährlich?
Die größte Gefahr bei LDAP-Injektionen ist wahrscheinlich die weite Verbreitung des Protokolls in den meisten IP-Computernetzwerken weltweit. Es ist ein leichtes Sprungbrett für Hacker, die Informationen stehlen oder ihre Privilegien in einem Netzwerk erhöhen wollen. Kein geschulter Hacker wird es versäumen, zu prüfen, ob LDAP-Injections möglich sind, daher müssen Sicherheitsteams sicherstellen, dass diese Löcher immer geschlossen sind.
Konkret sind etliche Anwendungen so programmiert, dass sie gültigen Benutzern helfen, begrenzte Informationen über Benutzer und Gruppen innerhalb einer Organisation oder andere in den DNs enthaltene Informationen zu finden. Zum Beispiel könnte eine Anwendung jemandem erlauben, mit LDAP nach den Kontaktinformationen von Buchhaltern in Chicago zu suchen, was unseren Freund James Smith aus dem obigen Beispiel zurückbringen würde. Abhängig von den Berechtigungen ist dies wahrscheinlich eine vollkommen gültige Verwendung einer LDAP-Abfrage.
Die Gefahr entsteht, wenn ein böswilliger Benutzer der Abfrage ungefilterte Parameter hinzufügen kann, wodurch die Art der Suche verändert und der Server dazu gebracht wird, Informationen bereitzustellen, die normalerweise nicht gegeben werden sollten. Durch Hinzufügen einer user=*-Zeichenkette könnten Angreifer beispielsweise Informationen über jeden einzelnen Benutzer einer ganzen Organisation erhalten, was wahrscheinlich niemals erlaubt sein sollte.
Bei Anwendungen, die LDAP zur Authentifizierung verwenden, kann das Problem sogar noch größer sein. Angreifer können z. B. die Zeichenfolge (&) am Ende einer LDAP-Abfrage verwenden, um dem Server vorzugaukeln, dass das Argument wahr ist. Wenn eine Anwendung LDAP zur Überprüfung eines Kennworts verwendet, kann das Erzwingen eines "True"-Arguments durch eine LDAP-Injektion es einem nicht autorisierten Benutzer ermöglichen, sich als Administrator im Netzwerk anzumelden, auch ohne ein Kennwort.
Machen Sie LDAP-Injection zu einem L-DON'T in Ihrem Netzwerk
Eine der besten Möglichkeiten, LDAP-Injektionen zu verhindern, besteht darin, etwas wie LINQtoAD oder andere Frameworks zu implementieren, die speziell dafür entwickelt wurden. Dies ist möglicherweise nicht möglich, wenn es in einem Netzwerk bereits Anwendungen gibt, die LDAP-Abfragen nutzen. Aber selbst in diesem Fall ist es immer noch eine gute Idee, für jede neue Anwendung injektionsresistente Frameworks zu verwenden.
Vorhandene Anwendungen, die LDAP verwenden, können auch durch die Verwendung von Whitelist-Validierung und Eingabensanitisierung gegen Injektionen gehärtet werden. Beschränken Sie die Benutzereingabe nach Möglichkeit auf eine begrenzte Anzahl vertrauenswürdiger Werte. Andernfalls sollten Benutzereingaben, die Teil einer LDAP-Abfrage sind, zuerst bereinigt werden. Vergessen Sie nicht, GET- und POST-Parameter, Cookies und HTTP-Header mit einzubeziehen, da diese ebenfalls als Angriffsvektoren dienen können. Schreiben Sie keine eigenen Funktionen, um die Eingabensanitisierung durchzuführen; verwenden Sie stattdessen eine vertrauenswürdige, auf Sicherheit fokussierte Bibliothek eines Drittanbieters oder integrierte Framework-APIs.
Neben gezielten Korrekturen können auch gute Computerpraktiken helfen, wie z. B. die Zuweisung von LDAP-abfragenden Anwendungen mit den geringsten Berechtigungen, die in einem Netzwerk benötigt werden. Auf diese Weise kann im schlimmsten Fall, wenn eine LDAP-Injektion durchkommt, der Schaden gemindert werden.
Weitere Informationen über LDAP-Injektionen
Weitere Informationen finden Sie im OWASP-Artikel über LDAP-Injektionen oder im Spickzettel zur Vermeidung von Injektionen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Secure Code Warrior Plattform testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Wenn Sie mehr darüber erfahren möchten, wie Sie diese Sicherheitslücke und andere Bedrohungen abwehren können, besuchen Sie den BlogSecure Code Warrior .
Inhaltsübersicht
Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenHerunterladenRessourcen für den Einstieg
Benchmarking von Sicherheitskompetenzen: Optimierung von Secure-by-Design im Unternehmen
Die Secure-by-Design-Bewegung ist die Zukunft der sicheren Softwareentwicklung. Erfahren Sie mehr über die wichtigsten Elemente, die Unternehmen berücksichtigen müssen, wenn sie über eine Secure-by-Design-Initiative nachdenken.
DigitalOcean verringert Sicherheitsverschuldung mit Secure Code Warrior
DigitalOceans Einsatz von Secure Code Warrior hat die Sicherheitsverschuldung deutlich reduziert, so dass sich die Teams stärker auf Innovation und Produktivität konzentrieren können. Die verbesserte Sicherheit hat die Produktqualität und den Wettbewerbsvorteil des Unternehmens gestärkt. Mit Blick auf die Zukunft wird der SCW Trust Score dem Unternehmen helfen, seine Sicherheitspraktiken weiter zu verbessern und Innovationen voranzutreiben.
Ressourcen für den Einstieg
Trust Score zeigt den Wert von Secure-by-Design-Upskilling-Initiativen
Unsere Forschung hat gezeigt, dass Schulungen für sicheren Code funktionieren. Trust Score verwendet einen Algorithmus, der auf mehr als 20 Millionen Lerndaten aus der Arbeit von mehr als 250.000 Lernenden in über 600 Organisationen basiert, und zeigt, wie effektiv die Initiative ist, um Schwachstellen zu beseitigen und wie man sie noch effektiver gestalten kann.
Reaktive versus präventive Sicherheit: Prävention ist das bessere Heilmittel
Der Gedanke, Legacy-Code und -Systeme zur gleichen Zeit wie neuere Anwendungen mit präventiver Sicherheit auszustatten, kann entmutigend erscheinen, aber ein Secure-by-Design-Ansatz, der durch die Weiterbildung von Entwicklern durchgesetzt wird, kann die besten Sicherheitsverfahren auf diese Systeme anwenden. Dies ist für viele Unternehmen die beste Chance, ihre Sicherheitslage zu verbessern.
Die Vorteile eines Benchmarking der Sicherheitskompetenzen von Entwicklern
Der zunehmende Fokus auf sicheren Code und Secure-by-Design-Prinzipien erfordert, dass Entwickler von Beginn des SDLC an in Cybersicherheit geschult werden, wobei Tools wie Secure Code Warrior's Trust Score dabei helfen, ihre Fortschritte zu messen und zu verbessern.
Wesentlicher Erfolg für Enterprise Secure-by-Design-Initiativen
Unser jüngstes Forschungspapier „Benchmarking Security Skills: Streamlining Secure-by-Design in the Enterprise“ ist das Ergebnis einer umfassenden Analyse echter Secure-by-Design-Initiativen auf Unternehmensebene und der Ableitung von Best-Practice-Ansätzen auf Grundlage datengesteuerter Erkenntnisse.