SSRF
siglasegurançanuvemdesenvolvimento web
Server-Side Request Forgery: enganar um servidor para fazer requisições em nome do atacante - alcançando endereços internos que o atacante jamais alcançaria direto.
A técnica por trás da violação da Capital One em 2019: uma requisição forjada ao serviço de metadados, credenciais para fora.
A falsificação de requisição no lado do servidor transforma o servidor num intermediário confuso. A aplicação aceita uma URL, busca aquele conteúdo por um motivo legítimo, como renderizar uma prévia ou importar um recurso, e o atacante fornece uma URL apontando para onde a aplicação jamais deveria chegar. Como a requisição parte do servidor, ela chega de uma posição confiável dentro da rede.
Ambientes de nuvem pioraram bastante isso. Serviços de metadados de instância vivem num endereço interno conhecido e entregam credenciais a quem perguntar do lugar certo, então um SSRF bem-sucedido contra uma carga em nuvem pode escalar de uma busca HTTP estranha para credenciais de API válidas num único passo. Foi por isso que os endpoints de metadados ganharam proteções próprias.
A defesa é mais difícil do que parece porque listas de bloqueio perdem. Codificações decimais e hexadecimais de IP, redirecionamentos para um endereço interno depois de uma busca externa, nomes DNS que resolvem para loopback e representações IPv6 derrotam a filtragem ingênua. Listar explicitamente os destinos permitidos é a defesa que sobrevive ao contato com um atacante determinado, e classificar a URL antes de buscá-la é a versão operacional desse princípio.