XXE

sigla

segurançadesenvolvimento web

Significa: XML External Entity

Um ataque que abusa de entidades externas XML para ler arquivos ou alcançar sistemas internos.

Injeção de Entidade Externa XML (do inglês XML External Entity) engana um parser XML para que ele resolva uma entidade externa, permitindo que um atacante leia arquivos locais, alcance serviços internos (SSRF) ou cause negação de serviço. A correção é desabilitar o processamento de DOCTYPE/entidades externas no parser.

O XXE abusa de um recurso que o XML tem e que quase ninguém quer: a capacidade de um documento declarar uma entidade cujo conteúdo é buscado em outro lugar. Um analisador que resolve essas entidades lerá um arquivo local ou fará uma requisição de rede sem hesitar, porque o documento pediu, e devolverá o resultado dentro da saída processada.

As consequências dependem de onde o analisador está. Ler arquivos locais é a demonstração clássica, mas a requisição de rede costuma ser pior, porque transforma o analisador numa primitiva de falsificação de requisição no servidor, com acesso a endereços internos e a endpoints de metadados de nuvem. Variantes cegas exfiltram dados por canais fora de banda mesmo quando o corpo da resposta nunca mostra o resultado, o que torna a vulnerabilidade invisível em testes comuns.

A correção é excepcionalmente limpa para uma classe de vulnerabilidade web. Desabilite por completo a resolução de entidades externas e as declarações de tipo de documento na configuração do analisador, porque praticamente nenhuma aplicação legítima precisa delas, e analisadores modernos cada vez mais já vêm seguros por padrão. O risco que resta são bibliotecas antigas, código herdado e formatos de arquivo que são XML por baixo sem que ninguém pense neles assim, que é como documentos de escritório e metadados de imagem seguem produzindo novas instâncias de um problema supostamente resolvido.

Também conhecido como: xxe

Fontes

Todos os verbetes do glossário