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.

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
- Especificação atualizada — inclusive endpoints "internos". O que não está na documentação costuma ser o que tem menos controle.
- 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.
- Dados de exemplo nos fluxos críticos (pedidos, faturas, documentos).
- IPs do time liberados no WAF/rate limit de staging, para medir a aplicação e não o firewall.
- 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.