highCWE-611A05:2021

XXE — Inyección de Entidad Externa XML

Parsers XML configurados para procesar referencias a entidades externas, permitiendo a atacantes leer archivos arbitrarios del servidor o disparar SSRF con un payload XML malicioso.

Cómo Funciona

XML soporta una función llamada entidades externas — referencias a archivos externos o URLs embebidas en el documento con `<!ENTITY`. Si el parser las resuelve, un atacante puede enviar XML como `<!ENTITY secreto SYSTEM 'file:///etc/passwd'>` y el servidor leerá y devolverá ese archivo. La mayoría de los parsers habilitan esto por defecto.

Código Vulnerable
// MAL: parser XML con entidades externas habilitadas (por defecto)
import { parseStringPromise } from 'xml2js';
export async function POST(req: Request) {
  const body = await req.text();
  const data = await parseStringPromise(body); // resuelve entidades externas
  return Response.json(data);
}
Código Seguro
// BIEN: deshabilita entidades externas
import { parseStringPromise } from 'xml2js';
export async function POST(req: Request) {
  const body = await req.text();
  // xml2js no soporta entidades externas, pero para parsers que sí:
  const data = await parseStringPromise(body, {
    explicitArray: false,
    // Si usas libxmljs: pon noent: false
  });
  return Response.json(data);
}

Ejemplo Real

XXE fue usado en el breach de Facebook de 2019 (via un sistema tercero) y en numerosos ataques empresariales. Está en el OWASP Top 10 y se encuentra frecuentemente en features de subida de documentos (los archivos DOCX, SVG y XLSX son XML por dentro).

Cómo Prevenirlo

  • Deshabilita el procesamiento de entidades externas en la configuración de tu parser XML
  • Usa un parser moderno que deshabilite entidades externas por defecto (xml2js, fast-xml-parser con configuración por defecto)
  • Valida que los archivos subidos son lo que dicen ser antes de parsearlos
  • Considera JSON en lugar de XML para APIs — no tiene esta clase de ataque

Tecnologías Afectadas

nodejsPythonJavaPHP

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas