Guia Técnico

Como Mitigar SSRF em Aplicações Modernas

Server-Side Request Forgery (SSRF) permite que atacantes forcem o servidor a fazer requisições a destinos não autorizados. Aprenda a identificar e mitigar essa vulnerabilidade crítica.

O que é SSRF?

Server-Side Request Forgery (SSRF) é uma vulnerabilidade que permite que um atacante force o servidor a fazer requisições HTTP para destinos arbitrários, incluindo recursos internos que normalmente não estariam acessíveis externamente.

Cenários Comuns de SSRF

  • APIs que aceitam URLs: Endpoints que processam URLs fornecidas pelo usuário para buscar conteúdo externo
  • Upload de imagens por URL: Funcionalidades que permitem upload de imagens através de URLs
  • Webhooks: Sistemas que permitem configuração de URLs de callback
  • Integrações de terceiros: Funcionalidades que fazem requisições a serviços externos baseadas em input do usuário

Tipos de SSRF

1. SSRF Básica

O atacante consegue ver a resposta da requisição forjada. Permite leitura direta de dados de serviços internos, metadados de cloud (AWS, GCP, Azure) e arquivos locais.

2. Blind SSRF

O atacante não vê a resposta diretamente, mas pode inferir informações através de timing, comportamento da aplicação ou canais out-of-band (DNS, HTTP callbacks).

3. SSRF Encadeada

Combinação de SSRF com outras vulnerabilidades para amplificar o impacto, como SSRF + RCE através de serviços internos vulneráveis ou SSRF + XXE para exfiltração de dados.

Riscos e Impactos

  • Acesso a serviços internos: Bancos de dados, APIs internas, painéis administrativos e serviços de infraestrutura
  • Vazamento de dados sensíveis: Credenciais, tokens de API, metadados de cloud e informações de configuração
  • Pivoting interno: Uso do servidor comprometido como proxy para atacar outros sistemas na rede interna
  • Bypass de controles de segurança: Contornar firewalls, WAFs e controles de acesso baseados em IP

Estratégias de Mitigação

1. Validação e Whitelisting de URLs

  • Implementar whitelist rigorosa de domínios e protocolos permitidos
  • Validar e sanitizar todas as URLs de entrada antes de processar
  • Bloquear IPs privados, localhost e ranges internos (RFC 1918)
  • Prevenir bypass através de redirects, DNS rebinding e encodings alternativos

2. Restrições de Rede e Segmentação

  • Configurar firewalls para bloquear acessos desnecessários a recursos internos
  • Implementar segmentação de rede (VLANs, security groups)
  • Usar proxies dedicados para requisições externas com políticas restritivas
  • Aplicar princípio de menor privilégio em permissões de rede

3. Bibliotecas e Frameworks Seguros

  • Utilizar bibliotecas HTTP que suportam validação de URLs e bloqueio de IPs privados
  • Desabilitar redirects automáticos ou validar destinos de redirect
  • Implementar timeouts agressivos para requisições externas
  • Limitar tamanho de resposta para prevenir DoS

4. Monitoramento e Logging

  • Registrar todas as requisições externas com origem, destino e resultado
  • Implementar alertas para padrões suspeitos (tentativas de acesso a IPs privados)
  • Monitorar tráfego de rede para detectar comportamentos anômalos
  • Realizar análise regular de logs para identificar tentativas de exploração

5. Testes e Validação Contínua

  • Incluir testes de SSRF em pentests regulares e code reviews
  • Implementar testes automatizados para validar controles de SSRF
  • Manter inventário atualizado de endpoints que processam URLs externas
  • Realizar threat modeling para identificar novos vetores de SSRF

Exemplos Práticos de Mitigação

Exemplo 1: Validação de URL em Node.js

// Validação básica de URL com whitelist
function isUrlSafe(url) {
  const allowedDomains = ['example.com', 'api.example.com'];
  const parsed = new URL(url);
  
  // Bloquear IPs privados
  if (parsed.hostname.match(/^(10|172\.16|192\.168)\./)) {
    return false;
  }
  
  // Verificar whitelist
  return allowedDomains.includes(parsed.hostname);
}

Exemplo 2: Configuração de Firewall

# Bloquear acesso a ranges privados
iptables -A OUTPUT -d 10.0.0.0/8 -j DROP
iptables -A OUTPUT -d 172.16.0.0/12 -j DROP
iptables -A OUTPUT -d 192.168.0.0/16 -j DROP
iptables -A OUTPUT -d 169.254.0.0/16 -j DROP

Conclusão

SSRF é uma vulnerabilidade crítica que pode expor recursos internos e comprometer a segurança de toda a infraestrutura. A mitigação efetiva requer uma abordagem em camadas que combine validação rigorosa de entrada, controles de rede, monitoramento contínuo e testes regulares.

Implementar essas práticas desde o início do desenvolvimento é fundamental para prevenir SSRF e proteger seus sistemas contra ataques sofisticados. Considere incluir testes específicos de SSRF em seus pentests regulares para garantir que seus controles permaneçam efetivos.

Precisa de um pentest profissional?

Nossa equipe pode identificar e ajudar a corrigir vulnerabilidades SSRF e outras falhas críticas

Solicitar Orçamento