← Base de Vulnerabilidades
Injection A05:2021-Security Misconfiguration CVSS 7.5

XXE — Injeção de Entidade Externa XML

XXE permite leitura de arquivos locais (/etc/passwd) e exfiltração OOB via DNS. Veja exemplos de XXE em APIs SOAP, parsers de arquivo e como remediar.

Comum em: APIs SOAP, importação de NF-e/XML, upload de DOCX/XLSX/SVG, configurações XML · Dificuldade: Baixa — payload simples para XXE básico

O Que É XXE

XML External Entity (XXE) Injection ocorre quando parsers XML processam entidades externas definidas pelo usuário. Um atacante pode usar XXE para: ler arquivos locais do servidor (/etc/passwd, chaves SSH, configurações com credenciais), realizar SSRF via entidade de URL externa, e exfiltrar dados via canais OOB (Out-of-Band) como DNS ou HTTP para servidor do atacante — mesmo sem retorno visível (Blind XXE).

Exemplo Real de Ataque

HTTP Request / Response
POST /api/v1/nfe/importar
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nfe [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<nfeProcNFe>
  <infNFe>
    <emit><xNome>&xxe;</xNome></emit>
  </infNFe>
</nfeProcNFe>

HTTP/1.1 200 OK
{"empresa": "root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:..."}

Impacto no Negócio e Compliance

Leitura de arquivos de config com credenciais de banco de dados, chaves de API, certificados privados. Via SSRF chain: comprometimento de metadados cloud. Para aplicações que processam XML de clientes (EDI, NF-e, SOAP, relatórios), qualquer upload de XML é um vetor potencial.

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Como Remediar

# ✅ REMEDIAÇÃO: Desabilitar entidades externas no parser XML
import xml.etree.ElementTree as ET
from defusedxml import ElementTree as dET  # use defusedxml

# ❌ INSEGURO
tree = ET.fromstring(xml_input)

# ✅ SEGURO — defusedxml bloqueia XXE, Billion Laughs e ataques similares
tree = dET.fromstring(xml_input)

# Java: Desabilitar features no DocumentBuilderFactory
# factory.setFeature("http://xml.org/sax/features/external-general-entities", false)
# factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false)
# factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)

Como a Veyronn Detecta Esta Vulnerabilidade

Testamos XXE em todos os endpoints que consomem XML: SOAP, REST com Content-Type xml, upload de documentos (DOCX, SVG, XLSX — todos são XML internamente). Utilizamos payloads OOB com listener externo para detectar Blind XXE.

Pronto para Contratar seu Próximo Pentest?

Adquira nossa avaliação pontual feita pelos melhores profissionais do mercado ou implemente o software da Veyronn 24/7.