1 ASSUNTO Falha na Segurança do SGUWEB CHAMADO Nº 117302 RESPONSÁVEL REJANE LUIZA LINGNER DATA CRIAÇÃO 26/03/2015 DATA ÚLTIMA ALTERAÇÃO 05/10/2015 VERSÃO 2.0 Motivo Gerador Prioridade Prazo Atendimento Legal / / 2 Requisitado por Jean Carlos Cidral Setor TI Ramal Descrição / Objetivo Impedir que algum usuário que não tenha acesso ao sistema consiga acessar as telas do sistema e até mesmo realizar alterações nos registros. Impedir também que um usuário logado acesse telas que pertencem a um perfil diferente. Sistema de Origem SGU-WEB Módulo Data Solicitação 17/09/2013 3 Nome da Função Identificação da causa Falha de segurança no SGUWEB: 1 Qualquer usuário conectado no sistema consegue acessar qualquer tela do sistema, desde que tenha a URL da mesma. Usuário 1089 conectado. Página 1 de
Usuário 1089 possui o seguinte perfil: Página 2 de
O usuário não tem acesso à tela de suspender beneficiários, porém se ele acessar Página 3 de
pelo link a tela abrirá normalmente com todas as funcionalidades. Isso ocorre com qualquer tela do sistema, inclusive com uma tela que permite incluir Página 4 de
novos usuários no SGUWEB: 2 No MatMed não é preciso estar logado para fazer qualquer operação desde que tenha o link da tela. Página 5 de
Ao abrir o link matmed1100.php o sistema solicita a senha e carrega no fundo todas as informações: Se o usuário fechar a janela do login, ele consiguira acessar/incluir/modificar todas Página 6 de
as informações. Página 7 de
Página 8 de
Página 9 de
A alteração irregular foi feita com sucesso, isso vale para qualquer tela do MatMed. Descrição Sumária Criada uma função(valida_perfil) para validar se o usuário esta logado e se a página que esta sendo acessada pertence ao perfil do usuário. Essa função já foi liberada no objeto hb_funcoes_inicio.php no chamado 124047. Detalhamento das especificações/solução Essa função validará se o usuário esta logado, se não tiver redireciona para a tela de login. Caso o usuário esteja logado, verifica se o objeto pertence ao perfil do usuário, caso não pertença, o usuário retornara a página de origem. Alguns objetos da pasta principal não estão na lista de objetos alterados porque já estão fazendo o uso dessa validação, ou serão liberados com a função nos chamados que estão atualmente bloqueados ou a alteração não se aplica a função do objeto. Página 10 de
Objetos que serão liberados em outros chamados: 1. Chamados do projeto DS sguweb_5116.php sguweb_5210.php sguweb_5220.php Reorganizado arquivos de conexão/configuração do sistema (sguweb/lib) - Retirado código lixo encontrado no objeto hb_include.php. Alterado objeto hb_include.php - Sempre que for executada alguma ação do PHP x Oracle, será verificado no inicio do processo se a sessão ainda esta ativa, através da função valida_sessao(). - Caso não esteja e o objeto foi requisitado, será informado ao browser que ocorreu erro de timeout (408). - Caso não esteja e o objeto não foi requisitado, então é um requisição indevida, será redirecionado para a página inicial. - Caso esteja e o objeto não foi requisitado, então é um requisição indevida, será redirecionado para a página inicial. Alterado objeto jquery-1.7.1.min.js - Verificado se o status do erro na requisição é igual a 408, erro de timeout. - Caso o status seja 408, será informado para o usuário que a sessão expirou e o mesmo será redirecionado para tela de login. Página 11 de
Criado objeto hb_funcoes_inicio.php - Adicionado a esse objeto funções de validação de login que se encontravam no objeto hb_include.php. Devido a validação de existência de sessão estar no hb_include.php, as validações para login não podem mais ser feitas nesse arquivo, visto que a sessão é criada após o login no sistema. Alterado objeto hb_config.php - Alterado para incluir o objeto hb_funcoes_inicio.php no lugar do hb_include.php. Realizada a alteração porque os PHPs principais incluem o objeto hb_config.php, assim realizando a validação de perfil. Essa mesma alteração foi aplicada aos objetos: ajx_chk_login.php, ajx_chk_login_c.php, ajx_esq_senha.php, ajx_sguweb_1121.php, ajx_sguweb_help.php Alterado objetos modelo.tpl e modelo_c.tpl.(anexo 01) - Alterado para que ambas as telas de login não exibam mais o X para fechar a janela de login, ou que seja permitido fechá-la ao pressionar a tecla ESC. - Alterado para que o menu não seja exibido ao fundo da tela de login. Removido de alguns objetos ajax(ajax/ajx_) do matmed a chamada da função valida_sessao(), visto que agora essa chamada é feita no hb_include.php, assim, tornando-se desnecessária a chamada individual por objeto. Participantes Aprovação Funcional Revisão Manual do Sistema (informar link referente à revisão efetuada) Data 4 Previsão de Horas Observações Página 12 de
Realizado Horas Observações Para Uso Equipe Qualidade Sistemas Aprovação Aprovado Por Observação Data 5 Especificação Manual do Sistema Plano de Teste Observações Gerais 6 Homologação Solicitante Observações Data Data 7 TRANSFERÊNCIA PRODUÇÃO Página 13 de
Joaçaba Planalto Norte Alto Vale Norte Capixaba Extremo Oeste Florianópolis Federação SC Lages Goiânia Caçador Criciúma Tubarão Bauru Avaré UNICOP Matriz Assis Guarulhos Joaçaba Planalto Norte Alto Vale Norte Capixaba Extremo Oeste Florianópolis Federação SC Lages Ourinhos Casacaresc Chapecó Jaú Goiânia Caçador Criciúma Tubarão Bauru Avaré UNICOP Matriz Assis Joinville VTRP Brusque Sul Capixaba Guarulhos 8 Objetos Genexus / Vers Módulo(s) a Compilar Orientações Especiais Geração Executável Genexus Objetos Genexus e Oracle Sincronizados? 9 Objetos WEB / Vers./HB_PERFIL.PHP / versão 1./HB_UTILIZADOR.PHP / versão 1./MATMED1100.PHP / versão 2./MATMED1102.PHP / versão 2./MATMED2100.PHP / versão 1./MATMED2110.PHP / versão 1./MATMED2120.PHP / versão 1./MATMED2122.PHP / versão 1./MATMED2130.PHP / versão 1 Objetos WEB e Oracle Sincronizados? Página 14 de
./MATMED2140.PHP / versão 1./MATMED2150.PHP / versão 1./MATMED2160.PHP / versão 2./MATMED2170.PHP / versão 1./MATMED2180.PHP / versão 1./MATMED3100.PHP / versão 1./MATMED3110.PHP / versão 2./MATMED4100.PHP / versão 2./MATMED4200.PHP / versão 1./MATMED4300.PHP / versão 2./PAINEL1100.PHP / versão 1./PAINEL1200.PHP / versão 1./SGUWEB_1110.php / versão 5./SGUWEB_1112.php / versão 4./SGUWEB_1116.php / versão 3./SGUWEB_1120.php / versão 2./SGUWEB_3002.php / versão 1./SGUWEB_1114.PHP / versão 6./SGUWEB_1118.PHP / versão 3./SGUWEB_1122.PHP / versão 4./SGUWEB_1200.PHP / versão 1./SGUWEB_1210.PHP / versão 3./SGUWEB_1300.PHP / versão 1./SGUWEB_1400.PHP / versão 1./SGUWEB_1500.PHP / versão 1./SGUWEB_1600.PHP / versão 1./SGUWEB_2000.PHP / versão 6./SGUWEB_3000.PHP / versão 1 Página 15 de
./SGUWEB_4000.PHP / versão 1./SGUWEB_5110.PHP / versão 1./SGUWEB_5112.PHP / versão 1./SGUWEB_5114.PHP / versão 1./SGUWEB_CONTRATOS.PHP / versão 1./SGUWEB_PERFIL.PHP / versão 3 AJAX/AJX_CAD_UNIDADE_MEDIDA.PHP / versão 1 AJAX/AJX_CHK_LOGIN.PHP / versão 4 AJAX/AJX_CHK_LOGIN_C.PHP / versão 3 AJAX/AJX_ESQ_SENHA.PHP / versão 1 AJAX/AJX_EXPORTA_DUMP.PHP / versão 2 AJAX/AJX_EXPORTA_LAYOUT.PHP / versão 4 AJAX/AJX_IMP_CSV_MATMED1100.PHP / versão 8 AJAX/AJX_IMP_CSV_MATMED2122.PHP / versão 3 AJAX/AJX_IMP_CSV_MATMED3100.PHP / versão 4 AJAX/AJX_IMP_CSV_MATMED4100.PHP / versão 9 AJAX/AJX_IMP_CSV_MATMED4200.PHP / versão 2 AJAX/AJX_IMP_CSV_MATMED4300.PHP / versão 2 AJAX/AJX_MATMED1100_PRECOS.PHP / versão 2 AJAX/AJX_MATMED2130.PHP / versão 6 AJAX/AJX_MATMED2160.PHP / versão 4 AJAX/AJX_MATMED2170.PHP / versão 2 AJAX/AJX_SGUWEB_1121.PHP / versão 1 AJAX/AJX_SGUWEB_HELP.PHP / versão 2 AJAX/AJX_UPLOAD_DEPARA.PHP / versão 3 AJAX/AJX_UPLOAD_DUMP.PHP / versão 2 AJAX/AJX_UPLOAD_MAT.PHP / versão 8 AJAX/AJX_UPLOAD_MED.PHP / versão 9 Página 16 de
AJAX/AJX_UPLOAD_TUSS_MAT.PHP / versão 5 AJAX/AJX_UPLOAD_TUSS_MED.PHP / versão 4 JS/FUNCOES.JS / versão 7 JS/HB_CONT.JS / versão 1 JS/JQUERY-1.7.1.MIN.JS / versão 1 LIB/HB_CONFIG.PHP / versão 3 LIB/HB_FUNCOES_INICIO.PHP / versão 0 LIB/HB_INCLUDE.PHP / versão 6 TEMPLATES/MODELO.TPL / versão 4 TEMPLATES/MODELO_C.TPL / versão 3 10 Objetos BI Objetos Oracle / Vers / Vers Orientações Especiais Plataforma RESPONSÁVEIS PELA LIBERAÇÂO Data 11 Genexus BI / WEB / ORACLE Autorização Gerência / Coordenação PLANO DE TESTES 12 Nº Pré-requisitos Procedimentos do teste Critério de Aprovação Aprovado? Observações 1 Estar deslogado do sistema. Entrar na pagina inicial do SGUWEB(http://sguwebnh.unime dsc.com.br/sgu- Não deverá entrar na tela referente ao objeto matmed2130.php, Página 17 de
2 Estar logado. 3 Estar logado. 4 Estar deslogado do sistema. web/chamado_117302/index.php), alterar a URL retirando o index.php e colocando matmed2130.php Realizar o login no sistema, tentar acessar um objeto que não pertence ao perfil (alterar a url) do usuário logado. Alterar um registro, por exemplo, entrar com o perfil MatMed(2) e ir em Cadastro -> Produtos. Selecionar um item e clicar em alterar. Antes de salvar, copiar o link da pagina, abrir outra aba e entrar nesse link. Nessa aba sair do sistema, retornar para primeira aba na alteração do produto e salvar. Acessar a tela inicial onde é apresentada a janela de login. Pressionar a tecla ESC e verificar se a janela permanece na tela. retornando para a página inicial. Não permitir o acesso ao objeto e retornar a página de origem. Será exibida a mensagem de sessão expirada, redirecionando para a tela de login, assim, não permitindo que a alteração seja realizada. Foi removido o botão X do canto superior direito. Removido também a funcionalidade de fechar a tela de login com a tecla ESC, assim não podendo fecha-la. Removido também o menu que aparecia ao fundo. Esse mesmo teste pode ser feito em demais perfis. Caso não tenha a opção de alterar, após sair da segunda aba, pode ser recarregado o grid ou realizada a ação de Próximo (telas de movimento) para que ocorra a mensagem. Executado por Data Total de Testes Total Aprovados: Total Reprovados: Página 18 de
13 ANEXOS: Anexo 01 Tela te login. Página de