XXE: le entità esterne di XML
XML supporta le entità, segnaposto espansi dal parser. Le entità esterne caricano contenuto da un URI:
<?xml version="1.0"?>
<!DOCTYPE r [<!ENTITY x SYSTEM "file:///etc/passwd">]>
<r>&x;</r>Se il parser risolve &x;, il contenuto di /etc/passwd finisce nella risposta. Con http:// diventa SSRF; con entità ricorsive (billion laughs) diventa DoS.
Difesa
Disabilita la risoluzione di DTD ed entità esterne nel parser. In molti linguaggi è una singola opzione (es. libxml_disable_entity_loader nelle vecchie PHP, o configurare la factory in Java con disallow-doctype-decl). Preferisci JSON quando XML non serve.