XXE-Injection (XML External Entity) ist eine Schwachstelle, bei der ein XML-Parser vom Angreifer definierte Entitäten mit Verweisen auf lokale Dateien oder URLs verarbeitet, sodass Daten abfließen oder der Server Anfragen sendet.
Wie XXE-Injection funktioniert
XML erlaubt es, in einer Dokumenttypdefinition (DTD) Entitäten zu deklarieren – Platzhalter, die der Parser durch Inhalte ersetzt. Eine externe Entität bezieht diesen Inhalt von einer URI. Akzeptiert ein Parser DTDs aus nicht vertrauenswürdigen Eingaben, kann ein Angreifer etwa Folgendes senden:
<!DOCTYPE x [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><x>&xxe;</x>
Der Server liest dann die Datei und gibt sie womöglich in der Antwort zurück. Die Schwachstelle ist als CWE-611 katalogisiert. Je nach Parser und Konfiguration kann XXE zu Folgendem führen:
- Auslesen von Konfigurationsdateien, Quellcode und Zugangsdaten, ähnlich wie bei Directory Traversal;
- Server-Side Request Forgery gegen interne Dienste und Metadaten-Endpunkte in der Cloud;
- „blinder“ Datenexfiltration über Out-of-Band-Anfragen per DNS oder HTTP;
- Denial of Service durch rekursive Entitätenexpansion (der „Billion Laughs“-Angriff) und in seltenen Fällen Codeausführung.
Warum XXE relevant ist
XML steckt an vielen Stellen: in SOAP-Webservices, SAML-Nachrichten für Single Sign-on, RSS-Feeds, SVG-Bildern und Office-Dokumenten wie DOCX und XLSX, die ZIP-Archive aus XML-Dateien sind. Ältere Parser in Java, .NET und PHP verarbeiteten externe Entitäten standardmäßig. In den OWASP Top 10 von 2017 hatte XXE eine eigene Kategorie (A4); heute gehört es zu „Security Misconfiguration“.
So verhindern Sie XXE-Injection
- DTD-Verarbeitung und die Auflösung externer Entitäten in jedem XML-Parser deaktivieren.
- Gehärtete Bibliotheken wie defusedxml für Python verwenden und Parser aktuell halten.
- Einfachere Formate wie JSON bevorzugen, wo XML nicht nötig ist.
- Hochgeladene Dateien prüfen und ausgehende Verbindungen von Servern einschränken.





