Hack tutorial: scopriamo un attacco XML External Entities (XXE)

Aggiornamento: mag 31

Autore: Damiano Capo

Data Pubblicazione: 22/04/2021


L'XXE è un tipo di attacco che viene sferrato nei confronti di un'applicazione che non analizza correttamente l'input XML. Esso si verifica quando l'input XML, contenente un riferimento a un'entità esterna, viene elaborato da un parser XML configurato in modo debole.


Le conseguenze dell'attacco possono essere gravi e possono arrivare alla divulgazione di dati riservati, a delle negazioni del servizio (DoS), a Server side request forgery, a port scanning dal punto di vista della macchina in cui si trova il parser e altri impatti sul sistema.


Lo standard XML 1.0 definisce la struttura di un documento XML.


Questo standard definisce un concetto chiamato “entità”, che è sostanzialmente un'unità di archiviazione di qualche tipo. Esistono diversi tipi di entità, entità esterne analizzate da parametri / generali spesso abbreviate in entità esterne, che possono accedere ad un contenuto locale o remoto tramite un identificatore di sistema dichiarato.


Si presume che l'identificatore di sistema sia un URI che può essere dereferenziato (accessibile) dal processore XML durante l'elaborazione dell'entità.


Il processore XML quindi sostituisce le occorrenze dell'entità esterna denominata con i contenuti dereferenziati dall'identificatore di sistema. Se l'identificatore di sistema contiene dati contaminati e il processore XML de referenzia questi dati contaminati, il processore XML può divulgare informazioni riservate normalmente non accessibili dall'applicazione.