Vai à Black Hat? Vamos nos encontrar

Técnico

API4:2023 Consumo Irrestrito de Recursos

June 6, 2023

Stephanie Best
Diretor(a) de Marketing de Produto

A vulnerabilidade de Consumo Irrestrito de Recursos substituiu a Falta de Recursos e Limitação de Taxa no OWASP API Security Top 10, mas, embora o nome tenha mudado, a vulnerabilidade permanece a mesma em sua essência.

As requisições de API consomem recursos como rede, CPU, memória e armazenamento. O número de recursos necessário para atender a uma requisição depende muito da entrada do usuário e da lógica de negócios do endpoint.

As APIs nem sempre impõem restrições ao tamanho ou à quantidade de recursos que podem ser solicitados pelo cliente ou usuário, criando vulnerabilidades de segurança que podem não apenas impactar o desempenho do servidor da API, levando a uma Negação de Serviço (DoS), mas também abrir as portas para ataques de força bruta e enumeração contra APIs que fornecem funcionalidades de autenticação e busca de dados. Isso inclui ameaças automatizadas como quebra de credenciais e de tokens, entre outras.

Impacto Potencial do Consumo Irrestrito de Recursos

Ao determinar o impacto potencial do Consumo Irrestrito de Recursos — o quarto item no OWASP API Security Top 10 — é melhor dividir o impacto desse problema em dois subcomponentes:

  1. Com relação à falta de limitação de recursos, um invasor pode criar uma única chamada de API capaz de sobrecarregar uma aplicação, impactando seu desempenho e capacidade de resposta ou fazendo com que ela pare de responder. Esse tipo de ataque é, por vezes, chamado de DoS em nível de aplicação. No entanto, esses tipos de ataques não impactam apenas a disponibilidade. Eles também podem expor o sistema, a aplicação ou a API a ataques de autenticação e vazamento excessivo de dados.
  2. Com relação à falta de limitação de taxa, um invasor pode criar e enviar grandes volumes de requisições de API para sobrecarregar os recursos do sistema, realizar ataques de força bruta em credenciais de login, enumerar rapidamente grandes conjuntos de dados ou exfiltrar grandes quantidades de informações.

Como é o Consumo Irrestrito de Recursos?

No exemplo acima de falta de limite de recursos, o invasor aumentou os valores de max_return e page_size para o filtro de busca de 250 para 20.000. Esse aumento faria com que a aplicação retornasse um número excessivo de itens em resposta a uma consulta. Isso também poderia fazer com que a aplicação ficasse lenta ou indisponível para todos os usuários.

Exemplo do Mundo Real: o ataque DDoS ao Portal de Impostos da Polônia

Um exemplo muito conhecido desse tipo de ataque são os ataques distribuídos de negação de serviço (DDoS) direcionados a APIs. Um exemplo recente mostra como o principal portal de impostos da Polônia ficou indisponível para os cidadãos poloneses devido a um ataque desta categoria, no qual hackers conseguiram explorar os recursos que sustentam as APIs por trás do serviço central de impostos e torná-lo indisponível por várias horas.

Com autoridades do governo polonês apontando rapidamente para hackers russos, à luz da guerra na Ucrânia, este ataque demonstra como o cenário social e político atual torna a cibersegurança, e a segurança de APIs em particular, ainda mais crucial para empresas e instituições governamentais.

Por que as ferramentas existentes falham em proteger você contra ataques de Consumo Irrestrito de Recursos

Controles de segurança tradicionais, como WAFs, gateways de API, e outros mecanismos de proxy geralmente oferecem limitação de taxa básica ou estática, que são difíceis de aplicar em escala. As equipes de segurança podem não ter conhecimento suficiente sobre o design da aplicação para definir o que é "normal" e, assim, impor limites que impeçam ataques sem impactar a funcionalidade do negócio. WAFs e gateways de API carecem do contexto necessário para informar às equipes de segurança qual deveria ser um valor normal para um parâmetro de API, e eles deixarão passar ataques em que um invasor manipula um único valor de parâmetro de API para sobrecarregar a aplicação. Esses proxies também podem cobrir apenas o tráfego de entrada (ingress), em vez do tráfego de saída (egress), ou seja, solicitações e respostas enviadas para fora.

Como proteger suas APIs contra ameaças de consumo irrestrito de recursos

Uma solução de segurança de API deve ser capaz de identificar chamadas para endpoints de API e alterações nos valores dos parâmetros de API que fujam do uso normal. Isso seria feito analisando todo o tráfego da API para criar uma linha de base do comportamento típico e identificando desvios que fiquem fora dessa linha de base.

No exemplo acima, uma solução de segurança de API terá criado uma linha de base de valores para os parâmetros max_return e page_size e identificará que um valor de 20.000 é anormal. A solução poderia então alertar e bloquear um invasor que crie solicitações de API que se desviem da linha de base.

Para saber mais sobre como a Salt pode ajudar a defender sua organização contra riscos de API, você pode falar com um representante ou agendar uma demonstração personalizada.

Nossas últimas publicações