Insecure Direct Object References (IDOR)
O que é
Vulnerabilidade bem comum em que o atacante manipula um dado em que originalmente ele não tem acesso. Alguns exemplos de como pode ser feito são:
- Manipulação de URL no próprio navegador.
- Chamadas em API rest alterando um path.
- Alteração no body da request editando parâmetros que não são os que estavam na tela.
Normalmente o atacante vai se aproveitar de chamadas como:
GET recurso/{idRecurso}
Impactos do problema
Os impactos de um IDOR podem ser bem grandes e depende da funcionalidade. Cada feature tem que validar o que pode ser exposto, criado, editado, removido por um usuário qualquer.
Imagine uma funcionalidade, na qual, o saque de valores pode ter um parâmetro de qual a conta do vai o dinheiro não é validado, isso pode dar brecha para o usuário alterar para uma conta não disponível ou até lavagem de dinheiro que seria um caso mais grave.
Como Evitar
Atualmente a única forma de evitar o problema, é adicionando um controle de acesso para cada recurso. O problema pode ser mais difícil de ser encontrado caso não seja utilizado referências sequenciais, dessa forma, o atacante pode não fazer tentativas com a sequência.
Melhores praticas evitar a vulnerabilidade:
- Usar hash para ID de cada recurso.
- Validar escopo na query.
- Garantir sempre que o dono do recurso que executa a ação.
Want to follow me?
You can get in contact me on this social media.
GitHub: luizleite-hotmart
Twitter: luizleite_
Twitch: coffee_and_code
Linkedin: luizleiteoliveira