Dieser Beitrag aus unserer Reihe zur OWASP Top 10, den zehn häufigsten Sicherheitslücken in Webapplikationen, beschäftigt sich mit „XML External Entities“ (kurz XXE, zu Deutsch „Externe XML-Entitäten“).

XML-Prozessoren, die veraltet oder einfach nur schlecht konfiguriert sind, verarbeiten ungefilterte Referenzen auf externe Entitäten innerhalb von XML-Dokumenten. Solche externen Entitäten können dann dazu eingesetzt werden, um externen Schadcode nachzuladen und somit interne Dateien offenzulegen oder beliebige weiterführende Angriffe auszuführen.

Beispielszenarien

Anwendungen und insbesondere XML-basierte Webservices können u. a. in den folgenden Fällen anfällig für Angriffe sein:

  • Die Anwendung akzeptiert direkt XML oder XML-Uploads, auch aus nicht vertrauenswürdigen Quellen, oder fügt nicht vertrauenswürdige Daten in XML-Dokumente ein, die anschließend von einem XML-Prozessor ausgeführt werden.

Ein Angreifer könnte demzufolge folgenden Aufruf in einem XML-Dokument einfügen und somit sicherheitsrelevante Daten – in diesem Fall Informationen über Benutzerkonten auf einem UNIX-System – vom Server extrahieren lassen:

<!ENTITY xxe SYSTEM “file:///etc/passwd” >

Oder einen Denial-of-Service (DoS)-Angriff verursachen, indem eine potenziell endlose Datei eingefügt wird und daraufhin die Webapplikation ihren Dienst einstellt:

<!ENTITY xxe SYSTEM “file:///dev/random” >

  • Der XML-Prozessor in der Anwendung oder SOAP-basierte Webservices haben Document Type Definitions (DTDs) aktiviert. Durch DTDs kann die Struktur der Elemente und Attribute eines XML-Dokumentes definiert werden. Auf diese Art der Validierung kann clientseitig Einfluss genommen werden, daher muss der XML-Prozessor der Anwendung eigene Strukturdefinitionen vorhalten.
  • Die Anwendung verwendet SAML zur Identitätsverarbeitung im Rahmen einer AAI-Föderation bzw. im Zuge des Single Sign On (SSO). SAML verwendet für die verteilten Identitätsbekundungen XML, um Angehörigen unterschiedlicher Institutionen Zugriff auf geschützte Informationsangebote zu ermöglichen.
  • Die Anwendung verwendet SOAP vor der Version 1.2 und ist damit anfällig für XXE-Angriffe, wenn XML-Entitäten an das SOAP-Framework übergeben werden.

Gegenmaßnahmen

Grundsätzlich ist die Schulung von Entwicklern unerlässlich, um die Sicherheitsproblematik rund um XXE zu erkennen und zu beheben. Darüber hinaus sollten folgende Ratschläge aufgegriffen werden:

  • Es sollten möglichst weniger komplexe Datenformate, wie etwa JSON, verwendet werden. Auch die Serialisierung von sensiblen Daten sollte vermieden werden.
  • XML-Prozessoren und in diesem Zusammenhang stehende Bibliotheken müssen aktuell gehalten werden; SOAP sollte ausschließlich in der Version 1.2 oder höher eingesetzt werden. Für eine Prüfroutine werden am besten Werkzeuge zur Automatisierung eingesetzt.
  • Die Verarbeitung von externen XML-Entitäten und DTDs sollte in allen XML-Parsern der Anwendung deaktiviert werden (s. OWASP Cheat Sheet: XXE Prevention). Um bösartige Daten in XML-Dokumenten, Headern oder Knoten zu verhindern, sollte zudem eine positive serverseitige Eingabevalidierung (Whitelisting) implementiert werden.
  • Eingehende XML-Daten der Upload-Funktionalität für XML- oder XSL-Dateien sollten mit Hilfe der XSD-Validierung oder ähnlichem validiert werden.
  • Der Quellcode kann mit SAST-Tools (Source Code Analysis Tools) auf XXE überprüft werden.

Sollten die aufgezeigten Gegenmaßnahmen nicht möglich sein, kann virtuelles Patching – am besten als mehrschichtiger Ansatz – zur gezielten Absicherung von konkreten Sicherheitslücken implementiert werden, ohne die Applikationslogik zu verändern. Ein virtueller Patch verändert demnach nicht die Applikation bzw. den Quellcode. Vielmehr werden Sicherheitsregeln etabliert, die das Ausnutzen der Sicherheitslücke verhindern. Allen bekannten Lücken ist dabei eine sogenannten CVE-Nummer (Common Vulnerabilities and Exposures) zugewiesen, welche sich bspw. mittels eines Penetrationstests identifizieren lassen. Als zusätzlichen – jedoch keinesfalls einzigen – Schutz können API-Sicherheitsgateways oder Web Application Firewalls (WAFs) herangezogen werden, um XXE-Angriffe zu erkennen, zu überwachen und letztendlich zu blockieren.

Zusammenfassung

Viele ältere XML-Prozessoren erlauben die Spezifikation einer externen Entität, die während der XML-Verarbeitung dereferenziert und ausgewertet wird. Angreifer können daraufhin anfällige XML-Verarbeiter manipulieren, indem sie XML direkt hochladen oder bösartige Inhalte einem XML-Dokument hinzufügen. Im Endeffekt könnten über diesen Angriffsvektor bei Missachtung der vorgeschlagenen Gegenmaßnahmen u. a. vertrauenswürdige Daten extrahiert, Remote-Anfragen vom Server ausgeführt, interne Systeme gescannt oder auch DoS-Angriffe ausgeführt werden. Mit dem Förderprogramm „go-digital“ des BMWi gibt es bei uns sogar eine finanzielle Unterstützung für Beratungsdienstleistungen im Bereich IT-Sicherheit.