XXE (XML External Entity) to podatność parserów XML, w której atakujący wstawia w dokument XML odwołanie do zewnętrznej encji. Parser może wtedy odczytać pliki z serwera, wykonać zapytania do sieci wewnętrznej lub zablokować usługę.
Jak działa atak XXE?
Dokument XML może definiować encję wskazującą na plik, np. file:///etc/passwd. Jeśli parser ją rozwiąże, zawartość pliku pojawi się w odpowiedzi aplikacji. Atak ma podobną naturę do SSRF, bo serwer sam wykonuje żądania wskazane przez napastnika.
Gdzie występuje?
- API przyjmujące XML, np. SOAP,
- importery plików (XML, SVG, DOCX i XLSX są archiwami XML),
- kanały RSS i dane przetwarzane przez parsery w starszych bibliotekach.
Jak się chronić?
Wyłącz obsługę DTD i zewnętrznych encji w parserze, używaj nowszych wersji bibliotek (większość z nich domyślnie ogranicza to ryzyko) i wybieraj JSON tam, gdzie XML nie jest konieczny. Opis podatności i sposobów obrony zawiera OWASP.