mediumCWE-693A05:2021

Service Worker Malicioso

Un service worker registrado sin restricciones de scope puede interceptar todas las requests de red de un dominio, incluyendo las de otras páginas.

Cómo Funciona

Los service workers actúan como un proxy de red entre tu app y el servidor. Si un usuario puede registrar un service worker en el scope raíz ('/'), ese worker intercepta todos los fetch del origen — incluyendo formularios de login y llamadas a la API. Vulnerabilidades XSS o endpoints de registro abiertos pueden permitir que atacantes planten service workers persistentes.

Código Vulnerable
// MAL: sin restricción de scope, se registra en la raíz por default
navigator.serviceWorker.register('/sw.js');
Código Seguro
// BIEN: restringe el scope solo a las rutas que tu PWA necesita
navigator.serviceWorker.register('/app/sw.js', {
  scope: '/app/' // solo intercepta requests de /app/*
});

Ejemplo Real

Investigadores demostraron XSS persistente via service workers en sitios que permitían JavaScript proporcionado por usuarios o endpoints de registro de SW abiertos. Una vez registrado, el SW malicioso sobrevive a recargas de página y puede exfiltrar credenciales indefinidamente.

Cómo Prevenirlo

  • Siempre establece un scope explícito al registrar service workers
  • Sirve los archivos de service worker con headers 'Service-Worker-Allowed' restringidos a la ruta de tu app
  • Agrega un header Content-Security-Policy que restrinja las fuentes de scripts
  • Audita qué URLs pueden registrar service workers y requiere autenticación para esos endpoints

Tecnologías Afectadas

javascriptpwa

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas