lowCWE-74A03:2021

Inyección de Notificaciones Push

Incluir input del usuario sin sanitizar en payloads de notificaciones push permite a los atacantes crear notificaciones engañosas a nombre de tu app.

Cómo Funciona

Los cuerpos de notificaciones push aparecen con el ícono y nombre de tu app en las pantallas de bloqueo de los usuarios. Si un atacante puede controlar el texto (vía un nombre de usuario, nombre de producto o campo de mensaje), puede hacer que tu app muestre contenido de phishing, alertas de pago falsas o URLs maliciosas a otros usuarios.

Código Vulnerable
// MAL: datos controlados por el usuario directamente en el cuerpo de la notificación
await admin.messaging().send({
  token: tokenDestinatario,
  notification: {
    title: `Mensaje de ${usuario.displayName}`, // el atacante controla displayName
    body: textoMensaje  // contenido de mensaje sin validar
  }
});
Código Seguro
// BIEN: sanitiza todos los campos controlados por usuarios en el contenido de notificación
const nombreSeguro = sanitizeText(usuario.displayName, { maxLength: 50 });
const cuerpoSeguro = sanitizeText(textoMensaje, { maxLength: 200, noUrls: true });
await admin.messaging().send({
  token: tokenDestinatario,
  notification: { title: `Mensaje de ${nombreSeguro}`, body: cuerpoSeguro }
});

Ejemplo Real

Las apps de mensajería han sido abusadas para enviar notificaciones push con alertas del sistema falsas poniendo nombres como 'Alerta de Seguridad de Apple' o 'URGENTE: Tu cuenta ha sido comprometida' como nombre de pantalla.

Cómo Prevenirlo

  • Sanitiza todos los strings controlados por usuarios usados en los campos de título y cuerpo de notificaciones
  • Establece límites de longitud máxima para el contenido de notificaciones
  • Elimina URLs de los cuerpos de notificaciones si el diseño de tu app no las requiere
  • Considera escapar o eliminar caracteres especiales y emojis que podrían usarse para imitar la UI del sistema

Tecnologías Afectadas

Node.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas