O documento apresenta os 10 principais riscos de segurança em APIs de acordo com o projeto OWASP Top Ten API de 2019. São descritos brevemente cada um dos riscos, incluindo autorização de objetos quebradas, autenticação quebrada, exposição excessiva de dados, falta de limitação de recursos, autorização de funções quebradas, atribuição em massa, configuração de segurança inadequada, injeção, gerenciamento inadequado de ativos e falta de registro e monitoramento. Exemplos e links são fornecidos para ilustrar cada risco.
Gerenciamento de Vulnerabilidades em Aplicações e Servidores Web
OWASP Top 10 API
1.
2. OWASP Top Ten API Project
Os 10 principais riscos de segurança em APIs
3. Fernando Galves
+20 anos de experiência em TI
Certified Application Security Engineer
OWASP Code Review Guide
OWASP São Paulo Chapter Leader
Diretor de Segurança da Informação na OITI Technologies
Apresentação
8. OWASP Top Ten API 2019
https://www.owasp.org/index.php/OWASP_API_Security_Project
9. API1:2019 - Broken Object Level Authorization
DATA LAYER ACCESS CONTROL
• A API vulnerável não realiza o controle de acesso
corretamente e permite o acesso não autorizado a
dados confidenciais;
• O vetor de ataque pode ser através de um ataque
enumerado no ID de um objeto na chamada da API
10. www.example.com.br
W
A
F
APIWEB
GET /users/ID/info
GET /users/1/info
IDOR (Insecure Direct Object Reference)
Expõe uma referência para um objeto interno
Enumeration Attack
API1:2019 - Broken Object Level Authorization
?
Usuário X pode
acessar esse dado?
DATA LAYER ACCESS CONTROL
Testes de
autorização
13. API2:2019 - Broken Authentication
• O processo de autenticação da API vulnerável é mal
implementado e permite que atacantes assumam
identidades de outros usuários.
14. www.example.com.br
W
A
F
API
WEB
POST /api/v1/auth
API2:2019 - Broken Authentication
JWT
GET /api/v1/user/1/info
1
2
(credenciais)
(JWT)
JSON
Credential
Stuffing
Wordlist
? Protege contra brute force?
Protege contra credential stuffing?
Gerenciamento correto do JWT?
JWT possui expiração?
Permite o uso de senhas fracas?
Vetor de ataque! Manual Code Review for:
- Authentication
- Credential Storage
- Crypto
- Other things of that nature
15. API2:2019 - Broken Authentication
Temos todos os dados para realizar
o brute force na assinatura!
17. API3:2019 – Excessive Data Exposure
• A API vulnerável expõe mais dados do que o cliente
legitimamente precisa, confiando no browser ou no
aplicativo para fazer a filtragem.
19. API3:2019 – Excessive Data Exposure
https://www.pentestpartners.com/security-blog/group-sex-app-leaks-locations-pictures-and-other-personal-details-identifies-
users-in-white-house-and-supreme-court/
20. API3:2019 – Excessive Data Exposure
https://www.pentestpartners.com/security-blog/group-sex-app-leaks-locations-pictures-and-other-personal-details-identifies-
users-in-white-house-and-supreme-court/
21. API4:2019 – Lack of Resources & Rate Limiting
• A API vulnerável não está protegida contra uma
quantidade excessiva de chamadas ou tamanhos de
payloads.
• Os atacantes usam isso para DoS e ataques de força
bruta.
22. www.example.com.br
W
A
F
API
WEB
API4:2019 – Lack of Resources & Rate Limiting
GET /api/v1/users?page=1&size=100000000
2
GET /api/v1/users?page=1&size=100
1
JSON
X
Pode causar Denial of Service
Pode permitir Brute Force Attack
Input
Validation
Estabeleça e
respeite os limites
O Docker facilita o limite de memória, CPU,
número de reinicializações, descritores de
arquivo e processos.
API não protege contra quantidade
excessiva de chamadas por tamanho
de payloads
23. API5:2019 - Broken Function Level Authorization
• A API vulnerável não realiza o controle de acesso
corretamente de endpoints e permite que usuários
comuns acessem funções não autorizadas.
URL ACCESS CONTROL
24. www.example.com.br
APIWEB
?
Usuário X pode
acessar essa URL?
API5:2019 - Broken Function Level Authorization
URL ACCESS CONTROL
DELETE /api/v1/users/716
ADM
GET /api/v1/users/717
DELETE /api/v1/users/717
W
A
F
25. API6:2019 – Mass Assignment
• A API vulnerável permite que os atacantes modifiquem
propriedades de objetos internos que não deveriam.
27. API7:2019 – Security Misconfiguration
• Security Misconfiguration geralmente é o resultado de:
• Configurações padrão inseguras;
• Configurações incompletas ou ad-hoc;
• Armazenamento em nuvem aberta;
• Cabeçalhos HTTP configurados incorretamente;
• Métodos HTTP desnecessários;
• Compartilhamento permissivo de recursos de
origem cruzada (CORS);
• Mensagens de erro detalhadas que contêm
informações confidenciais.
28. www.example.com.br
W
A
F
API
WEB
API7:2019 – Security Misconfiguration
?
Configuração padrão em produção
Patches não aplicados
Mensagens de erro com stack trace
Criptografia fraca
Cross-Origin resource sharing permissivo
Headers HTTP mal configurados
36. API8:2019 – Injection
• Falhas de injeção ocorrem quando dados não confiáveis
são enviados para um interpretador como parte de um
comando ou consulta;
• Os dados maliciosos do atacante podem induzir o
interpretador a executar comandos não intencionais ou
acessar dados sem a devida autorização.
37. www.example.com.br
W
A
F
API
WEB
POST /api/v1/auth
API8:2019 – Injection
usr: teste
pwd: teste123
select name from users where username = `teste` and password = `teste123`
POST /api/v1/auth
usr: ` or 1=1 or `
pwd: 123456
select name from users where username = `` or 1=1 or `` and password = `123456`
Bloqueio
EX: SQL INJECTION
39. API9:2019 – Improper Assets Management
• O atacante encontra versões que não são de produção
da API, como teste, beta ou versões anteriores - que
não são tão bem protegidas e que podem ser utilizadas
para iniciar um ataque.
40. API9:2019 – Improper Assets Management
www.example.com.br
W
A
F
API
WEB
POST /api/v1/auth
POST /api/v1/auth
beta-api.example.com.br
Inventário
Plano descontinuidade/versionamento
INVENTÁRIO
Versões de teste, beta, descontinuadas que permanecem em produção
41. API10:2019 – Insufficient Logging & Monitoring
• A falta de registro, monitoramento e alerta adequados
deixa os ataques passarem despercebidos