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
- Skala: Sistema para gerenciamento de escalas de plantão
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 |
5.4 Manutenção de Padrão
Ações | Observações | Quem pode? |
Adicionar padrão | Não existem restrições para que o usuário adicione padrão em outra equipe que não seja a sua, basta que o usuário troque o ID na URL. | RHGerente |
Editar padrão | Não existem restrições para que o usuário edite o padrão de outro gestor, basta que o usuário troque o ID na URL. | RHGerente |
Remover padrão | Não existem restrições para que o usuário remova um padrão, basta que o usuário troque o ID na URL. | RHGerente |
5.5 Manutenção de Plantão
Ações | Observações | Quem pode? |
Gerar plantões automáticos | Não se aplica | RHGerente |
5.6 Visualização de relatórios
Ações | Observações | Quem pode? |
Relatório de Plantonistas | Não se aplica | Nafas |
Relatório de Conflitos | Não se aplica | Auditor |
5.7 Manutenção de Servidor
Ações | Observações | Quem pode? |
Visualizar servidores | Não se aplica | RHGerente |
Visualizar detalhes do servidor | Não se aplica | RHGerente |
Salvar servidor |
Não se aplica | RHGerente |
5.8 Gerenciamento de servidores nas equipes
Ações | Observações | Quem pode? |
Remover servidor da equipe | Não existem restrições para que o usuário remova servidores de uma equipe que não seja a sua, basta que o usuário troque o ID na URL. | RHGerente |
Ver detalhes do servidor da equipe | Não existem restrições para que o usuário veja detalhes do servidor de outra escala que não seja a sua, basta que o usuário troque o ID na URL. | RHGerente |
5.9 Gerenciamento de servidores nas equipes
Ações | Observações | Quem pode? |
Remover servidor da equipe | Não existem restrições para que o usuário remova servidores de uma equipe que não seja a sua, basta que o usuário troque o ID na URL. | RHGerente |
Ver detalhes do servidor da equipe | Não existem restrições para que o usuário veja detalhes do servidor de outra escala que não seja a sua, basta que o usuário troque o ID na URL. | RHGerente |
5.10 Gerenciamento de solicitações
Ações | Observações | Quem pode? |
Ver lista de solicitações | Não se aplica | RHGerente |
Visualizar solicitação | Não existem restrições para que o usuário veja uma solicitação que não seja a sua, basta que o usuário troque o ID na URL. | RHGerente |
Deferir solicitação | Não se aplica | RHGerente |
Indeferir solicitação | Não se aplica | RHGerente |