mediumCWE-346A01:2021

PostMessage Sin Verificar Origen

Handlers de window.addEventListener('message') que procesan mensajes sin verificar event.origin, permitiendo que cualquier sitio web envíe comandos al handler de mensajes de tu app.

Cómo Funciona

postMessage se usa para comunicación cross-origin entre iframes. Cuando escuchas mensajes sin verificar el origen, cualquier página en internet puede enviar un mensaje a tu ventana (si pueden obtener una referencia via popup o iframe). Si tu handler realiza acciones basadas en los datos del mensaje, el atacante controla esas acciones.

Código Vulnerable
// MAL: sin verificar origen — cualquier sitio puede enviar mensajes
window.addEventListener('message', (event) => {
  if (event.data.type === 'navigate') {
    window.location.href = event.data.url; // open redirect via postMessage
  }
});
Código Seguro
// BIEN: verifica el origen antes de procesar
window.addEventListener('message', (event) => {
  if (event.origin !== 'https://padre-confiable.com') return;
  if (event.data.type === 'navigate') {
    const allowed = ['/dashboard', '/configuracion'];
    if (allowed.includes(event.data.url)) window.location.href = event.data.url;
  }
});

Ejemplo Real

Las vulnerabilidades de bypass de origen en postMessage se han encontrado en widgets de pago, popups de OAuth y widgets de chat. Los atacantes pueden redirigir usuarios, robar tokens pasados via postMessage o disparar acciones en el frame embebido. HackerOne tiene cientos de reportes para esta clase.

Cómo Prevenirlo

  • Siempre verifica event.origin contra una allowlist hardcodeada antes de procesar cualquier mensaje
  • Valida la estructura y contenido de event.data — no confíes en él ciegamente
  • Usa un protocolo/sistema de tipos de mensajes específico e ignora tipos de mensajes desconocidos
  • Al enviar mensajes, siempre especifica el parámetro targetOrigin (nunca uses '*')

Tecnologías Afectadas

ReactNext.jsjavascript

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas