Pentest em APIs: Por Que Seus Endpoints Estão em Risco

Autenticação fraca, dados excessivos e ausência de rate limiting. As falhas do OWASP API Top 10 e como funciona um pentest de API.

A maioria dos sistemas modernos tem um frontend bem construído, com autenticação, validações e proteções visíveis. Mas por trás existe uma API que qualquer um pode chamar diretamente, sem passar pelo frontend e, muitas vezes, sem as mesmas proteções.

É o cenário mais comum nos pentests de API que realizamos: as vulnerabilidades não estão na interface, estão nos endpoints.

Por Que APIs São Alvos Críticos

APIs expõem diretamente a lógica de negócio. Uma falha em um endpoint pode dar acesso a dados de todos os usuários, permitir operações sem autorização ou vazar informações que nunca deveriam ser públicas. E, ao contrário de uma tela, a API não esconde nada de quem inspeciona o tráfego: cada campo da resposta fica visível no navegador ou no aplicativo.

OWASP API Security Top 10 (edição 2023)

O OWASP API Security Top 10 lista as falhas mais comuns em APIs. Na edição atual:

  1. Autorização quebrada no nível do objeto (BOLA): um usuário acessa dados de outro trocando um ID na requisição. Exemplo: /api/pedidos/12345, e o 12345 não precisa ser um pedido seu.
  2. Autenticação quebrada: tokens sem expiração, sem revogação ou aceitos mesmo após o logout, recuperação de senha frágil.
  3. Autorização quebrada no nível da propriedade: a API devolve campos que o usuário não deveria ver (a resposta traz 40 campos, a tela mostra 5) ou aceita alterar campos que ele não deveria mudar, como o perfil ou o preço.
  4. Consumo de recursos sem limite: sem limite de requisições, de tamanho ou de custo por chamada, força bruta, enumeração e abuso de serviços pagos, como envio de SMS, ficam triviais.
  5. Autorização quebrada no nível da função: um usuário comum chama endpoints administrativos porque a API só esconde o botão, mas não verifica o perfil.
  6. Acesso irrestrito a fluxos de negócio sensíveis: automação de compra de ingressos, criação de contas em massa, uso abusivo de cupons. Nada quebra tecnicamente, mas o negócio sofre.
  7. SSRF (Server-Side Request Forgery): endpoints que buscam URLs informadas pelo usuário podem ser usados para alcançar sistemas internos ou a metadata da nuvem.
  8. Configuração de segurança incorreta: CORS permissivo, mensagens de erro detalhadas, métodos HTTP desnecessários habilitados.
  9. Gestão inadequada do inventário: versões antigas da API (/v1) e ambientes de teste esquecidos no ar, sem as correções da versão atual.
  10. Consumo inseguro de APIs de terceiros: confiar sem validação no que vem de integrações e parceiros.

Repare que quase todas são falhas de autorização e de lógica. Scanners automáticos não sabem que o pedido 12345 é de outro cliente, por isso elas só aparecem em teste manual.

Como Funciona um Pentest de API

O processo começa com o mapeamento dos endpoints, a partir da documentação (Swagger/OpenAPI ou coleção do Postman), do tráfego do aplicativo ou de enumeração. Depois:

  1. Testamos autenticação e autorização em cada endpoint, com usuários de perfis diferentes.
  2. Verificamos o que cada resposta expõe além do necessário.
  3. Testamos manipulação de parâmetros (BOLA, alteração de propriedades protegidas).
  4. Avaliamos limites de requisição e controles contra automação.
  5. Testamos injeção nos campos aceitos pela API.
  6. Procuramos versões antigas, ambientes de teste e endpoints não documentados.

GraphQL Tem Riscos Próprios

APIs GraphQL concentram tudo em um único endpoint, o que muda o teste. Os pontos que mais aparecem: introspecção ligada em produção, que entrega o mapa completo da API; consultas aninhadas sem limite de profundidade ou custo, que derrubam o servidor; agrupamento de várias operações em uma requisição, que contorna limites de tentativa de login; e autorização verificada só no resolver principal, e não nos campos relacionados.

O Que Preparar Antes do Teste

  • Documentação atualizada da API (OpenAPI ou coleção do Postman), quando houver.
  • Pelo menos dois usuários de cada perfil, para testar se um consegue ver ou alterar dados do outro.
  • Um ambiente de homologação parecido com produção, com dados fictícios.
  • Os fluxos críticos do negócio descritos em poucas linhas: pagamento, cadastro, troca de senha, aprovação.

Quem Precisa de Pentest em APIs?

Qualquer sistema que exponha uma API para uso externo: aplicativos mobile, integrações B2B, sistemas SaaS, e-commerce com checkout próprio. Se terceiros ou usuários finais consomem sua API diretamente, ela precisa ser testada, de preferência antes de cada mudança grande e pelo menos uma vez por ano.

APIs internas (microsserviços) também são alvo: se um serviço interno for comprometido, o atacante pode se mover lateralmente pela infraestrutura. E, se a API sustenta um aplicativo, o teste costuma ser feito junto com o pentest mobile.

Perguntas Frequentes

Pentest de API é diferente de pentest web?

Os dois se sobrepõem, mas o foco muda. O pentest web olha a aplicação como o usuário a vê, incluindo o navegador. O pentest de API vai direto aos endpoints, com mais ênfase em autorização, lógica de negócio e exposição de dados, inclusive em chamadas que nenhuma tela usa.

Um scanner de API não resolve?

Scanners ajudam a achar configuração errada e falhas conhecidas, mas não entendem regra de negócio. Saber que um usuário não deveria ver o pedido de outro, ou que um cupom não deveria ser usado cem vezes, exige um teste manual.

Leia também

Fale com a LDL Security sobre Pentest Web e APIs →