EN

Was ist eine XML External Entity (XXE)-Verarbeitung Schwachstelle und wie kann sie verhindert werden?

In diesem Artikel:

Die OWASP Top 10 ist eine Liste, die die 10 kritischsten Risiken für die Sicherheit von Webanwendungen enthält. Das Dokument ist frei verfügbar, und OWASP empfiehlt, dass Unternehmen die beschriebenen Best Practices in ihre Anwendungs-Workflows übernehmen, um die Sicherheit von Webanwendungen zu verbessern.  In der Liste der Sicherheitsrisiken ist die XML External Entity (XXE)-Schwachstelle ein OWASP-Sicherheitsrisiko, das sich auf geparste XML-Eingaben durch falsch konfigurierte Prozessoren konzentriert. 

Dieser Artikel befasst sich mit der Art und Weise, wie XXE-Angriffe durchgeführt werden, mit den Risiken, die mit solchen Angriffen verbunden sind, und mit verschiedenen Best Practices und Tools zur Abschwächung solcher Risiken.

XXE-Sicherheitsbewertungsstufe

Security Assessment New XXE-2-2-4

CVSS-Vektor: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L/CR:H/IR:H/AR:H/MAV:N/ MAC:L/MPR:N/MUI:N/MS:U/MC:H/MI:H/MA:H

Was sind XXE-Angriffe?

Einige Webanwendungen enthalten XML-Prozessoren, die nicht vertrauenswürdige externe Referenzen innerhalb einer XML-Datei auswerten. Diese Referenzen ermöglichen es Angreifern, über externe Parameterentitäten verschiedene Informationen aus der Konfigurationsdatei auszulesen, die die Angreifer dann nutzen, um das System weiter zu kompromittieren. 

Da diese Angriffe durch das Parsen von XML-Eingaben in einer Anwendung erfolgen, können Angreifer diese nutzen, um auf andere interne Systeme zuzugreifen, was zum Ausfall der Anwendung und zum Verlust sensibler Daten führen kann. Daher ist es ratsam, die Art dieser Angriffe zu verstehen und zu wissen, wie sie verhindert werden können.

Was sind externe XML-Entitäten?

Externe Entitätsprofile kommen von externen Quellen, also z.B. einer Datei auf einem lokalen Computer oder einer Web-URL. Entitäten werden verwendet, um sicherzustellen, dass der XML-Prozessor sich konsistent verhält, auch wenn unerwartete Zeichen geparst werden. 

Externe Entitäten haben verschiedene legitime Verwendungszwecke:

  • Aufrufen eines lokal gehosteten XML-Dokuments zur Verwendung in einem anderen XML-Dokument
  • Aufteilung von Dokumenten in kleinere, logische Einheiten
  • Mehrfacher Verweis auf dasselbe Entity-Framework, ohne dass das gleiche Element wiederholt werden muss
  • Verwendung externer Entitätsreferenzen mit unterschiedlicher Kodierung im selben Dokument

Wenn der Parser, der externe Entitäten verarbeitet, schwach konfiguriert ist, können Hacker die zum Server gehenden Daten abfangen und schädliche Nutzdaten einschleusen. Angreifer nutzen in der Regel auch benutzerdefinierte externe Entitäten aus, um auf sensible Daten zuzugreifen.

Was sind die Risikofaktoren für XXE-Angriffe?

Eine Anwendung wird in der Regel aufgrund der folgenden Szenarien als anfällig für XXE-Angriffe betrachtet:

Web-Anwendung parst XML-Dokumente

Wenn eine Anwendung XML-Dokumente über Uploads oder direkt als Eingabe akzeptiert, können Angreifer das XML-Dokument manipulieren, wodurch sie Zugriff auf Systemdateien und Konfigurationsinformationen erhalten.

Verfälschte Daten innerhalb des DTD-Bezeichners (Document Type Declaration)

Wenn die DTD-Verarbeitung im XML-Parser aktiviert ist, können Angreifer den „Billion Laughs“-Angriff inszenieren – eine Art Denial-of-Service-Angriff, der auf der Verwendung rekursiver Entitäten basiert.

XML-Prozessor validiert und verarbeitet DTD

Wenn die DTD-Validierung für die XML-Verarbeitung aktiviert ist, können Angreifer XML-Dokumente verwenden, um auf lokale Ressourcen zuzugreifen und deren Rückgabe von Daten zu verhindern. Wenn der XML-Parser außerdem externe Entitäten innerhalb der DTD auflöst, können Angreifer den Inhalt sensibler Dateien preisgeben, indem sie Anfragen mit einer bösartigen Systemidentifizierungs-URL stellen.

Art der XXE-Angriffe

Angreifer zielen in der Regel auf externe XML-Entitäten ab, da ein XML-Parser logischerweise nicht für die Überprüfung externer Inhalte ausgelegt ist. Der aufgelöste externe Inhalt kann alles Mögliche enthalten, einschließlich bösartiger Nutzdaten, was XXE-Angriffe von Natur aus gefährlich macht. 

XXE-Angriffe werden mit Hilfe verschiedener Mechanismen durchgeführt, darunter:

XXE zum Abrufen von Dateien

Um auf sensible Dateiinhalte zuzugreifen, kann ein Angreifer eine bösartige Anfrage unter Verwendung der Systemidentifizierungs-URL erstellen. Wenn der XML-Parser externe Entitäten verarbeitet, kann der Server in seiner Antwort den Inhalt eines Dateisystems preisgeben. Auf diese Weise kann der Angreifer auf Anmeldedaten, Systemdateien, Quellcode und manchmal sogar auf Verzeichnislisten aller Integrationen zugreifen, wenn keine robusten Sicherheitsmechanismen vorhanden sind.

XXE für Server-Side Request Forgery (SSRF)

Angreifer können XXE-Payloads verwenden, um indirekten Zugang zu internen Netzwerken zu erhalten und Angriffe mit Anfragen zu starten, die von einem legitimen Server stammen. Nach der Ausführung von XXE auf einem Webserver kann der Angreifer HTTP-Anfragen an andere interne Subsysteme senden und so einen tiefer gehenden, umfassenden Angriff orchestrieren.

Out-of-band-Exfiltration von Daten

Out-of-band-Angriffe (Blind XXE) sind nicht auf eine sofortige Antwort des Servers angewiesen. In diesem Fall zwingt ein Angreifer den XML-Prozessor, zusätzliche kontrollierte Anfragen an den Server zu senden. Der Server wird dann ausgenutzt, um den Inhalt der Datei zu lesen, die während des Angriffs abgefangen wurde.

Datenabruf über Fehlermeldungen

Angreifer können einen XML-Parsing-Fehler auslösen, dessen Meldung die gesuchten sensiblen Informationen enthält. Dieser Ansatz funktioniert nur, wenn der Server die vollständige Fehlermeldung in seiner Antwort zurückgibt.

Wie man XXE-Angriffsflächen erkennt und identifiziert

Die meisten Angriffsflächen für External Entity Injection (XXE Injection) Angriffe sind offensichtlich. Das liegt daran, dass der HTTP-Verkehr des Webservers Anfragen mit XML-Daten enthält. Um Angriffsflächen zu erkennen, die kein XML enthalten, können Unternehmen Angriffsflächen für External Entity Injection auf verschiedene Weise identifizieren:

XXE-Angriffe über Datei-Upload

Einige Anwendungen erlauben es Clients, Dateien hochzuladen, die dann vom Webserver verarbeitet und validiert werden. Wenn die Dateiverarbeitungsbibliothek XML-Unterkomponenten unterstützt, kann der Angreifer bösartige Dokumente hochladen, um die Angriffsfläche zu erreichen.

Geänderter Inhaltstyp

Einige Webserver tolerieren bestimmte XML-Inhaltstypen. Wenn die Anwendung Anfragen mit XML im Nachrichtentext empfangen kann, können Angreifer die Angriffsfläche freilegen, indem sie POST-Anfragen so umformatieren, dass sie XML verwenden.

XInclude-Angriffe

Wenn ein Client Daten sendet, betten einige Anwendungen die Daten in ein XML-Dokument ein, das dann geparst wird. In diesem Fall können Angreifer nicht das gesamte XML-Dokument kontrollieren, sondern XInclude verwenden, das die Teilkomponenten angibt, die zum Aufbau von XML-Dokumenten verwendet werden. Diese Unterkomponenten können in jeden Datenwert im XML-Dokument eingefügt werden, indem sie auf den XInclude-Namensraum und einen Pfad zu der Datei verweisen, die sie einfügen möchten.

Blinde XXE-Schwachstellen

Angreifer neigen dazu, externe Entitäten über eine URL zu einer Anwendung zu definieren, die sie kontrollieren wollen. Solche Schwachstellen können durch die Überwachung des Datenverkehrs verschiedener Anwendungsinteraktionen identifiziert werden.

Testen Sie unseren automatischen XXE-Schwachstellen-Scanner

Best Practices zur Verhinderung von XXE-Schwachstellen

Obwohl es nie ausreicht, die Auflösung externer Entitäten zu deaktivieren, gibt es zahlreiche Methoden, um XXE-Angriffe wirksam zu verhindern. Dieser Abschnitt befasst sich mit den Tools und Praktiken, die Unternehmen nutzen können, um Angriffe über External XML Entities zu verhindern.

Einfache Datenformate verwenden

Unternehmen sollten eine sichere Standardkonfiguration verwenden, die einfache Datenformate wie JSON zulässt, die leicht validiert werden können, bevor sie vom XML-Parser verarbeitet werden. 

Verwenden Sie aktualisierte XML-Prozesse und -Bibliotheken

Ältere XML-Prozessoren und -Bibliotheken stützen sich auf veraltete Dokumenttyp-Definitionen, die den XML-Parser schwächen. Sicherheitsteams sollten daher ihre XML-Bibliotheken und -Prozessoren aktualisieren, um die Serialisierung und Offenlegung sensibler Daten zu vermeiden.

Deaktivieren Sie Document Type Definition und XXE in allen XML-Parsern

Durch die Deaktivierung der DTD-Funktionalität oder der Unterstützung externer Entitäten wird sichergestellt, dass kein Angreifer bösartige Nutzdaten in das Datentransportprotokoll einspeisen kann.

Whitelisting für die serverseitige Eingabevalidierung verwenden

Whitelisting schützt Anwendungen und Netzwerke vor Remote-Code-Ausführung durch nicht autorisierte Entitäten und nicht vertrauenswürdige Quellen. Dadurch wird sichergestellt, dass legitime Workloads und Anfragen mit dem XML-Parser verarbeitet werden können.

Verwendung von SAST-Tools zur Identifizierung von XXE-Angriffsflächen im Quellcode

Während die manuelle Codeüberprüfung Teams bei der Identifizierung potenzieller Angriffsflächen helfen kann, automatisieren SAST-Tools die Erkennung von Schwachstellen im Quellcode und gelten als eine der effektivsten Methoden zur Beseitigung von XXE-Schwachstellen in einem Quellcode.

Einige der populären Sicherheitsprodukte, die Unternehmen bei der Identifizierung und Beseitigung von XXE-Angriffsflächen helfen können, sind:

Crashtest Security Suite

Crashtest Security ist ein umfassendes Tool zum Scannen von Schwachstellen, das es Sicherheitsteams ermöglicht, einen kontinuierlichen Testprozess zur Reduzierung von Sicherheitsschwachstellen einzurichten. Mit Crashtest Security können Teams sicherere Webanwendungen entwickeln und einsetzen, indem sie diese testen und die OWASP-Empfehlungen als Benchmarks verwenden.

Der End-to-End-Schwachstellen-Scanner der Plattform hilft bei der Beseitigung von XXE-Angriffsflächen und Sicherheitslücken, da er fast jede Webtechnologie scannt, einschließlich APIs, AJAX, HTML5, Javascript, mehrseitige Anwendungen und einseitige Anwendungen.

Portswigger Burp Suite

Der Schwachstellen-Scanner Burp Suite nutzt die Forschungsergebnisse von Portswigger, um Teams bei der Erkennung einer breiten Palette von Web-Schwachstellen zu unterstützen. Der Scanner nutzt eine Crawl-Engine, um Schwachstellen selbst in umfangreichen Anwendungen zu finden, bei denen andere Scanner an Hindernissen wie flüchtigen URLs, zustandsabhängigen Funktionen und CSRF-Tokens scheitern.

Hdiv

Eine komplette Schwachstellen-Management-Lösung, die ein Datenfluss-Kontrollsystem verwendet, um Teams bei der Beseitigung von XXE-Angriffsflächen in ihren Anwendungen zu unterstützen. Der Mechanismus zur Kontrolle des Informationsflusses verhindert, dass der ursprüngliche Serververtrag gebrochen wird, und ermöglicht es Teams, genau zu bestimmen, auf welche Teilkomponente jeder Benutzer zugreifen kann.

Acunetix

Eine Plattform zur Verwaltung von Schwachstellen, die eine integrierte Schwachstellenbewertung und -prüfung bietet. Die Lösung lässt sich mit marktführenden DevOps-Tools integrieren, um die Sicherheit zu erhöhen und die meisten Sicherheitsrisiken zu geringen Kosten zu beseitigen.

Invicti

Ein automatisierter, schneller Schwachstellen-Scanner, der Schwachstellen aufspürt und Abhilfemaßnahmen vorschlägt. Die Plattform unterstützt außerdem mehrere Integrationen und Sicherheitslösungen von Drittanbietern für eine umfassende Schwachstellenbewertung.

Wie behebt man XML External Entity (XXE)-Verarbeitungsschwachstellen?

Eine XXE-Schwachstelle besteht, wenn eine Webanwendung XML-Dokumente aus einer nicht vertrauenswürdigen Quelle parst. Wenn der zugrunde liegende XML-Parser DTD akzeptiert, kann ein Angreifer das XML-Dokument so manipulieren, dass er Dateien auf dem System lesen kann. Der folgende Codeausschnitt zeigt zum Beispiel ein bösartiges XML-Dokument, das die Anwendung zwingt, sensible Dateien auf dem Server zu lesen.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE credentials [
<!ELEMENT credentials ANY >
<!ELEMENT user ANY >
<!ENTITY user SYSTEM "file:///etc/passwd">]>
<credentials>
    <user>&user;</user>
    <pass>mypass</pass>
</credentials>

Ein schlecht konfigurierter XML-Parser würde die in der DTD angegebene Datei lesen und sie möglicherweise dem Angreifer anzeigen. Um Ihre Webanwendung vor dieser Art von Angriffen zu schützen, können Sie daher den Entity Loader für den XML-Parser deaktivieren, wie der folgende Ausschnitt zeigt.

libxml_disable_entity_loader(true);

Zusätzlich zur Deaktivierung des Entity-Loaders wird empfohlen, eine lokale statische DTD zu verwenden und alle anderen im XML-Dokument enthaltenen DTDs zu entfernen.

Zusammenfassung

Da ein erfolgreicher Angriff zu Request Forgery, Denial of Service und Offenlegung sensibler Daten führt, werden XXE-Angriffe als eines der Top-Sicherheitsrisiken laut OWASP und der Common Weakness Enumeration (CWE) Datenbank angesehen. XXE-Angriffe sind besonders weit verbreitet, da sie durch eine Reihe von Angriffsvektoren ausgeführt werden können und aufgrund des mangelnden Verständnisses unter den Sicherheitsteams immer noch als neuartiger Angriffsmechanismus gelten.  

Crashtest Security hilft Teams, Angriffsflächen zu identifizieren, bevor Hacker sie ausnutzen, und verringert so das Risiko, durch XXE-Angriffe ausgenutzt zu werden. Der Scanner der Plattform liefert genaue Berichte und Empfehlungen zur Behebung, die es Unternehmen ermöglichen, bösartigen Akteuren einen Schritt voraus zu sein. 

Testen Sie Crashtest Security noch heute und entdecken Sie, wie es sich in Ihren Entwicklungs-Stack integrieren lässt, um effizientes, automatisiertes Schwachstellen-Scanning zu betreiben.

Erhalten Sie jetzt kostenlos einen schnellen Sicherheitsbericht für Ihre Website

Wir analysieren derzeit https://example.com
Wir scannen derzeit https://example.com
Status des Scans: In Bearbeitung
Scan target: http://example.com/laskdlaksd/12lklkasldkasada.a
Datum: 25/06/2022
Crashtest Security Suite prüft auf:
Information disclosure Known vulnerabilities SSL misconfiguration Open ports
Scanauftrag ausfüllen
Bitte geben Sie Ihre Daten ein, um die schnelle Sicherheitsüberprüfung zu erhalten.
Ein Sicherheitsspezialist analysiert gerade Ihren Scan-Bericht.
Bitte geben Sie Ihre Telefon-/Handynummer an, damit wir Ihre Identität überprüfen können:
Vielen Dank.
Wir haben Ihren Antrag erhalten.
Sobald Ihr Sicherheitsaudit fertig ist, werden wir Sie benachrichtigen.