OWASP Top Ten 2017 (de)
A4:2017-XML External Entities (XXE) |
Languages: en [de] |
Bedrohungsquellen / Angriffsvektoren | Schwachstellen | Auswirkungen | |||
---|---|---|---|---|---|
Anw.- spezifisch |
Ausnutzbarkeit: 2 | Verbreitung: 2 | Auffindbarkeit: 3 | technisch: 3 | Geschäftl. ? |
Angreifer können anfällige XML Verarbeiter instrumentalisieren, wenn sie XML direkt hochladen können oder schädliche Inhalte in ein XML-Dokument aufnehmen können, wobei sie anfälligen Code, Abhängigkeiten oder Integrationen ausnutzen. |
Standardmäßig erlauben viele ältere XML-Prozessoren die Spezifikation einer externen Entität, also einer URI, die während der XML-Verarbeitung dereferenziert und ausgewertet wird. SAST-Tools können dies erkennen, indem sie Abhängigkeiten und Konfigura-tionen überprüfen. DAST-Tools erfordern zusätzliche manuelle Schritte, um dieses Problem zu erkennen und auszunutzen. Manuelle Tester müssen geschult werden, wie man auf XXE testet, was Stand 2017 typischerweise selten passiert. |
Diese Fehler können ausgenutzt werden, um Daten zu extrahieren, eine Remote-Anfrage vom Server auszuführen, interne Systeme zu scannen, einen Denial-of-Service-Angriff oder auch andere Angriffe durchzuführen. Die Auswirkungen auf das Unternehmen hängen vom Schutzbedarf der Anwendung und ihrer Daten ab. |
Ist die Anwendung verwundbar?
Anwendungen und insbesondere XML-basierte Webservices oder nachgelagerte Integrationen können in folgenden Fällen anfällig für Angriffe sein: * Die Anwendung akzeptiert direkt XML oder XML-Uploads, insbesondere aus nicht vertrauenswürdigen Quellen oder fügt nicht vertrauenswürdige Daten in XML-Dokumente ein, die dann von einem XML-Prozessor analysiert werden. * Die XML-Prozessoren in der Anwendung oder SOAP-basierte Webservices haben Document Type Definitions (DTDs) aktiviert. Da der genaue Mechanismus zum Deaktivieren der DTD-Verarbeitung je nach Prozessor variiert, ist es empfehlenswert, eine Referenz wie den OWASP Cheat Sheet ‘XXE Prevention’. * Wenn Ihre Anwendung SAML für die Identitätsverarbeitung im Rahmen von föderierter Sicherheit oder für Single Sign On (SSO) Zwecke verwendet. SAML verwendet XML für Identitätsbekundungen und kann daher anfällig sein. * Wenn die Anwendung SOAP vor Version 1.2 verwendet, ist sie wahrscheinlich anfällig für XXE-Angriffe, wenn XML-Entitäten an das SOAP-Framework übergeben werden. * Die Anfälligkeit für XXE-Angriffe bedeutet wahrscheinlich, dass die Anwendung anfällig für Denial-of-Service-Angriffe, einschließlich des sogenannten “Billion Laughs” Angriffs, ist. |
Wie kann ich das verhindern?
Die Schulung von Entwicklern ist unerlässlich, um XXE zu identifizieren und zu beheben. Zusätzlich: * Verwenden Sie möglichst weniger komplexe Datenformate, wie JSON und vermeiden Sie die Serialisierung sensibler Daten. * Patchen oder aktualisieren Sie alle XML-Prozessoren und Bibliotheken, die von der Anwendung oder dem zugrunde liegenden Betriebssystem verwendet werden. Verwenden Sie Werkzeuge zur Prüfung von Abhängigkeiten. Aktualisieren Sie auf SOAP 1.2 oder höher. * Deaktivieren Sie die Verarbeitung von externen XML-Entitäten und DTDs in allen XML-Parsern in der Anwendung, gemäß dem OWASP Cheat Sheet ‘XXE Prevention’. Implementierung einer positiven serverseitigen Eingabevalidierung (“White-listing”), -filterung oder -bereinigung, um bösartige Daten in XML-Dokumenten, Headern oder Knoten zu verhindern. * Vergewissern Sie sich, dass die Upload-Funktionalität für XML- oder XSL-Dateien eingehende XML-Daten mithilfe der XSD-Validierung oder ähnlichem validiert. * SAST-Tools können helfen, XXE im Quellcode zu erkennen, jedoch ist die manuelle Codeüberprüfung die beste Alternative in großen, komplexen Anwendungen mit vielen Integrationen. * Wenn dies nicht möglich ist, sollten Sie die Verwendung von virtuellen Patches, API-Sicherheitsgateways oder Web Application Firewalls (WAFs) in Betracht ziehen, um XXE-Angriffe zu erkennen, zu überwachen und zu blockieren. |
Mögliche Angriffsszenarien
Zahlreiche öffentliche XXE-Probleme wurden entdeckt, darunter auch Angriffe auf Embedded-Geräte. XXE tritt an vielen unerwarteten Stellen auf, einschließlich tief verschachtelter Abhängigkeiten. Der einfachste Weg, wenn möglich, ist das Hochladen einer bösartigen XML-Datei: Szenario 1: Der Angreifer versucht, Daten vom Server zu extrahieren: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <foo>&xxe;</foo> Szenario 2: Ein Angreifer durchsucht das private Netzwerk des Servers, indem er die obige ENTITY-Zeile ändert zu: <!ENTITY xxe SYSTEM "https://192.168.1.1/private" >]> Szenario 3: Ein Angreifer versucht einen Denial-of-Service-Angriff, indem er eine potenziell endlose Datei einfügt: <!ENTITY xxe SYSTEM "file:///dev/random" >]> |
Referenzen
OWASP
* OWASP Application Security Verification Standard * OWASP Testing Guide: Testing for XML Injection * OWASP XXE Vulnerability * OWASP Cheat Sheet: XXE Prevention * OWASP Cheat Sheet: XML Security Andere * CWE-611: Improper Restriction of XXE * Billion Laughs Attack (ioactive), (Wikipedia) * SAML Security XML External Entity Attack * Detecting and exploiting XXE in SAML Interfaces |