Falhas do tipo CWE-566

8 resultados

Bypass de autorizacao via chave primaria SQL controlada pelo usuario

Ocorre quando a aplicacao usa dados fornecidos pelo usuario (como ID ou parametro) diretamente como chave primaria em queries SQL para verificar permissoes, sem validar se o usuario tem realmente acesso a esse registro. Um atacante altera o parametro para acessar dados de outro usuario.

Exemplo

Uma API retorna perfil do usuario com GET /user?id=123. Se nao valida se o usuario logado e realmente o dono do ID 123, um atacante muda para id=456 e acessa dados de outra pessoa, ou um admin modifica user_id=1 em um POST sem checar se belonged to the authenticated user.

Como mitigar

Sempre valide se o usuario autenticado tem permissao para acessar o registro antes de executar a query: recupere o ID do token/sessao do usuario, nao do parametro fornecido, e compare explicitamente na clausula WHERE. Use frameworks ORM com mecanismos de escopo automatico de tenant/usuario quando possivel.