Conpat 2.25.2.0
Índice
Sistemas Verificados
- Controle de patrimônio (Conpat), versão 2.25.2.0
Verificação de Segurança
Testes Realizados
Item de Teste | Referência OWASP | Resultado |
---|---|---|
Review Webpage Comments and Metadata for Information Leakage | OTG-INFO-005 | OK |
Test Application Platform Configuration | OTG-CONFIG-002 | NA |
Test File Extensions Handling for Sensitive Information | OTG-CONFIG-003 | OK |
Review Old, Backup and Unreferenced Files for Sensitive Information | OTG-CONFIG-004 | OK |
Test HTTP Methods | OTG-CONFIG-006 | NA |
Test HTTP Strict Transport Security | OTG-CONFIG-007 | F |
Test RIA cross domain policy | OTG-CONFIG-008 | NA |
Test Role Definitions | OTG-IDENT-001 | NA |
Test User Registration Process | OTG-IDENT-002 | NA |
Test Account Provisioning Process | OTG-IDENT-003 | NA |
Testing for Account Enumeration and Guessable User Account | OTG-IDENT-004 | OK |
Testing for Credentials Transported over an Encrypted Channel | OTG-AUTHN-001 | F |
Testing for default credentials | OTG-AUTHN-002 | OK |
Testing for Weak lock out mechanism | OTG-AUTHN-003 | NA |
Testing for Bypassing Authentication Schema | OTG-AUTHN-004 | OK |
Testing for Vulnerable Remember Password | OTG-AUTHN-005 | NA |
Testing for Browser cache weakness | OTG-AUTHN-006 | OK |
Testing for Weak password policy | OTG-AUTHN-007 | OK |
Testing for weak password change or reset functionalities | OTG-AUTHN-009 | OK |
Testing for Weaker authentication in alternative channel | OTG-AUTHN-010 | NA |
Testing Directory traversal/file include | OTG-AUTHZ-001 | OK |
Testing for Bypassing Authorization Schema | OTG-AUTHZ-002 | F |
Testing for Privilege escalation | OTG-AUTHZ-003 | F |
Testing for Insecure Direct Object References | OTG-AUTHZ-004 | F |
Testing for Session Management Schema | OTG-SESS-001 | F |
Testing for cookies attributes | OTG-SESS-002 | OK |
Testing for Session Fixation | OTG-SESS-003 | OK |
Testing for Exposed Session Variables | OTG-SESS-004 | OK |
Testing for CSRF | OTG-SESS-005 | F |
Testing for logout functionality | OTG-SESS-006 | F |
Testing for Session Timeout | OTG-SESS-007 | OK |
Testing for Session puzzling | OTG-SESS-008 | OK |
Testing for Reflected Cross site scripting | OTG-INPVAL-001 | OK |
Testing for Stored Cross site scripting | OTG-INPVAL-002 | OK |
Testing for HTTP Verb Tampering | OTG-INPVAL-003 | NA |
Testing for HTTP Parameter pollution | OTG-INPVAL-004 | OK |
Testing for SQL Injection | OTG-INPVAL-005 | F |
Testing for LDAP Injection | OTG-INPVAL-006 | NA |
Testing for XML Injection | OTG-INPVAL-008 | NA |
Testing for SSI Injection | OTG-INPVAL-009 | NA |
Testing for XPath Injection | OTG-INPVAL-010 | NA |
Testing for IMAP/SMTP Injection | OTG-INPVAL-011 | NA |
Testing for Code Injection | OTG-INPVAL-012 | OK |
Testing for Command Injection | OTG-INPVAL-013 | OK |
Testing for Buffer Overflow | OTG-INPVAL-014 | OK |
Testing for Incubated Vulnerability | OTG-INPVAL-015 | OK |
Testing for HTTP Splitting/Smuggling | OTG-INPVAL-016 | OK |
Testing for Information Disclosure | OTG-ERR-001, OTG-ERR-002 | OK |
Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection | OTG-CRYPST-001 | NA |
Testing for Padding Oracle | OTG-CRYPST-002 | NA |
Testing for Sensitive information sent via unencrypted channels | OTG-CRYPST-003 | NA |
Tests of business logic | OTG-BUSLOGIC-001..009 | OK |
Testing for DOM-based Cross site scripting | OTG-CLIENT-001 | OK |
Testing for JavaScript Execution | OTG-CLIENT-002 | OK |
Testing for HTML Injection | OTG-CLIENT-003 | OK |
Testing for Client Side URL Redirect | OTG-CLIENT-004 | OK |
Testing for CSS Injection | OTG-CLIENT-005 | OK |
Testing for Client Side Resource Manipulation | OTG-CLIENT-006 | OK |
Test Cross Origin Resource Sharing | OTG-CLIENT-007 | OK |
Testing for Cross site flashing | OTG-CLIENT-008 | OK |
Testing for Clickjacking | OTG-CLIENT-009 | OK |
Testing WebSockets | OTG-CLIENT-010 | NA |
Test Web Messaging | OTG-CLIENT-011 | NA |
Test Local Storage | OTG-CLIENT-012 | NA |
- OK (Nenhum problema encontrado); F (Teste falhou, verificar os resultados); NA (Teste não aplicado)
Resultados dos Testes
Teste falhou |
OTG-INPVAL-005 |
Severidade | Alta |
Descrição | A página Exportação.aspx é vulnerável à SQL Injection. As querys são construídas com concatenação de strings, sem parametrização em alguns casos.
Exemplo: criar exportação na tabela "cotação de moeda" selecionando o campo "descrição da moeda de destino" e criar um filtro para o campo com o conteúdo |
Política de segurança | "3.1 Validação dos dados" |
Sugestões |
|
Referências |
Teste falhou |
OTG-AUTHZ-004 |
Severidade | Baixa |
Descrição | Os realizar upload de arquivos no sistema estes são armazenados e referenciados diretamente com o nome original do arquivo. |
Política de segurança | "3.9 Arquivos e recursos" |
Sugestões |
|
Referências |
Teste falhou |
OTG-AUTHZ-002, OTG-AUTHZ-003 |
Severidade | Média |
Descrição | Várias páginas do sistema são acessíveis pela URL para usuários que não possuem a respectiva permissão.
Ex: |
Política de segurança | "3.3 Controle de acesso" |
Sugestões |
|
Referências |
Teste falhou |
OTG-CONFIG-007, OTG-AUTHN-001 |
Severidade | Média |
Descrição | As informações enviados para e pelo sistema não são criptografadas, susceptíveis a interceptações e alterações entre o cliente e o servidor. |
Política de segurança | "3.8 Segurança nas comunicações" |
Sugestões |
|
Referências |
Teste falhou |
OTG-AUTHZ-002 |
Severidade | Baixa |
Descrição | Os Web Services disponíveis no sistema não possuem controle de acesso, podendo ser acessados diretamente por usuários não autenticados. |
Política de segurança | "3.11 Web Services e API´s" |
Sugestões |
|
Referências |
Teste falhou |
OTG-SESS-005 |
Severidade | Média |
Descrição | O sistema não implementa um mecanismo anti-CSRF, e permite que as páginas sejam renderizadas a partir de outros domínios (em um frame, iframe ou object). |
Política de segurança | "3.12.1 Configurações para servidor web", "3.4 Gerenciamento de sessão" |
Sugestões |
|
Referências |
Teste falhou |
OTG-SESS-001, OTG-SESS-006 |
Severidade | Média |
Descrição | Ao realizar o logout o cookie de autenticação não é invalidado no servidor, apenas excluido no lado cliente. Assim, forçando o navegador a utilizar o valor antigo do cookie o usuário consegue novamente acesso ao sistema sem realizar o login. |
Política de segurança | "3.4 Gerenciamento de sessão" |
Sugestões |
|
Referências |
Teste falhou |
OTG-SESS-001 |
Severidade | Média |
Descrição | Ao realizar a primeira requisição para o sistema o usuário recebe um cookie de sessão, e assim que realiza o login com sucesso ele recebe um cookie de autenticação. No entanto o sistema não faz a validação de ambos os cookies, podendo o usuário depois de autenticado continuar navegando apenas com o cookie de autenticação, recebendo uma nova sessão. |
Política de segurança | "3.4 Gerenciamento de sessão" |
Sugestões |
|
Referências |
Teste falhou |
OTG-CLIENT-004 |
Severidade | Baixa |
Descrição | O sistema faz o redirecionamento do usuário para outros domínios quando o parâmentro "relaystate" da página "Login.ashx" é alterado para uma url qualquer. |
Política de segurança | "3.1 Validação dos dados" |
Sugestões |
|
Referências |
Índices | Resultados | |
Número de itens testes | 64 | |
Número de itens verificados | 43 | |
Número de itens (NA) | 21 | |
Número de itens (OK) | 34 | |
Número de itens (F) | 9 | |
Índice de aderência | 79% |
Verificação de Desempenho
Análise do teste
Durante todos os testes, o percentual de processamento manteve-se dentro dos padrões estabelecidos tendo grande utilização de memória. A média de fila em disco entra-se dentro do aconselhado. O tempo médio de resposta das requisições manteve-se no limite estabelecido, exceto o request de salvar que, em média, demora o dobro dos demais requests.
O sistema apresentou picos nos indicadores "Lazy Write Fluses/sec", "Disk Write/sec" e "Dirty Pages".
A aplicação suporta no máximo até 350 usuários simultâneos, devido a transação de salvar na tabela de cadastro de bens. Não foi possível continuar a realizar os testes devido a grande quantidade de deadlock, que ocorrem a partir de 2 usuários simultâneos. Os mesmos ainda resultam em outros erros de eventvalidation.
Durante os testes foi possível observar que a partir de 50 usuários simultâneos começa a ocorrer erro de conflito da chave estrangeira "FK_BemItemWorkFlow_BemItem". Segue abaixo os logs de erros encontrados:
- Logs de erro do Conpat
- - Log01
Exception Type: System.Data.SqlClient.SqlException Exception: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_BemItemWorkflow_BemItem". The conflict occurred in database "Conpat", table "dbo.BemItem". The statement has been terminated. Source: .Net SqlClient Data Provider Stack Trace: at MSTech.ConPat.BLL.BemItemWorkflowBO.SalvarWFlow(Int64 _bem_Id, Int32 _bit_Id, Int32 _biw_id, Int32 _bws_id, Guid _usu_id, String _bws_observacao, _WorkId _TipoWF, _PassosWF _Passo, Int64 _tmo_id, TalkDBTransaction banco) in d:\b\ControlePatrimonio\ControlePatrimonio_Main.Revision\src\ControlePatrimonio\Main\Src\MSTech.ConPat.BLL\BemItemWorkflowBO.cs:line 137 at MSTech.ConPat.BLL.BemItemBO.AtualizarPlaquetas(Int32 uni_idPlaquetas, List`1 listaBensPlaqueta, Int32 cfg_id, Guid usu_idLogado) in d:\b\ControlePatrimonio\ControlePatrimonio_Main.Revision\src\ControlePatrimonio\Main\Src\MSTech.ConPat.BLL\BemItemBO.cs:line 875 at WebConPat.AreaAdm.Cadastro.Bens.CadastrarPlaqueta.btnSalvar_Click(Object sender, EventArgs e) in d:\b\ControlePatrimonio\ControlePatrimonio_Main.Revision\src\ControlePatrimonio\Main\Src\WebConPat\AreaAdm\Cadastro\Bens\CadastrarPlaqueta.aspx.cs:line 173
- - Log02
Exception Type: System.Data.SqlClient.SqlException Exception: Transaction (Process ID 61) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. Source: .Net SqlClient Data Provider Stack Trace: at MSTech.ConPat.BLL.BemPatrimonialBO.Save(BemPatrimonial entityBemPatrimonial, List`1 listBemArquivo, BemItem entityBemItem, List`1 listBemItemArquivo, Boolean IsMovBemPatrimonial, eAction actionLegado, DataTable dtDocumentos, String dirArquivo, String dirArquivoTemp, DataTable dtCentroDeCusto, List`1 listGarantia, Boolean importacaoServico, BemPatrimonialHistoricoDescricao bemPatrimonialHistoricoDescricao, Boolean descricaoMaiuscula, List`1 lstHistorico, eOrigem VS_Origem, PreBens preBem) in d:\b\ControlePatrimonio\ControlePatrimonio_Main.Revision\src\ControlePatrimonio\Main\Src\MSTech.ConPat.BLL\BemPatrimonialBO.cs:line 1129 at WebConPat.AreaAdm.Cadastro.Bens.Cadastro._Salvar() in d:\b\ControlePatrimonio\ControlePatrimonio_Main.Revision\src\ControlePatrimonio\Main\Src\WebConPat\AreaAdm\Cadastro\Bens\Cadastro.aspx.cs:line 3363
- - Log03
Inner Exception Type: System.ArgumentException Inner Exception: Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation. Inner Source:System.Web Inner Stack Trace: at System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) at System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) at System.Web.UI.WebControls.TextBox.LoadPostData(String postDataKey, NameValueCollection postCollection) at System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) Exception Type: System.Web.HttpUnhandledException Exception: Exception of type 'System.Web.HttpUnhandledException' was thrown. Source: System.Web Stack Trace: at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
- Logs de erro CoreSSO
- - Log01
Exception Type: System.Xml.XmlException Exception: Data at the root level is invalid. Line 1, position 1. Source: System.Xml Stack Trace: at System.Xml.XmlTextReaderImpl.Throw(Exception e) at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() at System.Xml.XmlTextReaderImpl.ParseDocumentContent() at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) at System.Xml.XmlDocument.Load(XmlReader reader) at System.Xml.XmlDocument.LoadXml(String xml) at MSTech.ConPat.Web.WebProject.LogOn.ProcessRequest(HttpContext context) in d:\b\ControlePatrimonio\ControlePatrimonio_Main.Revision\src\ControlePatrimonio\Main\Src\MSTech.ConPat.Web.WebProject\LogOn.cs:line 58
- - Log02
Exception Type: System.NullReferenceException Exception: Object reference not set to an instance of an object. Source: WebConPat Stack Trace: at WebConPat.SelecionaUnidade.Page_Load(Object sender, EventArgs e) in d:\b\ControlePatrimonio\ControlePatrimonio_Main.Revision\src\ControlePatrimonio\Main\Src\WebConPat\SelecionaUnidade.aspx.cs:line 19
Cenários de uso
Cenário de uso #1 - Login | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
1 - Acessar tela de login | 3 | ||||
1 - Realizar login | 7 | ||||
1 - Selecionar sistema Transporte Escolar | 5 |
Cenário de uso #2 - Cadastro de bem | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
2 - Acessar tela de consulta de bens | 3 | ||||
2 - Acessar tela de cadastro de bens | 3 | ||||
2 - Preencher "Tipo" | 3 | ||||
2 - Preencher campos de data | 5 | ||||
2 - Preencher campo valor | 4 | ||||
2 - Adicionar fornecedor | 13 | ||||
2 - Selecionar grupo de bens | 7 | ||||
2 - Adicionar documento | 10 | ||||
2 - Marcar bem como sem garantia | 3 | ||||
2 - Adicionar centro de custo | 7 | ||||
2 - Salvar cadastro | 10 |
Cenário de uso #3 - Recebimento de bem | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
3 - Acessar home | 3 | ||||
3 - Expandir painel | 3 | ||||
3 - Clicar em "Envio de bens" | 2 | ||||
3 - Clicar em "Aguardando recebimento" | 2 | ||||
3 - Mudar status do item | 8 |
Cenário de uso #4 - Incorporação do bem | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
4 - Acessar tela de movimentação manual de bens | 5 | ||||
4 - Selecionar movimentação de incorporação | 3 | ||||
4 - Pesquisar bens para incorporação | 7 | ||||
4 - Clicar em "Exibir itens" | 2 | ||||
4 - Clicar em "Confirmar seleção" | 5 | ||||
4 - Clicar em "Carregar dados" | 4 | ||||
4 - Salvar movimentação | 10 |
Cenário de uso #5 - Logout | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
5 - Logout | 5 |
Resultado dos testes
Nesta seção serão apresentados os resultados obtidos da execução dos testes.
- Porcentagem de tempo do processador
- Descrição: Mede a saturação do processador e mostra a quantidade de tempo despendida para processar as threads por todas as CPUs.
- Limite recomendado: Abaixo de 75 %.
- Análise: A aplicação demonstrou desempenho esperado.
- Porcentagem de memória utilizada
- Descrição: Indica a porcentagem de memória utilizada para uso dos processos.
- Limite recomendado: Abaixo de 75 %.
- Análise: A aplicação utiliza uma quantidade significativa de memória.
- Kbytes totais pela interface de rede
- Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede.
- Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor).
- Análise: Ocorre picos de envio e recebimento de Kbytes realizados pelo sistema.
- Tempo médio de resposta das requisições
- Descrição: Indica o tempo médio de resposta das requisições.
- Limite recomendado: 5 segundos.
- Análise: A aplicação demonstrou desempenho esperado próximo à 350 usuários, com uma quantidade superior de usuários os servidores ficam sobrecarregados, aumentando significativamente o tempo de resposta.
- Tempo de vazão
- Descrição: Indica a quantidade total de request por segundo.
- Limite recomendado: Quanto maior melhor.
- A aplicação demonstrou desempenho esperado até atingir 400 usuários simultâneos.
- Porcentagem de erro
- Descrição: Indica a porcentagem de erro.
- Limite recomendado: Quanto menor melhor.
- A aplicação demonstrou grande porcentagem de erro.