XXE: externe XML-Entitäten
Kurz: XXE („XML External Entity”) nutzt aus, dass manche XML-Parser in einem Dokument auf externe Dateien oder Adressen verweisen dürfen. So kann ein manipuliertes Dokument Serverdateien auslesen.
Genauer: XML erlaubt in der DOCTYPE-Angabe sogenannte Entitäten, die auf Dateien (file://) oder URLs zeigen. Ein Parser mit Standardeinstellungen lädt sie und setzt den Inhalt in das Dokument ein.
Im Detail
- Folgen: Auslesen lokaler Dateien, Anfragen an interne Dienste (SSRF), Dienstausfall durch riesige verschachtelte Entitäten („Billion Laughs”).
- Wo es auftritt: Dort, wo XML angenommen wird: SOAP-Schnittstellen, SVG-Uploads, Office-Dateien (DOCX, XLSX sind ZIP mit XML), RSS, SAML.
- Gegenmittel: DTDs und externe Entitäten im Parser abschalten (bei den meisten Bibliotheken eine Einstellung, zum Beispiel
disallow-doctype-decl), aktuelle Bibliotheken nutzen, wo möglich JSON statt XML. - Prüfen: Testdokumente mit Entitäten in Entwicklung und Tests, Abhängigkeitsprüfungen.
- Einordnung: Steht in der Liste der häufigsten Web-Risiken (OWASP).
Siehe auch: SQL-Injection