Ir para o conteúdo principal

Avaliação técnica de vulnerabilidades no código do SIF

Data de elaboração

05/04/2023

Responsável pelo estudo

José Henrique dos Santos Nogueira

Carlos Eduardo Carvalho do Viso


Equipe do estudo

José Lucas da Silva Costa

João Pedro Rocha Brito

Daniel Ribeiro Camboim de Oliveira

Alvo Sistema de Frequência
Origem

Falhas de segurança

Objetivo

Avaliar falhas de segurança no SIF
Documentação Correlata

Não se aplica.

Observações

Sem observações.

1. Glossário de Termos


  1. SIF: Sistema de Frequência

2. Introdução


Esta avaliação tem a tarefa de mapear todos os pontos críticos de falhas de segurança no sistema Skala. Neste entendimento foi levantado essas demandas em duas camadas, a primeira checa informações básicas de segurança, na segunda camada é verificado se cada perfil está acessando somente o que deveria acessar.

3. Grupos de políticas de autorizações


O sistema de permissões do SIF é definido da seguinte forma:

Grupo Perfis unitários
Nafas Nafas@SIF
Recursos Humanos
RecursosHumanos@SIF
Gerente Gerente@SIF
Responsável da Frequência ResponsavelDaFrequencia@SIF
Técnico Tecnico@SIF

4. Análise/Checklist na primeira camada (proteção das rotas)


4.1 Pacote MVC (Baf)

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
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 (CertidaoDeFrequencia)

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
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 (Colaboradores)

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
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 (Consultas)

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
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 (CorrigirFrequencia)

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
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 (Documentos)

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
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 (Estacao)

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
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 (Frequencia)

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
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 (FrequenciaManual)

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
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 (HistoricoDeHomologacao)

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
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.11 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
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.12 Pacote MVC (HomologacaoDaFolha)

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
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.13 Pacote MVC (HorasAcumuladas)

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
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.14 Pacote MVC (Organograma)

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
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.15 Pacote MVC (Registros)

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
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.16 Pacote MVC (SolicitacaoDeCompensacaoDeBancoDeHoras)

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
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 

6. Conclusão

[Adicionar a conclusão baseada nas análises realizadas em primeira e segunda camada]


7. Referências


https://documentos.sistemas.ro.gov.br/books/skala/page/manual-do-skala-realizar-gerenciamento-das-escalas-dos-servidores-plantonistas

https://documentos.sistemas.ro.gov.br/books/sif-sistema-de-frequencia/page/manual-sif-para-chefes-imediato

https://documentos.sistemas.ro.gov.br/books/sif-sistema-de-frequencia/page/solicitacao-de-acesso-ao-sif

https://documentos.sistemas.ro.gov.br/books/sif-sistema-de-frequencia/page/manual-sif-para-rh