mediumCWE-352A01:2021

Cookies Sin Atributo SameSite

Cookies sin el atributo SameSite (o configuradas como None sin Secure), habilitando cross-site request forgery al permitir que las cookies se envíen con requests de origen cruzado.

Cómo Funciona

Por defecto, las cookies se envían con cada request a tu dominio, incluyendo requests disparados desde otros sitios. SameSite=Lax previene que las cookies se envíen en requests POST de origen cruzado (el vector CSRF más común) mientras permite la navegación normal. Sin él, CSRF es trivialmente posible.

Código Vulnerable
// MAL: sin SameSite — cookie enviada en todos los requests de origen cruzado
res.setHeader('Set-Cookie', `session=${token}; HttpOnly; Secure; Path=/`);
Código Seguro
// BIEN: SameSite=Lax es un buen default
res.setHeader(
  'Set-Cookie',
  `session=${token}; HttpOnly; Secure; Path=/; SameSite=Lax`
);

Ejemplo Real

Antes de que los navegadores tomaran SameSite=Lax como default en 2020, CSRF era trivialmente fácil. Muchas apps viejas aún configuran SameSite=None explícitamente (para contextos third-party) sin entender el riesgo de CSRF que están re-habilitando.

Cómo Prevenirlo

  • Usa SameSite=Lax como tu default — protege contra CSRF mientras permite la navegación normal
  • Usa SameSite=Strict para las cookies más sensibles (sesiones de admin)
  • Solo usa SameSite=None si genuinamente necesitas la cookie en un iframe cross-site, y siempre combínalo con Secure
  • Los navegadores modernos defaultean a Lax, pero configúralo explícitamente para cubrir navegadores más viejos

Tecnologías Afectadas

nodejsNext.jsPythonPHP

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas