Conhecendo o Broken Authentication
Broken Authentication é uma das vulnerabilidades destacadas no OWASP API TOP 10 2023 RC.
O que é o Broken Authentication?
O Broken Authentication é um vulnerabilidade encontrada em APIs que permite com que o atacante acesse endpoints ou execute determinadas ações sem autenticação.
Vulnerabilidades que permitem um atacante se autenticar sem fornecer credenciais corretas também são classificadas como Broken Authentication.
Exemplos de ataques que exploram Broken Authentication
Quando uma API utiliza tokens JWTs para autenticação de seus usuários, podemos testar alguns tipos de ataques como o "None Attack", ou "Weak Secret", que são ataques que permitem com que o atacante assine o token JWT, assim forjando um token de autenticação.
Outro ataque que é considerado Broken Authentication é o brute force em endpoints de autenticação. As APIs sempre devem impor um rate limiting para que não ocorra brute force. Se um atacante conseguir um nome de usuário ou email válido para autenticação, ele pode fazer brute force na senha para conseguir se autenticar.
Cenários em que ocorre o Broken Authentication
Cenário #1
Um blog utiliza uma API para listar, criar e editar seus Posts/artigos. Então R$10,00 mensais são cobrados para que seus usuários tenham acesso aos artigos publicados. Ao fazer login no blog, um JWT é retornado como token de autenticação, porém sua "Secret Key" é fraca. Sendo assim um atacante consegue utilizar o John-the-ripper para descobrir sua "Secret key", assim forjando tokens de autenticação com uma data de expiração vitalícia.
john hash --format=HMAC-SHA256 --wordlist=/path/to/wordlist
Cenário #2
Uma empresa utiliza um site para definir tarefas para seus funcionários e infromá-los sobre atualizações mensais entre outras coisas. Esse site utiliza uma API para gerenciar a autenticação de seus usuários. Toda vez que um usuário acessa o site, a API verifica se um token é especificado no header "x-access-token", porém ela não verifica se o token é válido, ou seja, um atacante pode especificar um token falso, assim burlando a autenticação.
Como prevenir o Broken Authentication?
- Implemente um sistema de rate limit em sua API.
- Configure uma politica de senha para que evite de seus usuários serem facilmente hackeados.
- Implemente um sistema de captcha.
- Utilize bibliotecas atualizadas, para que não haja vulnerabilidades em seus tokens de autenticação.
- Utilize secret keys fortes.
- Verifique se os endpoints estão validando o token de autenticação corretamente.