XML External Entity Injection (XXE): o que é e como remediar

Quando lidamos com a segurança da informação, muitas vezes nos concentramos nas vulnerabilidades mais discutidas, como a injeção de SQL ou o Cross-Site Scripting. No entanto, há outras vulnerabilidades, menos visadas, que também podem representar riscos consideráveis. Hoje, vamos nos aprofundar em uma dessas ameaças escondidas, a XML External Entity Injection (XXE), também conhecida por Injeção de Entidade Externa XML.

O que é XML External Entity Injection (XXE)?

A XML External Entity Injection (XXE) é uma vulnerabilidade de segurança da web que permite a um invasor interferir no processamento de dados XML de uma aplicação. Esta vulnerabilidade pode permitir que um invasor visualize arquivos no sistema de arquivos do servidor de aplicação e interaja com qualquer sistema back-end ou externo que a aplicação possa acessar. Em algumas circunstâncias, um invasor pode intensificar um ataque XXE para comprometer o servidor subjacente ou outra infraestrutura back-end, utilizando a vulnerabilidade XXE para realizar Server-Side Request Forgery.

Como as vulnerabilidades XXE surgem?

Algumas aplicações utilizam o formato XML para transmitir dados entre o navegador e o servidor. As aplicações que fazem isso quase sempre usam uma biblioteca padrão ou API de plataforma para processar os dados XML no servidor. As vulnerabilidades XXE surgem porque a especificação XML contém vários recursos potencialmente perigosos, e os analisadores padrão suportam esses recursos mesmo que não sejam normalmente usados pela aplicação.

Como remediar a vulnerabilidade XXE?

A maior parte das vulnerabilidades XXE ocorre porque a biblioteca de análise XML da aplicação suporta recursos XML potencialmente perigosos que a aplicação não precisa ou não pretende utilizar. A maneira mais simples e eficaz de prevenir ataques XXE é desativar esses recursos.

Normalmente, é suficiente desativar a resolução de entidades externas e desativar o suporte para XInclude. Isso geralmente pode ser feito por meio de opções de configuração ou substituindo programaticamente o comportamento padrão. Consulte a documentação de sua biblioteca ou API de análise XML para obter detalhes sobre como desativar as capacidades desnecessárias.

Compreender a XML External Entity Injection (XXE) é uma parte crucial do desenvolvimento seguro de aplicações. Se você deseja se aprofundar mais neste tópico e entender como identificar e explorar essas vulnerabilidades, recomendamos o curso de pentest, do nível básico ao profissional, oferecido pela Solyd Offensive Security. Este curso proporciona um treinamento completo em várias técnicas de penetração, incluindo como identificar e explorar a vulnerabilidade XXE.