highCWE-918A10:2021

Server-Side Request Forgery (SSRF)

El atacante engaña al servidor para hacer requests a recursos internos — accediendo a metadata de cloud, APIs internas o servicios que no deberían ser alcanzables públicamente.

Cómo Funciona

SSRF ocurre cuando una aplicación server-side hace fetch de una URL proporcionada por el usuario sin validación adecuada. El atacante puede hacer que el servidor pida recursos internos como endpoints de metadata de cloud (169.254.169.254), APIs internas o bases de datos solo accesibles desde dentro de la red. En entornos cloud, el endpoint de metadata puede exponer credenciales IAM, llevando a un takeover completo de la cuenta.

Código Vulnerable
app.post('/api/fetch-url', async (req, res) => {
  const response = await fetch(req.body.url);
  const data = await response.text();
  res.json({ data });
});
Código Seguro
import { isAllowedUrl } from './url-validator';
app.post('/api/fetch-url', async (req, res) => {
  if (!isAllowedUrl(req.body.url)) {
    return res.status(400).json({ error: 'URL not allowed' });
  }
  const response = await fetch(req.body.url);
  const data = await response.text();
  res.json({ data });
});

Ejemplo Real

La brecha de Capital One (2019) fue causada por SSRF. Un atacante explotó un WAF mal configurado para hacer requests al endpoint de metadata de AWS, obteniendo credenciales IAM que dieron acceso a buckets S3 con 106 millones de registros de clientes.

Cómo Prevenirlo

  • Valida y haz whitelist de URLs y dominios permitidos
  • Bloquea requests a rangos IP internos (10.x, 172.16.x, 192.168.x, 169.254.x)
  • Usa una librería de parsing de URLs para prevenir técnicas de bypass
  • Implementa controles a nivel de red para restringir tráfico saliente

Tecnologías Afectadas

Node.jsReactNext.jsPythonGoJavaPHPC#

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas