Avaliação técnica de vulnerabilidades no código do Skala
Data de elaboração |
05/04/2023 |
---|---|
Responsável pelo estudo |
José Lucas da Silva Costa |
Equipe do estudo |
|
Alvo | Sistema Skala |
Origem |
Falhas de segurança |
Objetivo |
Avaliar falhas de segurança no sistema Skala |
Documentação Correlata |
|
Observações |
Sem observações. |
1. Glossário de Termos
2. Introdução
3. Grupos de políticas de autorizações
O sistema de permissões do Skala é definido da seguinte forma:
Grupo | Perfis unitários |
RHGerente | RH@skala, Gerente@skala |
Nafas | Nafas@skala |
Auditor | Auditor@skala |
AUDITOR || NAFES | Auditor@skala, Nafas@skala |
NAFAS || GERENTE || RH | Nafas@skala, RH@skala, Gerente@skala |
4. Análise/Checklist na primeira camada (proteção das rotas)
4.1 Pacote MVC (Equipe)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
4.2 Pacote MVC (Escala)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
4.3 Pacote MVC (Home)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
4.4 Pacote MVC (Mapa)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
4.5 Pacote MVC (Padrao)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
4.6 Pacote MVC (Plantao)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
4.7 Pacote MVC (Relatorio)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
4.8 Pacote MVC (Servidor)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
4.9 Pacote MVC (ServidorEquipe)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
4.10 Pacote MVC (Solicitacao)
Checklist de avaliação | |
Authorize está presente na controller? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ ] Sim - [ ] Não - [ ] Não se aplica |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ ] Não se aplica |
As Authorize's específicas nas rotas estão de acordo com a regra de negócio do sistema? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
5. Análise da segunda camada de proteção (Permissão por perfil)
5.1 Manutenção de equipes
Ações | Observações | Quem pode? |
Ver listagem de equipes | O gerente visualiza somente os departamentos de sua atribuição, já os outros perfis acessam todos os departamentos da sua unidade orçamentária. | RHGerente |
Ver detalhes de equipe | Não existem restrições e o usuário pode ver a equipe apenas trocando o ID na rota | RHGerente |
Adicionar equipe | Não se aplica | RHGerente |
Editar equipe | Não se aplica | RHGerente |
Vincular equipe | Não se aplica | RHGerente |
5.2 Manutenção de escalas
Ações | Observações | Quem pode? |
Ver listagem de escalas | Não se aplica | RHGerente |
Ver detalhes de escala | Não existem restrições e o usuário pode ver a escala apenas trocando o ID na rota | RHGerente |
Adicionar escala | Não se aplica | RHGerente |
Editar escala | Não se aplica | RHGerente |
5.3 Gerenciamento de Mapa
Ações | Observações | Quem pode? |
Ver plantões por equipe | Não existem restrições para que o usuário veja plantões de outras equipes, basta que o usuário troque o ID na URL. | RHGerente |
Gerar o mapa de plantões da equipe | Não existem restrições para que o usuário gere mapa de outras equipes que não seja a sua, basta que o usuário troque o ID na URL. | RHGerente |
Ver plantões por escala | Não existem restrições e o usuário pode ver os plantões que não pertence a escala do qual é gestor, basta que o usuário troque o ID na URL. | RHGerente |
Gerar o mapa de plantões da escala | Não existem restrições e o usuário pode ver o mapa de plantões de escalas do qual não é responsável, basta apenas que o usuário troque o ID na URL. | RHGerente |
Ver plantões do servidor | Não existem restrições e o usuário pode ver plantões de qualquer usuário, basta apenas que o usuário troque o ID na URL. | RHGerente |
Gerar mapa do servidor | Não existem restrições e o usuário pode ver o mapa de qualquer servidor, basta apenas que o usuário troque o ID na URL. | RHGerente |