XML External Entities acontece por meio de arquivos XML maliciosos provenientes de fontes externas (como upload de notas fiscais)
Dado um sistema mal configurado, que retorna dados que recebeu na request, o seguinte XML iria expor um arquivo privado do servidor:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE descricao [ <!ELEMENT descricao ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd!"> ]> <cadastro> <email>douglas@verfault.com</email> <senha>V%2aa(sxcK12t9</senha> <descricao>&xxe;</descricao> </cadastro>
descricao
sem tratamento algum, o atacante terá acesso a informação contida pelo arquivo /etc/passwd
Prevenção
A grande maioria das informações disponÃveis sobre esse ataque estão disponÃveis nesse link. Mas as prevenção são basicamente:
- Bloquear recursos de XML ENtity em operações XML com arquivos não gerênciados.
- Validar e sanitizar as entradas não gerenciadas.