Coders Conquer Security: Share & Learn Series - XQuery Injection

Veröffentlicht Feb 28, 2019
von Jaap Karan Singh
FALLSTUDIE

Coders Conquer Security: Share & Learn Series - XQuery Injection

Veröffentlicht Feb 28, 2019
von Jaap Karan Singh
Ressource anzeigen
Ressource anzeigen

XQuery-Injection-Angriffe werden manchmal als der kleine Bruder der verbreiteten SQL-Injection-Angriffe angesehen. Sie haben ähnliche Grundursachen und auch die Befehle, die Angreifer ausnutzen, um sie auszulösen, sind sich sehr ähnlich. Es ist nur so, dass XQuery-Injection-Attacken nur während einer XPath-Abfrage für XML-Daten auftreten können. Aus diesem Grund werden sie manchmal als XPath Injection oder einfach als XPath-Angriffe bezeichnet, da dies die verwendete Übermittlungsmethode ist.

Die überwiegende Mehrheit der Websites verwendet XML-Datenbanken, um kritische Funktionen auszuführen, wie z.B. das Speichern von Benutzeranmeldeinformationen, Kundendaten, persönlichen Identitätsinformationen und vertraulichen oder sensiblen Daten, wodurch XQuery-Angriffe eine ziemlich große Angriffsfläche haben.

In dieser Folge lernen wir:

  • Wie Angreifer XQuery-Injektionen verwenden
  • Warum XQuery-Injektionen gefährlich sind
  • Techniken, die diese Sicherheitslücke beheben können.

Wie lösen Angreifer eine XQuery Injection aus?

Wie bei den meisten Computersprachen wurde auch der Code für XPath auf Einfachheit ausgelegt. In der Tat ist XPath eine Standardsprache, und alle Notationen und Syntaxanweisungen sind unabhängig von der Anwendung, die sie verwendet, unverändert. Das bedeutet, dass die Befehle, die zur Manipulation einer XPath-Abfrage verwendet werden, bekannt sind und sogar automatisiert werden können.

Im Grunde genommen ist eine XPath-Abfrage eine einfache Anweisung, die der XML-Datenbank mitteilt, welche Informationen nachgeschlagen werden sollen. In einem der einfachsten Beispiele wird damit überprüft, ob ein Benutzerdatensatz vorhanden ist, und anschließend dessen Anmeldedaten abgerufen. Das Problem ist, dass XPath-Abfragen Benutzereingaben enthalten und Hacker die Abfrage so manipulieren können, dass Informationen zurückgegeben werden, die eigentlich geschützt sein sollten.

Beim Versuch, die Anmeldesicherheit zu umgehen, kann ein Angreifer beispielsweise Variablen an das Ende seiner XPath-Abfrage anhängen, die den gesamten Prozess umgehen. Ein Beispiel könnte so aussehen:

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

Hier wird das Feld "Benutzername" aufgrund der Anweisung "1=1" oder "a=a" auf jeden Benutzer angewendet. Das Passwort-Feld spielt keine Rolle, da nur der erste Teil der Abfrage wahr sein muss.

Warum ist XQuery Injection gefährlich?

Ein Hauptgrund, warum XQuery-Injection-Angriffe so gefährlich sind, ist, dass sie es Angreifern ermöglichen, die Anmelde- und Kontosicherheit zu umgehen. Und sie erlauben es, dies auf automatisierte Weise zu tun, indem sie eine Standardsprache verwenden, die sich nicht von Anwendung zu Anwendung unterscheidet. Angreifer können Websites und Anwendungen automatisch nach dieser Schwachstelle scannen und handeln, sobald sie entdeckt wird. Wenn Ihre App verwundbar ist, werden die Angreifer sie kompromittieren. Neben der Kompromittierung der Kontosicherheit können XQuery-Angriffe auch zur Datenexfiltration genutzt werden. Ein Angreifer könnte z.B. alle Datensätze aus der XML-Datenbank übertragen.

Eliminieren von XQuery-Injection-Angriffen

Wie bei ähnlichen Schwachstellen besteht ein wichtiger Schutz darin, den Benutzereingaben einfach nicht zu vertrauen. Jedes Mal, wenn ein Benutzer Informationen eingeben kann, ob er nun eine Datenbankabfrage durchführt oder nicht, sollte der Vorgang genau überprüft werden. Es ist nicht anders, als wenn man die Fenster und Türen eines Gebäudes sichert, da dies die Hauptwege sind, über die sich Personen Zugang verschaffen können.

Für den Schutz vor XQuery-Injektionen wird dies durch die Bereinigung von Benutzereingaben durch Filterung oder durch die Verwendung einer Whitelist-Eingabevalidierung von Benutzereingaben erreicht. Sie können auch eine parametrisierte XPath-Schnittstelle verwenden, ähnlich wie vorbereitete Anweisungen für SQL-Abfragen.

Stellen Sie schließlich sicher, dass Sie für alle Anwendungen die geringsten Rechte anwenden. Das könnte bedeuten, dass Sie einen Benutzer mit Nur-Lese-Rechten anlegen, um alle Anwendungsabfragen durchzuführen.

Mit Hilfe dieser Techniken ist es möglich, alle XQuery-Injektionsversuche gegen Ihre Website oder Anwendung zu stoppen.

Weitere Informationen zu XQuery-Injektionen

Als weitere Lektüre können Sie einen Blick darauf werfen, was OWASP über XQuery Injections sagt. Sie können Ihr neu erworbenes Verteidigungswissen auch mit einer kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Beseitigung dieser Schwachstelle und eine Schurkengalerie anderer Bedrohungen zu erfahren, besuchen Sie den Secure Code Warrior Blog.

Ressource anzeigen
Ressource anzeigen

Autor

Jaap Karan Singh

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Coders Conquer Security: Share & Learn Series - XQuery Injection

Veröffentlicht Feb 28, 2019
Von Jaap Karan Singh

XQuery-Injection-Angriffe werden manchmal als der kleine Bruder der verbreiteten SQL-Injection-Angriffe angesehen. Sie haben ähnliche Grundursachen und auch die Befehle, die Angreifer ausnutzen, um sie auszulösen, sind sich sehr ähnlich. Es ist nur so, dass XQuery-Injection-Attacken nur während einer XPath-Abfrage für XML-Daten auftreten können. Aus diesem Grund werden sie manchmal als XPath Injection oder einfach als XPath-Angriffe bezeichnet, da dies die verwendete Übermittlungsmethode ist.

Die überwiegende Mehrheit der Websites verwendet XML-Datenbanken, um kritische Funktionen auszuführen, wie z.B. das Speichern von Benutzeranmeldeinformationen, Kundendaten, persönlichen Identitätsinformationen und vertraulichen oder sensiblen Daten, wodurch XQuery-Angriffe eine ziemlich große Angriffsfläche haben.

In dieser Folge lernen wir:

  • Wie Angreifer XQuery-Injektionen verwenden
  • Warum XQuery-Injektionen gefährlich sind
  • Techniken, die diese Sicherheitslücke beheben können.

Wie lösen Angreifer eine XQuery Injection aus?

Wie bei den meisten Computersprachen wurde auch der Code für XPath auf Einfachheit ausgelegt. In der Tat ist XPath eine Standardsprache, und alle Notationen und Syntaxanweisungen sind unabhängig von der Anwendung, die sie verwendet, unverändert. Das bedeutet, dass die Befehle, die zur Manipulation einer XPath-Abfrage verwendet werden, bekannt sind und sogar automatisiert werden können.

Im Grunde genommen ist eine XPath-Abfrage eine einfache Anweisung, die der XML-Datenbank mitteilt, welche Informationen nachgeschlagen werden sollen. In einem der einfachsten Beispiele wird damit überprüft, ob ein Benutzerdatensatz vorhanden ist, und anschließend dessen Anmeldedaten abgerufen. Das Problem ist, dass XPath-Abfragen Benutzereingaben enthalten und Hacker die Abfrage so manipulieren können, dass Informationen zurückgegeben werden, die eigentlich geschützt sein sollten.

Beim Versuch, die Anmeldesicherheit zu umgehen, kann ein Angreifer beispielsweise Variablen an das Ende seiner XPath-Abfrage anhängen, die den gesamten Prozess umgehen. Ein Beispiel könnte so aussehen:

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

Hier wird das Feld "Benutzername" aufgrund der Anweisung "1=1" oder "a=a" auf jeden Benutzer angewendet. Das Passwort-Feld spielt keine Rolle, da nur der erste Teil der Abfrage wahr sein muss.

Warum ist XQuery Injection gefährlich?

Ein Hauptgrund, warum XQuery-Injection-Angriffe so gefährlich sind, ist, dass sie es Angreifern ermöglichen, die Anmelde- und Kontosicherheit zu umgehen. Und sie erlauben es, dies auf automatisierte Weise zu tun, indem sie eine Standardsprache verwenden, die sich nicht von Anwendung zu Anwendung unterscheidet. Angreifer können Websites und Anwendungen automatisch nach dieser Schwachstelle scannen und handeln, sobald sie entdeckt wird. Wenn Ihre App verwundbar ist, werden die Angreifer sie kompromittieren. Neben der Kompromittierung der Kontosicherheit können XQuery-Angriffe auch zur Datenexfiltration genutzt werden. Ein Angreifer könnte z.B. alle Datensätze aus der XML-Datenbank übertragen.

Eliminieren von XQuery-Injection-Angriffen

Wie bei ähnlichen Schwachstellen besteht ein wichtiger Schutz darin, den Benutzereingaben einfach nicht zu vertrauen. Jedes Mal, wenn ein Benutzer Informationen eingeben kann, ob er nun eine Datenbankabfrage durchführt oder nicht, sollte der Vorgang genau überprüft werden. Es ist nicht anders, als wenn man die Fenster und Türen eines Gebäudes sichert, da dies die Hauptwege sind, über die sich Personen Zugang verschaffen können.

Für den Schutz vor XQuery-Injektionen wird dies durch die Bereinigung von Benutzereingaben durch Filterung oder durch die Verwendung einer Whitelist-Eingabevalidierung von Benutzereingaben erreicht. Sie können auch eine parametrisierte XPath-Schnittstelle verwenden, ähnlich wie vorbereitete Anweisungen für SQL-Abfragen.

Stellen Sie schließlich sicher, dass Sie für alle Anwendungen die geringsten Rechte anwenden. Das könnte bedeuten, dass Sie einen Benutzer mit Nur-Lese-Rechten anlegen, um alle Anwendungsabfragen durchzuführen.

Mit Hilfe dieser Techniken ist es möglich, alle XQuery-Injektionsversuche gegen Ihre Website oder Anwendung zu stoppen.

Weitere Informationen zu XQuery-Injektionen

Als weitere Lektüre können Sie einen Blick darauf werfen, was OWASP über XQuery Injections sagt. Sie können Ihr neu erworbenes Verteidigungswissen auch mit einer kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Beseitigung dieser Schwachstelle und eine Schurkengalerie anderer Bedrohungen zu erfahren, besuchen Sie den Secure Code Warrior Blog.

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.