Server-Side Request Forgery (SSRF): o que é e como remediar

O Server-Side Request Forgery (SSRF) é uma vulnerabilidade de segurança crítica que pode surgir em uma aplicação web. Devido à sua gravidade, a SSRF ganhou um lugar distinto na lista OWASP Top 10 de 2021, que lista as principais ameaças à segurança de aplicações web.

Em essência, uma vulnerabilidade SSRF permite a um atacante falsificar solicitações a partir do servidor back-end de uma aplicação vulnerável. Isto pode ser particularmente perigoso, pois o atacante pode direcionar sistemas internos que estão protegidos por firewalls e que não estão acessíveis a partir da rede externa. Ademais, um atacante pode aproveitar a SSRF para acessar serviços disponíveis através da interface de loopback (127.0.0.1) do servidor explorado.

Como a SSRF ocorre?

A vulnerabilidade SSRF surge quando um atacante ganha controle total ou parcial da requisição enviada pela aplicação web. Um exemplo comum é quando um atacante consegue controlar a URL do serviço de terceiros para o qual a aplicação web faz uma requisição.

Como remediar a SSRF?

A mitigação do SSRF vai além de simplesmente aplicar listas negras e expressões regulares à entrada do usuário. Na verdade, essas abordagens são muitas vezes ineficazes e os atacantes frequentemente encontram meios de contorná-las.

Uma abordagem robusta para evitar a SSRF é utilizar listas de permissões com os hostnames (nomes DNS) ou endereços IP que a sua aplicação precisa acessar. Além disso, é importante garantir que a resposta recebida seja a esperada e que o corpo bruto da resposta do pedido enviado pelo servidor nunca seja entregue ao cliente.

Outra medida de segurança importante é desativar esquemas de URL não utilizados. Se a sua aplicação só usa HTTP ou HTTPS para fazer requisições, permita apenas esses esquemas de URL. Isso ajudará a prevenir que o atacante use a aplicação web para fazer requisições usando esquemas potencialmente perigosos.

Por fim, sempre que possível, é aconselhável habilitar a autenticação, mesmo para serviços na rede local. Isso porque serviços como Memcached, Redis, Elasticsearch e MongoDB não requerem autenticação por padrão. Um atacante pode explorar vulnerabilidades SSRF para acessar alguns desses serviços sem qualquer autenticação, expondo assim suas informações sensíveis.

Para aprender mais sobre como identificar e explorar esse tipo de ataque, é altamente recomendável se inscrever no curso de pentest da Solyd Offensive Security. Este curso prático ensinará como identificar vulnerabilidades SSRF e outras, e como explorá-las de forma ética, para aprimorar a segurança de suas aplicações web. Lembrando que o objetivo é sempre melhorar a segurança, não a comprometer.