O que é SSRF?
Ataques de falsificação de solicitação do lado do servidor, ou SSRF, exploram falhas em aplicações web para acessar recursos internos. Saiba como proteger suas aplicações e APIs.
SSRF é um tipo de falha de segurança que ocorre quando um invasor manipula uma aplicação web ou API para que ela faça solicitações a recursos internos, o que pode resultar em acesso não autorizado, exposição de dados, comprometimento do sistema e execução remota de código. Os invasores contornam a validação de entrada e forçam as aplicações a acessar destinos maliciosos na web, mesmo que estejam protegidas por um firewall ou uma solução de Rede Privada Virtual (VPN).
O que é um ataque SSRF e como ele funciona?
Em um ataque SSRF, o invasor geralmente manipula a entrada usada para especificar a URL de destino de uma solicitação HTTP feita pelo servidor. Isso pode ocorrer quando uma aplicação não valida nem sanitiza uma URL fornecida por um usuário antes de obter dados de um recurso remoto. O invasor pode fazer com que o servidor-alvo envie solicitações a destinos arbitrários, o que pode gerar diversos riscos de segurança.
Esses ataques também podem ocorrer quando o recurso visado mantém relações de confiança com outros sistemas, como um serviço de metadados em nuvem ou APIs de backend, permitindo que um invasor faça solicitações a esses serviços confiáveis e extraia informações confidenciais ou execute ações não autorizadas.
À medida que os aplicativos web modernos oferecem recursos convenientes aos usuários finais, a busca de uma URL tornou-se um cenário comum. Como resultado, a incidência de SSRF está aumentando. Além disso, a gravidade da SSRF aumenta à medida que APIs e serviços em nuvem se tornam mais predominantes e as arquiteturas computacionais, mais descentralizadas e complexas.
A SSRF é um dos 10 principais riscos de segurança de aplicações da OWASP, uma lista amplamente reconhecida dos riscos de segurança mais críticos para aplicações web. A SSRF também é um dos dez principais riscos de segurança da OWASP que são comuns a aplicações e APIs, e exige atenção especial ao implementar soluções de segurança.
Veja como funciona um ataque SSRF:
- O aplicativo permite que a entrada do usuário determine a URL ou o recurso de destino de uma solicitação do lado do servidor. Essa entrada pode vir de parâmetros em uma URL, de dados inseridos pelo usuário em campos de formulário ou de outras fontes de dados.
- O invasor envia uma solicitação especialmente elaborada, manipulando a entrada para direcioná-la a um recurso que deseja acessar ou explorar. Esse recurso pode ser um servidor interno, um serviço de backend, uma API ou outros sistemas internos protegidos por firewalls e inacessíveis pela rede externa.
- O servidor processa a entrada maliciosa do usuário e cria uma solicitação para a URL especificada. Essa solicitação é feita pelo servidor, e não pelo navegador do usuário, o que a torna uma solicitação do lado do servidor.
- Se o servidor visado estiver em uma rede interna, o invasor poderá tentar acessar e obter informações confidenciais de recursos internos e, em seguida, exfiltrar esses dados para um local externo sob seu controle. A SSRF também pode ser usada para verificar portas em sistemas internos, ajudando o invasor a identificar possíveis falhas e vulnerabilidades.
- Ataques de SSRF são particularmente preocupantes em ambientes de nuvem, nos quais as instâncias podem ter acesso a serviços de metadados confidenciais.
- O impacto de um ataque SSRF pode ser grave, abrangendo desde o acesso não autorizado a dados e serviços confidenciais até a exploração de sistemas internos e, inclusive, o comprometimento de ambientes de nuvem inteiros.
Exemplo de um ataque SSRF
Veja como um ataque SSRF pode ocorrer na prática.
Imagine uma aplicação web desprotegida que permite aos usuários fazer upload de imagens para processamento e oferece um recurso para que eles forneçam a URL da imagem que desejam processar. No entanto, em vez de fornecer a URL de uma imagem legítima, o invasor envia uma entrada cuidadosamente elaborada contendo uma URL maliciosa que aponta para um recurso interno no servidor da aplicação, como um arquivo interno ou um banco de dados de back-end. O servidor da aplicação processa a URL maliciosa sem qualquer verificação e, seguindo a entrada do invasor, faz uma solicitação ao recurso interno especificado pela URL para obter dados confidenciais ou consultar um banco de dados e retornar os dados ao invasor.
Depois que o servidor é comprometido, o invasor também pode fazer solicitações a sistemas externos, procurar vulnerabilidades ou interagir com serviços aos quais o servidor tem acesso. O impacto de um ataque de SSRF pode variar de acordo com a arquitetura do sistema e as permissões do servidor comprometido. Esses ataques podem resultar em acesso não autorizado a dados, interrupção de serviços ou comprometimento de sistemas internos.
Três tipos básicos de ataques SSRF
Os ataques de SSRF podem ser classificados em diferentes tipos com base na forma como o invasor interage com o servidor e extrai informações.
Ataque SSRF padrão
Em um ataque SSRF padrão, o invasor injeta uma URL maliciosa como parte da entrada do usuário, fazendo com que o servidor envie uma solicitação ao recurso especificado. O invasor pode observar diretamente a resposta do servidor e coletar informações sobre a rede interna, como formas de recuperar dados ou identificar serviços acessíveis.
Ataque SSRF cego
Em ataques de SSRF cego, o invasor não recebe diretamente a resposta do servidor. Em vez disso, ele confirma indiretamente o sucesso ou o fracasso do ataque de SSRF observando mudanças no comportamento da aplicação.
O invasor envia uma entrada especialmente criada, forçando o servidor a fazer uma solicitação a um recurso externo ou interno. O invasor procura alterações observáveis na atividade da aplicação, como diferenças nas mensagens de erro, nos tempos de resposta ou em outros efeitos colaterais. Essas informações ajudam o invasor a deduzir se o ataque de SSRF foi bem-sucedido, mesmo sem visualizar diretamente a resposta.
Ataque SSRF cego baseado em tempo
Ataques SSRF cegos baseados em tempo exploram atrasos nas respostas do servidor para determinar se a SSRF foi bem-sucedida ou não, sem visualizar diretamente a resposta.
Assim como em outros ataques de SSRF, o invasor envia uma entrada maliciosa, fazendo com que o servidor realize uma solicitação a um recurso externo ou interno. O invasor observa quanto tempo o aplicativo leva para responder. Atrasos no tempo de resposta podem indicar que o ataque de SSRF foi bem-sucedido. O invasor ajusta iterativamente o payload e monitora os atrasos para extrair informações sobre a rede interna ou seus recursos.
Como se proteger contra ataques SSRF
Para se proteger contra ataques SSRF, implemente uma combinação de medidas preventivas de segurança cibernética que incluam:
- Validação de entrada. Valide e higienize rigorosamente os dados fornecidos pelo usuário, especialmente quando a aplicação fizer solicitações a recursos externos. Implemente uma lista de permissões de URLs, permitindo apenas domínios confiáveis ou URLs específicas que a aplicação precise acessar. Garanta que somente os protocolos esperados, como http e https, sejam permitidos e evite autorizar protocolos potencialmente arriscados, como file:// ou ftp://, que são frequentemente explorados em ataques SSRF. Além disso, verifique se as URLs fornecidas pelos usuários seguem os padrões ou formatos esperados, reduzindo a probabilidade de injeção de URLs maliciosas.
- Listas de permissões para hosts e endereços IP. Mantenha uma lista de permissões com os hosts e endereços IP com os quais o aplicativo pode interagir. Isso pode ajudar a restringir as solicitações a destinos confiáveis e previstos, reduzindo a superfície de ataque para SSRF.
- Restrinja o acesso a recursos internos. Implemente a segmentação de rede para limitar a exposição dos recursos internos. Garanta que os servidores voltados para o público externo tenham acesso mínimo aos sistemas e serviços internos. Configure firewalls de aplicações web (WAFs) e controles de acesso para restringir as conexões de saída do servidor da aplicação. Permita apenas conexões necessárias e predefinidas e bloqueie o tráfego de saída desnecessário. Implemente um proxy reverso para atuar como intermediário entre a aplicação e os recursos externos. Configure o proxy para controlar quais recursos externos a aplicação pode acessar, adicionando uma camada extra de controle.
Como essas medidas preventivas ajudam a evitar ataques de SSRF? Vejamos um cenário hipotético.
Um sistema de gerenciamento de conteúdo online permite que os usuários insiram URLs para incorporar imagens externas às suas publicações. Esse sistema processa as URLs fornecidas pelos usuários sem a devida validação de entrada. Ciente dessa falha, um invasor tenta explorar o sistema fornecendo uma URL maliciosa que aponta para um recurso interno, como um endpoint de API interna ou um servidor de banco de dados. No entanto, a equipe de segurança da aplicação aprimora a validação de entrada do sistema para impor regras rigorosas às URLs aceitas. O sistema passa a verificar se as URLs fornecidas pelos usuários seguem os padrões esperados, e a equipe implementa uma lista de permissões de domínios autorizados para recursos externos.
O invasor envia a publicação com uma URL especialmente criada para explorar a falha de SSRF, mas a validação de entrada agora detecta a URL maliciosa. A validação de entrada rejeita a URL maliciosa durante o processamento, impedindo que a aplicação faça uma solicitação ao recurso interno especificado pelo invasor. O ataque de SSRF é impedido pela validação de entrada aprimorada: o sistema não permite solicitações não autorizadas a recursos internos, preservando a integridade e a segurança dos sistemas internos.
Ao implementar a validação de entrada, a aplicação pode rejeitar ou sanitizar entradas maliciosas, impedindo solicitações não autorizadas e reduzindo o risco de ataques de SSRF.
Como a F5 pode ajudar
Os ataques de SSRF são perigosos porque permitem que invasores contornem medidas tradicionais de segurança de rede, como firewalls e controles de acesso, para acessar informações e recursos confidenciais que normalmente são protegidos na rede interna de uma organização e não devem ser acessados diretamente pela Internet. Como os ataques de SSRF representam riscos significativos à confidencialidade, à integridade e à disponibilidade de dados e sistemas, as organizações devem implementar medidas de segurança robustas e práticas recomendadas, incluindo WAFs, validação adequada de entradas, controles de acesso e segmentação de rede, para mitigar a ameaça de vulnerabilidades de SSRF e se proteger contra possíveis explorações.
As soluções F5 WAF bloqueiam e mitigam um amplo espectro de riscos decorrentes do OWASP Top 10, incluindo SSRF. As soluções F5 WAF combinam proteções baseadas em assinaturas e comportamento, incluindo inteligência contra ameaças do F5 Labs e segurança automatizada por meio de aprendizado de máquina (ML), para acompanhar as ameaças emergentes. Elas reduzem o esforço e a complexidade de proteger aplicações de forma consistente em ambientes de nuvem, locais e de borda, além de oferecerem diversas opções de implantação. O BIG-IP Advanced WAF é uma solução robusta que protege suas aplicações contra ataques de SSRF e oferece uma medida provisória essencial contra vulnerabilidades de software, enquanto o F5 Distributed Cloud WAF protege aplicações em qualquer lugar, simplificando drasticamente as operações por meio de uma plataforma de segurança como serviço fácil de usar.
As soluções de proteção de aplicações web e APIs (WAAP) da F5 protegem toda a superfície de ataque das aplicações modernas com proteções abrangentes que incluem WAF, segurança de APIs, mitigação de DDoS das camadas 3 a 7 e defesa contra bots, automação maliciosa e ameaças automatizadas. A plataforma distribuída facilita a implantação de políticas consistentes e o dimensionamento da segurança em todo o seu ambiente de aplicações e APIs, independentemente de onde estejam hospedadas, além de integrar a segurança ao ciclo de vida das APIs e a ecossistemas mais amplos.

