Offensive Services

XXE – Der XML-External-Entity Angriff erklärt!

Aktualisiert am

In einem Penetrationstest wird ein System oder eine Anwendung auf viele verschiedene Schwachstellen überprüft. Eine dieser Schwachstellen ist XXE, XML-External-Entity. Wir haben einmal zusammengefasst, was XXE ist und welche Auswirkung diese Schwachstelle haben kann.

Die XXE Schwachstelle

XXE ist eine Injection Schwachstelle und so weit verbreitet, dass dieser Schwachstellen-Typ eine eigene Kategorie in der OWASP Top 10 erhielt. Wie bei vielen anderen Schwachstellen, wie bspw. SQL-Injection oder Cross-Site-Scripting ist auch bei der XML-External-Entity, der ungefilterte Benutzern-Input der Auslöser.

Wie der Name bereits andeutet, befindet sich bei XXE der Benutzer-Input in Form einer XML-Datei. Dieser Dateityp wird sehr häufig für den Austausch zwischen von Daten zwischen Servern genutzt. Der große Vorteil von XML ist, dass es sowohl von Menschen als auch von Computern gut und schnell gelesen werden kann. Bei dem XML-External-Entity-Angriff wird das Dateiformat XML jedoch ausgenutzt, um bspw. geheime Dateien auf einem Server lesen zu können.

Vor allem der XML-Parser wird bei diesem Angriff ausgehebelt. In einem klassischen XML-Dokument gibt es ein Feld in dem “external entity” bestimmt werden können. Diese machen es möglich, Inhalt aus lokalen oder externen Daten einfügen zu lassen, nachdem der Server diese “external entity” festgelegt hat. Klassische Parser haben hiermit jedoch häufig ein Problem, da bspw. komprimierte Daten übermittelt werden, auf die der Benutzer keinen Zugriff erhalten sollte.

<?xml  version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
   <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM  "file:///etc/passwd" >]>
<foo>&xxe;</foo>

OWASP hat ebenfalls eine Erklärung zu der Schwachstelle XXE veröffentlicht, in der bspw. der o. a. Code gefunden werden kann, der ein System auf eine XXE Schwachstelle untersucht. Der Benutzer “sagt” dem System in dem Feld <!ENTITY>, dass eine Datei ausgewählt werden soll, die sich in dem Pfad “file:///etc/passwd” befindet.

Ist der Parser ohne jegliche Sicherheitskonfigurationen ausgestattet, würde er diese Anfrage ohne Probleme ausführen und somit potentiell sensible Informationen zurückgeben.

So können XML-External-Entity-Schwachstellen erkannt und verhindert werden

Nachdem wir den Angriff nun etwas besser verstanden haben, möchten wir verstehen, wie man diese Sicherheitslücke schließen und langfristig verhindern kann. Um diese Sicherheitslücke zu schließen, ist es zunächst notwendig, dass diese gefunden wird. Es ist definitiv möglich, diese Schwachstelle manuell zu finden, indem eigene Skripte wie o. a. von OWASP, an den eigenen Server geschickt werden und die Antwort validiert wird.

Jedoch ist diese Variante sehr zeitaufwendig und führt höchstwahrscheinlich nicht zu einem Erfolg. Professionelle Pentester haben Scanner und andere Tools, die Webseiten schnell nach solchen Schwachstellen analysieren können. Zudem ist es ratsam, professionelle Teams dafür zu engagieren, da diese Erfahrungen mit verschiedenen Sicherheitslücken haben und somit bessere Ergebnisse liefern können als ein eigener Mitarbeiter selbst.

Eigentlich ist es sehr, einfach seine Systeme vor XXE Angriffen zu schützen, denn die eigenen XML-Parser können so konfiguriert werden, dass <!ENTITY> nicht akzeptiert und verarbeitet wird. Das Problem hierbei ist, dass in vielen Fällen <!ENTITY> aus einem guten Grund verarbeitet werden. In solchen Fällen sollte die Dokumentation des eigenen XML-Parsers gut durchgearbeitet werden und lediglich Funktionen bereitstellen, die eine Daseinsberechtigung haben.

Foto des Autors

Vincent Reckendrees

Hallo, ich bin Vincent Reckendrees und leite das Team Offensive Services bei der AWARE7 GmbH. In meinem Bachelor und Master Studium habe ich mich auf IT-Sicherheit spezialisiert und BSI zertifizierter IS-Penetrationstester. Meine Leidenschaft gilt Reverse Engineering, Hardware- und Web-Sicherheit. Als Experte für Penetrationstests finde ich Schwachstellen in Systemen und Netzwerken und nutze sie, um realistische Cyberangriffe zu simulieren und Sicherheitsmaßnahmen zu verbessern. Durch Reverse Engineering entdecke ich Fehler und Verbesserungsmöglichkeiten in Software und Hardware. Meine Fähigkeiten in Hardware- und Web-Sicherheit ermöglichen es mir, physische Geräte und Online-Plattformen vor einer Vielzahl von Cyberbedrohungen zu schützen und ihre Integrität und Zuverlässigkeit zu gewährleisten.