Solução
| Nome | Valor |
|---|---|
| Vulnerabilidade | Mass assignment vulnerability |
| CWE | CWE-915 |
| OWASP Top Ten | A04_2021-Insecure_Design |
Nesse endpoint os campos email e
password são validados, correto? Mas o método
all() de um FormRequest do Laravel
não retorna somente os campos validados mas sim todos eles,
por isso o $request->all() no
controller irá retornar todos os campos que o
usuário enviou para o endpoint, incluindo outros
que não o email ou password.
Dessa forma, enviar o campo is_admin na
request desse endpoint permitiria que o
usuário criasse um usuário administrador quando ele não
deveria ter permissão de acesso para isso.
Exemplo:
{
"email": "email@example.com",
"password": "mypass123",
"is_admin": true
}Altere o código desse exercício de forma que a
vulnerabilidade seja mitigada. Ao mesmo tempo, não se
esqueça que o método createAdminUser() ainda
precisa ser usado internamente.