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.