[incompleto] 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
- SIF- Sistema de Frequência.
- BAF- Boletim Anual de Frequência.
2. Introdução
A avaliação técnica tem como objetivo realizar o mapeamento dos principais pontos críticos em relação às falhas de segurança presentes no sistema SIF, a nível de código. Diante disso, a demanda foi feita em duas camadas: A primeira camada consiste em analisar informações básicas de segurança, já na segunda, foi verificado a limitação de acesso de acordo com o perfil, ou seja, cada perfil deverá acessar apenas as informações e funcionalidades definidas na regra de negócio.
3. Grupos de políticas de autorizações
O sistema de permissões do SIF é definido da seguinte forma:
Grupo | Perfis unitários |
RecursosHumanos@SIF, Gerente@SIF, Nafas@SIF, ResponsavelDaFrequencia@SIF | |
PodeGerenciarFrequencia |
RecursosHumanos@SIF, Gerente@SIF, Nafas@SIF, ResponsavelDaFrequencia@SIF |
PodeGerenciarBafs | RecursosHumanos@SIF, Gerente@SIF |
PodeGerenciarBafsJaHomologados | Nafas@SIF |
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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ x ] Sim - [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Laudo técnico:
4.2 Pacote MVC (CertidaoDeFrequencia)
Checklist de avaliação | |
Authorize está presente na controller? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] 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? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
Foi testado no navegador o acesso direto a controller sem autenticação? | [ |
Foi testado no navegador o acesso direto a controller com autenticação diferente? | [ |
ValidateAntiForgeryToken está presente em todas as ActionResult's com o método POST? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum uso indiscriminado do recurso AllowAnonymous nas ActionResult's? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Existe algum alguma serialização que seja acessível pelo usuário na camada de front-end? | [ x ] Sim - [ ] Não - [ ] Não se aplica |
No ORM utilizado existe alguma consulta que esteja em SQL puro? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Caso sim para a pergunta anterior, está havendo algum tratamento para SQL Injection? | [ ] Sim - [ ] Não - [ x ] Não se aplica |
Existe algum cookie com informações expostas de autenticação? | [ ] Sim - [ x ] Não - [ ] Não se aplica |
Laudo técnico:
Descrever aqui |
5. Análise da segunda camada de proteção (Permissão de acesso)
5.1 Manutenção de Bafs
Ações | Observações | Quem pode? |
O usuário com perfil Recursos Humanos visualiza somente os |
||
Não se aplica | ||
Não se aplica | ||
Não se aplica |
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/sif-sistema-de-frequencia/page/manual-sif-para-rh