Xpath Injection

Copyright © Shutterstock/TippaPatt
Was ist Xpath Injection?
Bei der Xpath Injection verwendet die Software externe Eingaben, um einen XPath-Ausdruck, der zum Abrufen von Daten aus einer XML-Datenbank verwendet wird, dynamisch zu konstruieren. Diese Eingaben werden jedoch nicht oder fehlerhaft neutralisiert. Auf diese Weise kann ein Angreifer die Struktur der Abfrage steuern.
Beschreibung
Wie in OWASP beschrieben:
“Xpath-Injektion-Angriffe treten auf, wenn eine Website vom Benutzer bereitgestellte Informationen zum Erstellen einer Xpath-Anfrage für XML-Daten verwendet. Durch das Senden von absichtlich fehlerhaften Informationen an die Website kann ein Angreifer herausfinden, wie die XML-Daten strukturiert sind oder auf Daten zugreifen, auf die dieser normalerweise keinen Zugriff hat. Der Angreifer kann sogar in der Lage sein, seine Berechtigungen auf der Website zu erhöhen, wenn die XML-Daten zur Authentifizierung (z.B. einer XML-basierten Benutzerdatei) oder Autorisierung verwendet werden.”
Im Endeffekt hat der Angreifer die Kontrolle über die aus der XML-Datenbank ausgewählten Informationen und kann diese Fähigkeit nutzen, um den Anwendungsfluss zu steuern, die Logik zu ändern, nicht autorisierte Daten abzurufen oder wichtige Prüfungen (z.B. Authentifizierung) zu umgehen.
Mit Security Scannern wird versucht solche Schwachstellen zu identifizieren.
Lösung
Verwenden Sie parametrisierte XPath-Abfragen (z.B. mit XQuery). Dadurch wird die Trennung zwischen Datenebene und Steuerebene sichergestellt.
Überprüfen Sie, dass die Benutzereingaben ordnungsgemäß sind. Weisen Sie die Daten ggf. zurück, filtern Sie sie, und deaktivieren Sie sie gegebenenfalls. Stellen Sie sicher, dass Eingaben, die in XPath-Abfragen verwendet werden, in diesem Zusammenhang sicher sind.
Tipp
Diese Schwachstelle ähnelt anderen Schwachstellen, die Injection-Angriffen ermöglichen, beispielsweise SQL Injection, Command-Injection und LDAP Injection. Der Hauptunterschied besteht darin, dass das Angriffsziel hier die XML-Datenbank ist.
Sie haben noch Fragen?