Skip to content

XML-Sicherheit, Teil 1: XXE-Angriffe, zum ersten!

XML wird meist für den Austausch von Daten verwendet. Werden die XML-Daten vor der Verarbeitung nicht geprüft, kann ein Angreifer darüber eigenen XML-Code einschleusen. Meist kommt es dann zu XML External Entity (XXE) Angriffen, die in den aktuellen OWASP Top 10 einen eigenen Eintrag haben: Sie stehen auf Platz 4. Aber auch andere Angriffe sind über XML möglich.

OWASP Top 10, 2017, Platz 4: XML External Entities (XXE)

XML External Entity (XXE) Angriffe sind möglich, wenn XML-Daten von einem XML-Prozessor verarbeitet werden, der eine External Entity auflöst.

Eine External Entity erlaubt den Zugriff auf lokale oder entfernte Daten über einen deklarierten System-Identifier. Diese Identifier sind im Allgemeinen ein URL, auf den der XML-Prozessor beim Verarbeiten der XML-Daten zugreifen kann. Die External Entity wird dann durch den Inhalt des dereferenzierten URL ersetzt.

Ein Angreifer kann den System-Identifier so manipulieren, dass darüber auf vertrauliche Daten zugegriffen oder anderweitig Schaden angerichtet wird. Unter Umständen bis zur Ausführung eingeschleusten Codes, wenn über den XXE-Angriff eine entsprechende Schwachstelle ausgenutzt werden kann.

Voraussetzungen für einen Angriff

Für einen Angriff müssen verschiedene Bedingungen erfüllt sein:

  • Der Angreifer muss seinen Code in den System-Identifier-Teil einer External Entity in der DTD einfügen können.
  • Der XML-Prozessor muss so konfiguriert sein, dass er die DTD verarbeitet und auswertet.
  • Der XML-Prozessor muss so konfiguriert sein, dass er External Entities in der DTD auflöst.

Einige Beispiele für XXE-Angriffe

Dateien ausspähen

Ein einfaches Beispiel für einen XXE-Angriff ist das Ausspähen der Datei /etc/passwd (auch wenn diese Datei schon lange keine Passwörter mehr enthält stellt sie weiterhin ein gutes Beispiel für das Ausspähen sensibler Informationen dar):

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

Beim Auswerten der Daten holt der XML-Prozessor den Inhalt der Datei /etc/passwd und fügt ihn an Stelle von &xxe; ein. Genau so, wie er es auch tun soll.

Schwachstellen in Parsern ausnutzen

Über XXE können aber auch Schwachstellen in den XML-Parsern ausgenutzt werden. Einige Beispiele dafür hat z.B. Willis Vandevanter auf der Black Hat USA 2015 vorgetellt: "Exploiting XXE Vulnerabilities in File Parsing Functionality" (Website dazu).

Aber nicht in irgendwelchen x-beliebigen, sondern in denen für Dateien im Office Open XML (OPENXML, OOXML, OXML) Format von Microsoft (Dateiendung *.docx, *.pptx, *.xlsx). Diese Dateien sind ZIP-Archive, die eine XML-Datei und Media-Dateien enthalten.

Er hat in den Parsern verschiedene Schwachstellen entdeckt, die XXE Angriffe möglich machen. Einschließlich der Möglichkeit, über die Verwendung eine Externen DTD Server-Side Request Forgery (SSRF) Angriffe durchzuführen:

Für die Suche nach XXE-Schwachstellen hat Willis Vandevanter ein Tool entwickelt, mit dem sich XXE/XML-Exploits in verschiedene Dateitypen einfügen lassen: oxml_xxe.

Außerdem hat er noch auf eine Stolperfalle beim Schutz vor Angriffen hingewiesen: Die Libraries, die XML-Dateien irgendwo auf dem Server verarbeiten, müssen nicht die gleichen sein, die hochgeladene Dateien zur Prüfung parsen. Unter Umständen werden beim Prüfen des Uploads Angriffe nicht erkannt, die erst bei der späteren Verarbeitung durch eine andere Library aktiv werden.

Schwachstellen beim Upload

Schwachstellen in File-Parsern sind schlecht. Noch schlechter ist es, wenn ein Angreifer seine präparierte XML-Datei den Parser unterschieben kann. Auch dafür gibt es ein Beispiel: Von Mohamed Ramadan wurde im Dezember 2014 eine Schwachstelle in Facebooks Career-Seite entdeckt, die den Upload von .docx-Dateien mit XXE-Angriffen darin erlaubte. Ups!

In der nächsten Folge stelle ich weitere Schwachstellen vor, außerdem natürlich die möglichen Schutzmaßnahmen gegen XXE-Angriffe.

Carsten Eilers

>
        </div>
                
        <footer class= Kategorien: Grundlagen

Trackbacks

Dipl.-Inform. Carsten Eilers am : XML-Sicherheit, Teil 2: XXE-Angriffe, zum zweiten!

Vorschau anzeigen
Die XXE-Angriffe stehen auf Platz 4 der aktuellen OWASP Top 10. Worum es dabei generell geht haben Sie bereits im ersten Teil erfahren, in dem ich Ihnen auch einige Beispiele für XXE-Schwachstellen vorgestellt habe. Und davon gibt es noch vie

Dipl.-Inform. Carsten Eilers am : XML-Sicherheit, Teil 3: XXE-Angriffe, zum dritten!

Vorschau anzeigen
Die XXE-Angriffe stehen auf Platz 4 der aktuellen OWASP Top 10. Worum es dabei generell geht haben Sie bereits im ersten Teil erfahren, in dem ich Ihnen auch einige Beispiele für XXE-Schwachstellen vorgestellt habe. Und mit XXE-Schwachstellen

Dipl.-Inform. Carsten Eilers am : XML-Sicherheit, Teil 4: XSL Injection, zum ersten

Vorschau anzeigen
Werden XML-Daten vor der Verarbeitung nicht geprüft, kann ein Angreifer darüber eigenen XML-Code einschleusten. Meist kommt es dann zu den schon vorgestellten XML External Entity (XXE) Angriffen. Die stehen auf Platz 4 der aktuellen OWAS

Dipl.-Inform. Carsten Eilers am : XML-Sicherheit, Teil 5: XSL Injection, zum zweiten

Vorschau anzeigen
Werden XML-Daten vor der Verarbeitung nicht geprüft, kann ein Angreifer darüber eigenen XML-Code einschleusten. Meist kommt es dann zu den schon vorgestellten XML External Entity (XXE) Angriffen. Die stehen auf Platz 4 der aktuellen OWAS

Dipl.-Inform. Carsten Eilers am : XML-Sicherheit, Teil 6: XPath Injection

Vorschau anzeigen
Werden XML-Daten vor der Verarbeitung nicht geprüft, kann ein Angreifer darüber eigenen XML-Code einschleusten. Meist kommt es dann zu den schon vorgestellten XML External Entity (XXE) Angriffen. Die stehen auf Platz 4 der aktuellen OWAS