API 5 min de leitura

Pentest de API: guia pelo OWASP API Security Top 10, escopo e o que entregar ao time

Como funciona um pentest de API (REST, GraphQL, gRPC): o OWASP API Security Top 10 como mapa de cobertura, como escopar, o que entregar ao time de teste e o que esperar do relatório.

Também em ENESPT
Pentest de API: guia pelo OWASP API Security Top 10, escopo e o que entregar ao time

Resumo: pentest de API é o teste de intrusão focado nas interfaces que seu frontend, seu app mobile e seus parceiros consomem — REST, GraphQL, gRPC e webhooks. A referência de cobertura é o OWASP API Security Top 10 (2023), liderado por falhas de autorização, que scanners não detectam. Um bom pentest de API é gray box: com especificação OpenAPI, contas por perfil e pelo menos dois usuários por papel.

Em produtos modernos, a API é o produto. O SPA, o app mobile e as integrações são clientes dela, e qualquer controle que exista só na interface pode ser contornado por quem chama a API direto. Por isso o pentest de API é, hoje, o teste com maior retorno para a maioria das empresas de software.

OWASP API Security Top 10 (2023) como mapa de cobertura

ID Risco O que significa para o seu negócio
API1 Broken Object Level Authorization (BOLA) um cliente acessa dados de outro trocando um identificador
API2 Broken Authentication sessões, tokens ou recuperação de senha permitem assumir contas
API3 Broken Object Property Level Authorization campos que o usuário não deveria ver ou alterar (ex.: role, price)
API4 Unrestricted Resource Consumption custos e indisponibilidade por falta de limites
API5 Broken Function Level Authorization funções administrativas acessíveis a usuários comuns
API6 Unrestricted Access to Sensitive Business Flows automação abusiva de fluxos como compra, cupom, cadastro
API7 Server-Side Request Forgery o servidor é induzido a acessar recursos internos
API8 Security Misconfiguration CORS, cabeçalhos, mensagens de erro, configurações padrão
API9 Improper Inventory Management versões antigas e endpoints esquecidos ainda no ar
API10 Unsafe Consumption of APIs confiança excessiva em dados de APIs de terceiros

Repare que quatro dos dez itens (API1, API3, API5, API6) são sobre autorização e lógica de negócio. É por isso que uma varredura automatizada sozinha não basta: a ferramenta não sabe o que é "seu" e o que é "do outro". Explicamos o campeão da lista em BOLA/IDOR em APIs, e os problemas mais comuns de autenticação em erros de JWT e OAuth.

Como escopar um pentest de API

O esforço depende menos do número de endpoints e mais de quantas combinações de objeto × usuário × operação precisam ser verificadas. Para escopar bem, levante:

  • Especificação: OpenAPI/Swagger, schema GraphQL, arquivos .proto, coleção do Postman.
  • Perfis e tenants: quais papéis existem (cliente, operador, admin, parceiro) e se há multi-tenant.
  • Fluxos críticos: pagamentos, transferências, exportação de dados, convites, troca de e-mail e senha, integrações com parceiros.
  • Autenticação: sessão, JWT, OAuth/OIDC, chaves de API, mTLS.
  • Versões: v1 ainda ativa? Endpoints internos expostos pelo mesmo gateway?
  • Ambiente: staging com dados realistas ou produção com janela definida.

Como referência de mercado, uma API de até ~80 endpoints com 2–4 perfis leva tipicamente de 5 a 12 dias de teste; veja quanto custa um pentest.

O que entregar ao time de pentest

  1. Especificação atualizada — inclusive endpoints "internos". O que não está na documentação costuma ser o que tem menos controle.
  2. Pelo menos duas contas por perfil, em pelo menos dois tenants quando houver multi-tenant. Sem isso, não dá para testar autorização horizontal.
  3. Dados de exemplo nos fluxos críticos (pedidos, faturas, documentos).
  4. IPs do time liberados no WAF/rate limit de staging, para medir a aplicação e não o firewall.
  5. Um contato técnico para dúvidas rápidas e para avisar se algo crítico for encontrado durante o teste.

O que esperar do resultado

  • Achados com PoC reproduzível (requisição e resposta), severidade justificada e impacto de negócio.
  • Cadeias, não itens isolados: um vazamento de identificador combinado com uma checagem de autorização ausente vale mais que os dois separados.
  • Recomendações no nível do código e da arquitetura: autorização centralizada por objeto, escopo na consulta ao banco, listas de campos permitidos na serialização, limites por usuário e por fluxo.
  • Reteste após as correções.

Como prevenir entre um pentest e outro

  • Testes automatizados de autorização na CI: dois usuários, um objeto de cada, asserção de 403/404 para cada endpoint.
  • Inventário vivo de APIs com data de desligamento para versões antigas.
  • Rate limit por usuário e por fluxo de negócio, não só por IP.
  • Revisão de segurança em toda mudança de modelo de dados ou de papéis.

Perguntas frequentes

Qual a diferença entre pentest de API e pentest web?

O pentest web cobre a aplicação vista pelo navegador; o de API foca nas interfaces chamadas diretamente, incluindo as consumidas por apps mobile e parceiros. Em SPAs modernos os dois se sobrepõem, e o escopo ideal testa as duas camadas.

Preciso fornecer a documentação da API?

Não é obrigatório, mas é altamente recomendado. Sem documentação, parte do orçamento vai para descoberta; com ela, vai para ataque, e a cobertura aumenta.

Pentest de API pode ser feito em produção?

Pode, com janela, limites de carga e regras claras sobre operações que alteram dados. Sempre que possível, preferimos um staging fiel à produção.

Pentest de GraphQL é diferente?

As classes de risco são as mesmas (autorização, exposição de campos, consumo de recursos), mas a superfície muda: introspecção, consultas aninhadas, batching e resolvers com regras de autorização próprias exigem técnica específica.