Criado: junho/2006 Últ.modificação: outubro/2009

Slides:



Advertisements
Apresentações semelhantes
Metodologia de testes Nome: Gustavo G. Quintão
Advertisements

INFORMAÇÕES COMPLEMENTARES
ENGENHARIA DE SOFTWARE Garantia de Qualidade de Software
Introdução aos Sistemas de Informações Módulo 6
Noções de Sistemas Operacionais
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Rational Unified Process
Operadores e Funções do LINGO
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Confiança.
Garantia de Qualidade do software
ISO/IEC – 6 Avaliação do Produto – Módulos de Avaliação
Sistemas Operacionais de Rede Professor: João Paulo de Brito Gonçalves
Tópicos Motivação para teste Por que algumas empresas não testam
O padrão de gerenciamento de projetos de um projeto
Mecanismo de Proteção (Prevenção e Detecção)
Introdução à Informática
Análise de Requisitos Use Case Renata Araujo Ricardo Storino
Tópicos em Engenharia de Software II
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
Capítulo 6 Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios
Estudo de Caso 1: UNIX e LINUX
Sistemas Operacionais
Qualidade de Software Aula 2
Revisões de Software Parte 1
Aula 2 Aspectos Preliminares
Aula 4 Nomes, Vinculações, Tipos e Escopos
HellermannTyton Brasil Sistema de Gerenciamento Integrado HellermannTyton Brasil Sistema de Gerenciamento Integrado Alexandre Martins Consultor de Negócios.
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
FERRAMENTA PARA ANÁLISE DE IMPACTO BASEADO EM RASTREABILIDADE DE
TSDD Teste de segurança durante o desenvolvimento.
Testes – visão geral Vanilson Burégio.
Classes e objetos P. O. O. Prof. Grace.
JAVA: Conceitos Iniciais
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
REDUNDÂNCIA POR SOFTWARE
(Reliability) UFRGS-GUARITA-FINEP Desenvolvido por: Pablo Diego Didoné
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Cap 4 – Métricas do Processo e Projeto de Software
PMBOK 5ª Edição Capítulo 3
Gestão de Projetos Ms. Karine R. de Souza
Sistemas Operacionais
Carlos Oberdan Rolim Ciência da Computação
Tolerância a Falhas em Sistemas Distribuídos
GERENCIAMENTO DE REDES UTILIZANDO O PROTOCOLO SNMP
Semântica de Linguagens de Programação
Engenharia de Software com o RUP - Workflow de Testes Parte I
How to Break Software Capítulo 3 Taíse Dias Testing from the user Interface.
Teste de Sistemas de Software
Otimizando sua TI, maximizando seus negócios
Projeto de Banco de Dados
Universidade Federal de Pernambuco Centro de Informática Aluno: Erica Sousa – Orientador: Paulo Maciel – Modelagem de.
Técnicas e Projeto de Sistemas
Processo de Aquisição Adilson de Almeida Cezar Meriguetti
TESTES DE SOFTWARE Qualidade de software Professores: Juliano Bedin Juliano Bedin Sara Priscila Dutkwicz Leandro Bovi.
SISTEMAS OPERACIONAIS I
Marcio de Carvalho Victorino Processo Unificado. Unidade VI: Teste.
© 2004 by Pearson Education Computadores: Ferramentas para a Era da Informação Tema 0 PARTE A.
1. Conceitos de Segurança
Sistemas Tolerantes a Falhas: Conceitos e Técnicas
Qualidade de Software Aula 4
Segurança da Informação
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
RUP - Cap. 3 – Processo Dirigido por Caso de Uso
Sistema de Gestão de Segurança da Informação
Qualidade de Produtos de Software
TÉCNICAS DE ESTIMATIVAS
Estimativa, Teste e Inspeção de Software
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
Transcrição da apresentação:

Criado: junho/2006 Últ.modificação: outubro/2009 Testes de Sistemas Criado: junho/2006 Últ.modificação: outubro/2009

Tópicos Objetivos Fontes de informação para os testes Testes de requisitos funcionais Testes de requisitos não-funcionais (atributos de qualidade): Testes de desempenho Testes de robustez

Referências Leonardo Molinari. “Testes de Software: Produzindo Sistemas Melhores e Mais Confiáveis”, Editora Érica Ltda, São Paulo 2003. Arturo H.T. Zenteno. “Processo de Desenvolvimento e Testes para Aplicações SIG Web”. Trabalho Final de Mestrado Profissional. Jan/2006. Adriano L.C. Leite, Jane E. Morales. “Ferramentas CASE – JMeter”. Trabalho apresentado na disciplina INF308 – out/2005. Henrique Madeira. “Fault Injection”. Tutorial apresentado em 2004. Regina Lúcia de Oliveira Moraes, Eliane Martins, Elaine Cristina Catapani Poletti, Naaliel Vicente Mendes. “Using Stratified Sampling for Fault Injection”. Apresentado no Latin-American Symposium on Dependable Computing (LADC) 2005, Salvador, BA, Brasil. R. Moraes, R. Barbosa, J. Durães, N. Mendes, E. Martins, H. Madeira. “Do injected component interface faults represent software bugs?”. A ser apresentado na European Dependable Computing Conference (EDCC), 2006, Coimbra, Portugal. R.S. Pressman. Engenharia de Software. 6ª edição, 2005, McGraw Hill, c. 13.6.

Mais referências C. Cachin, J. Camenisch, M. Dacier, Y. Deswarte, J. Dobson, D. Horne, K. Kursawe, J.C. Laprie, J.C. Lebraud, D. Long, T. McCutcheon, J. Muller, F. Petzold, B. Pfitzmann, D. Powell, B. Randell, M. Schunter, V. Shoup, P. Verissimo, G. Trouessin, R.J. Stroud, M. Waidner, and I. Welch, ―Malicious- and Accidental-Fault Tolerance in Internet Applications: Reference Model and Use Cases,‖ LAAS report no. 00280, MAFTIA, Project IST-1999-11583, p. 113, Aug. 2000. PROTOS - Security Testing of Protocol Implementations. Obtained in Mai/2008 at: http://www.ee.oulu.fi/research/ouspg/protos/. N. Neves, J. Antunes, M. Correia, P. Veríssimo, R.Neves. ―Using Attack Injection to Discover New Vulnerabilities‖. In: Proc. of the International Conference on Dependable Systems and Networks (DSN), 2006, pp 457-466. Herbert H. Thompson, James A. Whittaker, Florence E. Mottay. ―Software security vulnerability testing in hostile environments‖. ACM Symposium on Applied Computing (SAC) 2002: 260-264. Madrid, Spain. Ricardo D. da Silva. Metodologias para Validação de Segurançaa NIST e OSSTMM Aplicadas ao Sistema de venda de Bilhetes pela Internet. Trabalho apresentado como parte da disciplina MO409-2009.

Objetivos Combinação de testes que tem por objetivo: revelar falhas de sistema demonstrar que o sistema em teste implementa os requisitos funcionais e não funcionais o sistema foi construído corretamente ?

Fontes de informação para os testes Especificação de requisitos. Protótipo, layouts ou modelos da IU. Políticas da organização implementadas como objetos de negócio, “stored procedures” ou “triggers”. Características do produto descritas na literatura. Características e procedimentos descritos na documentação, telas de ajuda ou assistentes de operação (“wizards”). Padrões. Especificação deve ser: completa consistente precisa  testável

Testes dos requisitos funcionais Visam verificar se as funcionalidades especificadas foram devidamente implementadas  Uso de métodos de testes caixa-preta : partição de equivalência valores-limite tabela de decisão / grafo causa-efeito modelos de estado diagramas de casos de uso cenários ...

Testes dos requisitos não funcionais Visam determinar se a implementação do sistema satisfaz aos requisitos não funcionais Tipos de testes: configuração e compatibilidade desempenho estresse usabilidade robustez segurança ...

Exemplo de como expressar requisitos não-funcionais desempenho tamanho usabilidade confiabilidade portabilidade Nro.transações/segundo tempo de resposta Kbytes nro. de chips de RAM tempo de treinamento número de quadros de ajuda tempo médio entre defeitos (failure) taxa de ocorrência de defeitos disponibilidade tempo de reinicialização após defeito % de eventos que levam a defeitos probabilidade de que dados sejam corrompidos % comandos dependentes de plataforma número de plataformas-alvo

Testes de configuração e compatibilidade Verificam se a implementação é capaz de executar nas diferentes configurações do ambiente alvo que foram especificadas Verificam se a implementação é capaz de interoperar com sw e hw conforme especificado: sistemas já existentes plataformas específicas de hw diferentes (versões de )sistemas operacionais diferentes interfaces gráficas (X-Windows, Microsoft Windows) diferentes API e IDL diferentes SGBD

Testes de desempenho Visam determinar se implementação satisfaz aos requisitos de desempenho especificados: configuração de rede tempo de CPU limitação de memória carga do sistema taxa de chegada de entradas esses requisitos devem ser descritos de forma testável ex.: nº de transações/seg ou tempo de resposta em seg, mseg O sistema é testado em condições reais de operação.

Variações dos testes de desempenho Testes de carga geralmente associados com sistemas transacionais usam simuladores de carga para geração de múltiplas transações/usuários simultaneamente Testes de volume geralmente usados para sistemas “batch” consistem na transmissão de um grande volume de informações quando o sistema está com a carga normal ou uso de arquivos grandes (maior tamanho possível) ou de grande número de arquivos

Teste de estresse Visa ir além dos limites do sistema, seja em nº de usuários simultâneos, seja em volume de dados, seja em nº de processos ou de transações: verificar se o sistema não apresenta um comportamento de risco quando submetido a carga elevada e com um ou mais recursos saturados. Importância: muitos sistemas apresentam comportamento de risco nessa situação falhas detectadas são sutis correções desse tipo de falha podem requerer retrabalho considerável

Testes da tolerância a falhas Visam verificar os mecanismos de detecção e recuperação de erros: Recuperação automática: Mecanismos implementados corretamente ? Tempo de resposta é aceitável ? Recuperação manual O tempo médio de reparo é aceitável ? São realizados usando-se testes por injeção de falhas

Injeção de falhas Histórico O que é Objetivos: Anos 70, visava testar componentes de hw Introdução de defeitos de hw O que é Técnica de validação de software que consiste em observar o funcionamento de um sistema em presença de falhas ou erros. Objetivos: Verificação – remoção de falhas de software no sistema em teste. Medição – obtenção de medidas de atributos de qualidade: confiabilidade, disponibilidade, entre outras.

Injeção de Falhas: Princípio Carga de trabalho (workload) Carga de falhas (faultload) Válidas (sucesso) Inválidas (defeito) Medições Sistema alvo Entradas Saídas [base: Arlat90]

Principais técnicas Injeção por hardware: Pinos de componentes Radiação íons pesados ou eletromagnéticas Perturbações na fonte de alimentação Entre outros

SP Technical Research Institute of Sweden Inspector FI - Fault Injection - offers all features to perform fault injection testing on smart card technology. Faults: clock and voltage glitching, advanced optical attacks with purpose-built laser equipment. Fault injection attacks - also known as perturbation attacks - change the normal behaviour of a chip by inducing an exploitable fault. With Inspector FI, a user can test if a key can be extracted by inducing faults in a chip’s cryptographic operations, bypass a check such as an authentication or a lifecycle state, or change the program flow of code on the chip. We provide services in the field of fault injection, which is an mandatory activity in the IEC 61508 safety standard for programmable systems requiring high error detection ability. SP Technical Research Institute of Sweden

Principais técnicas Injeção por hardware: Simulação de falhas: Complexidade do hw Baixa controlabilidade Baixa observabilidade do efeito das falhas Grande custo de desenvolvimento Baixa portabilidade Injeção por hardware: Pinos de componentes Radiação íons pesados ou eletromagnéticas Perturbações na fonte de alimentação Entre outros Simulação de falhas: Geralmente são falhas que afetam um modelo de componentes de hw: circuitos, portas lógicas, etc. Injeção por software: Software que injeta falhas Boundary scan Modelos complexos Esforço de desenvolvimento é alto Tempo de execução dos experimentos é alto

Injeção de falhas por software Princípio: A execução do sistema alvo é interrompida de alguma forma: Execução em “trace mode”, temporizador, instrução executada, ... Uma rotina de injeção de falhas é executada, emulando a ocorrência de falhas pela introdução de erros em diferentes partes do sistema: Registradores, memória, variáveis, parâmetros, mensagens, ... A execução do sistema é retomada. O comportamento do sistema é observado para determinar a manifestação do erro: Fronteira de componentes, de sistema, tratadores de erro/exceção.

Vantagens e limitações Pouco afetada pela complexidade do sistema alvo Baixa complexidade Baixo custo de implementação de injetores Maior portabilidade Não tem interferência física com o sistema alvo, ou seja, não há risco de danificá-lo Limitações Difícil testar dispositivos periféricos Impacto dos injetores no sistema alvo é alta

Algumas ferramentas Existem diversas ferramentas: Orchestra, Ftape, ComFirm, ... Xception (Univ. Coimbra  Critical): Emula falhas de hw Usa capacidade embutida de monitoração e debugging existente em processadores modernos (PowerPC, Pentium, ...) para injetar falhas com baixa interferência. Injeta falhas em unidades aritméticas (inteiros e ponto flutuante), barramentos de dados e de endereços, registradores, memória.

Objetivos Eliminação de falhas  verificação Resultado: veredicto (Sucesso, Defeito) Previsão de Falhas  medição Cobertura de falhas: #falhas reveladas / #falhas injetadas Nº de defeitos ocorridos ... Medidas indiretas de confiabilidade

Medidas de confiabilidade Confiabilidade: capacidade de atender a especificação, dentro de condições definidas, durante certo período de tempo e condicionado a estar operacional no início do período Taxa de defeitos (failure rate) número esperado de defeitos em um dado período de tempo, assumido como um valor constante durante o tempo de vida útil do componente MTTF (Mean Time to Failure) tempo esperado até a primeira ocorrência de defeito MTTR (Mean Time to Repair) tempo médio para reparo do sistema MTBF (Mean Time Between Failures) tempo médio entre defeitos do sistema

Robustez O que é [IEEE Std Glossary]: O grau em que um sistema ou componente pode funcionar corretamente em presença de entradas inválidas ou sob condições ambientais estressantes. Em suma, pode ser interpretado como a capacidade do sistema em: Tratar exceções Tolerar falhas Como medir robustez? proposta de Robustness Benchmark Como determinar se um sistema é robusto? Realização de testes de robustez

 Testes de robustez Objetivo: Verificar se o comportamento do sistema é adequado em presença de: Entradas inválidas Entradas inoportunas Condições ambientais anormais Abordagens: Formais Baseadas em injeção de falhas

Esquema típico dos testes de robustez Comportamento especificado Espaço de entrada Espaço de saída Operação robusta Normal Não especificado Deve retornar erro Entradas válidas Entradas inválidas ou inoportunas Software em Teste Defeito Falhas de interface [base: Koopman99]

Testes de Robustez em Sistemas Baseados em Componentes Out2 In2 Successor1 UI Out1 In1 Predecessor CUT Successor2 Out3 In3 Injetar falhas nas interfaces entre o componente e o resto do sistema: O componente é robusto com relação às falhas de outros componentes? O sistema é robusto com relação às falhas do componente escolhido? Qual o risco de usar o componente no sistema? O texto ilustra a utilidade dos testes de robustez para sistemas baseados em componentes. Útil para emular situações que podem ocorrer quando se muda o componente de contexto.

Abordagens e (algumas) Ferramentas (1) Fuzz: Entradas geradas aleatoriamente usando teclado e/ou mouse Usada nos testes de aplicações Unix via linha de comando (1990) Testes do X-Window (1995) Testes do Windows (2000) Colapso (crash) de 40% das aplicações testadas MAFALDA (LAAS-CNRS) Microkernel Assessment by Fault injection AnaLysis and Design Aid Teste de núcleo de sistemas operacionais (e.g. LynxOS) Injeta falhas nos parâmetros de chamadas ao sistema

Abordagens e (algumas) Ferramentas (2) JCrasher (Georgia Tech): Injeção de falhas de interface: Injeta em parâmetros e retorno de métodos públicos de classes Analisa o código para determinar domínio dos parâmetros dos métodos Combina com análise estática do bytecode para determinar falhas no código Produz testes de robustez em JUnit Protos (University of Oulu) O nome vem do objetivo da ferramenta, que é testar segurança de protocolos Ferramenta utilizada nos testes de diversos protocolos: WAP, RTP (VoIP), entre outros

Abordagens e (algumas) Ferramentas (3) Jaca (Unicamp): Injeção de falhas de interface: Injeta em parâmetros e retorno de funções Usa reflexão computacional para afetar o comportamento de programas Java. Usado nos testes de um gerenciador de banco de dados OO Ballista (Carnegie-Mellon) Abordagem e ferramenta Combina injeção de falhas e testes (valores-limites) Valores válidos e inválidos nos limites Valores escolhidos de um BD de valores pré-definidos Valores variam de acordo com o tipo do dado Usado nos testes de sistemas operacionais Diferentes versões do Unix; Windows

Exemplo de valores pré-definidos - Ballista API: write(int filedesc, const void *buffer, size_t nbytes) Tipos de descritor buffer de tamanho dados de arquivos memória SIZE_1 SIZE_ZERO SIZE_NEG SIZE_MININT SIZE_MAXINT ... FD_CLOSED FD_OPEN_READ FD_OPEN_WRITE FD_DELETED FD_EMPTYFILE ... BUF_SMALL_1 BUF_LARGE_512M BUF_HUGE_2G BUF_NULL BUF_16 ... Valores de teste Na metodologia Ballista, os dados de teste são obtidos de acordo com o tipo do dado Caso de teste write(FD_CLOSED, BUF_NULL, SIZE-NEG) (inspirado em Koopman2008)

Mais valores do modelo Ballista Tipo do dado Valores Inteiro 0, 1, -1, MaxInt, MinInt Real 0., 1., -1., DblMin, DblMax Boolean Inversão de estado (V F, F  V) String Null, string do tamanho da memória virtual, string com caracteres especiais (fim de arquivo, formatação, etc) Descritor de arquivo (tipo inteiro) 0, 1, -1, MaxInt, MinInt descritor de: arquivo aberto para leitura, arquivo aberto para escrita, arquivo vazio, arquivo apagado após o descritor ter sido atribuído Fonte: Projeto Ballista - http://www.ece.cmu.edu/~koopman/ballista/

Ballista: classificação da não-robustez Escala CRASH para classificar os defeitos de robustez : Catastrófico: S.Op. é corrompido; a máquina “cai” ou reinicia Reinicialização (Restart): A aplicação fica bloqueada e precisa ser abortada Aborto: A aplicação terminou anormalmente (abortou por si) Silêncio: Nenhum erro (exceção) foi assinalado, quando deveria ter sido Obstrução (Hindering): O código de erro retornado não é o correto

Exemplos de resultados da aplicação de Ballista com Sistemas Operacionais Sistema operacional Nº funções testadas Nº de funções “system killers” Exemplo de funções “system killer” % de defeitos de robustez (normalizada) Linux 2.0.18 190 N/a 12,5 Red Hat Linux 2.2.5 183 21,9 Windows 98 SE SP 1 237 7 CreateThread, DuplicateHandle, strncpy, ... 17,8 Windos CE 2.11 179 28 13,7 Sun JVM 1.3.1-04 (Red Hat Linux 2.4.18-3) 226 4,7 “system killer”: testes de robustez que causaram defeito catastrófico: colapso (crash) ou bloqueio (hang) do S.Op. Em alguns casos conseguiram localizar a falha, e geralmente a falha estava em uma função, designada como “system killer function”. Funções chamadas que foram a causa do defeito catastrófico Nº de funções chamadas que foram a causa do defeito catastrófico Fonte: Philip Koopman, Kobey DeVale, and John DeVale. INTERFACE ROBUSTNESS TESTING: EXPERIENCES AND LESSONS LEARNED FROM THE BALLISTA PROJECT. Relatório, 2008.

A ferramenta Jaca Voltada para aplicações Java Utiliza reflexão computacional para interceptar chamadas e retornos de métodos Aplica modelo de falhas da abordagem Ballista

Exemplos de resultados com a JACA Jaca: injeção de falhas na API (Ballista) Aplicação (OO7) OO-SGBD (Ozone) Propriedades ACID respeitadas?

Mais exemplos de resultados com a JACA Saídas observadas Total Término normal 200 Exceção levantada pela aplicação 4 Exceção levantada pelo gerenciador de BD — Término normal, mas integridade do BD violada 5 Término anormal e integridade do BD violada 1 210

Testes de segurança Visam verificar a capacidade do sistema de impedir acesso não autorizado, sabotagem ou outros ataques intencionais Características básicas de segurança são testadas como as outras funcionalidades (logon/logoff, permissões) Testes são geralmente feitos por especialistas ou “hackers” contratados Testam a capacidade do sistema de resistir a ataques Quem realiza os testes deve “pensar” como um atacante

Serviços e recurso do sistema estão prontos para serem usados Disponibilidade S E G U R A N Ç Ausência de acesso não autorizado à informação Confidencialidade Integridade Ausência de adulteração da informação Outras propriedades: Privacidade: prevenção de interceptação (não autorizada) de informação Autenticação: identificação e validação de usuário para acesso à informação Irretratabilidade (non-repudiation): prevenção da negação de serviço de envio ou recepção de informação ...

Ameaças à segurança - 1 Vulnerabilidade É uma falha (maliciosa ou não) introduzida durante o desenvolvimento e que pode ser usada por atacantes ter acesso ao sistema ou a informações Causas para seu aparecimento são várias: Complexidade Senhas fracas Deficiências no gerenciamento de senhas e privilégios Deficiências do Sistema Operacional Falhas de software ...

Ameaças à segurança -2 Vulnerabilidade Ataques: São atividades externas maliciosas que violam propriedades de segurança (ex.: confidencialidade, integridade,...). Várias classificações: Quanto às propriedades de segurança visadas Quanto à forma de realizar

Tipos de ataques  Fluxo normal da informação Destino Fonte Interrupção: ataque contra a disponibilidade  Interceptação: ataque contra a confidencialidade / privacidade

Tipos de ataques Fluxo normal da informação Destino Fonte Modificação: ataque contra a integridade Fabricação: ataque contra a autenticidade

Ameaças à segurança -3 Vulnerabilidade Ataques Intrusão = ataque + vulnerabilidade.

Resumo: ameaças à segurança I Ataques (falhas maliciosas externas) Vulnerabilidade Intrusão erro defeito falhas acidentais externas Sistema V Exemplo de falhas acidentais externas: exemplo dado pelo R.Dahab, sobre um sistema de criptografia que não deveria permitir que a chave fosse transmitida em claro pelo barramento. O otimizador do compilador eliminou, no binário, o código que encriptava e descriptava a chave, por achá-lo redundante.

Formas de validação da segurança Com base na experiência Testes com base em ataques conhecidos Uso de ferramentas Experiência + uso de ferramentas (ex.: verificadores de senhas, analisadores estáticos, vulnerability scanners) Uso de tiger teams Grupos de especialistas em encontrar vulnerabilidades e determinar formas de proteção dos sistemas Descobrem vulnerabilidades realizando ataques Uso de métodos formais Verificação formal da segurança [Sommerville2006]

Recomendações para Testes de Segurança Critérios e metodologias para testes de segurança foram propostos por diferentes grupos: NIST (National Institute of Standards and Technology) Manual descrevendo técnicas a serem usadas nos testes de segurança OSSTMM (Open Source Security Testing Methodology Manual) desenvolvido pela ISECOM (Institute for Security and Open Methodologies) Manual descreve a metodologia proposta para testes e análise de segurança OWASP (Open Web Application Security Project) Guia descrevendo melhores práticas para a realização de testes de penetração para aplicações e serviços Web

Testes de validação Testes de aceitação: Testes de conformidade: Realizados pelo cliente para decidir se aceita ou não o sistema Realizados de acordo com um Plano de Aceitação Testes de conformidade: Visam verificar se a implementação satisfaz à legislação ou a padrões estabelecidos Podem ser realizados por centros de certificação

Testes de Aceitação Têm os mesmos objetivos que os testes de sistemas, só que envolvem a participação do cliente ou usuário Referências: Manual do Usuário Testes alfa Realizados por um grupo de usuários no ambiente de desenvolvimento Visam determinar se o sistema pode ser liberado Testes beta Realizados por um grupo de usuários em ambiente de operação

Principais pontos aprendidos

Tipos de ataques Ataques passivos: interceptação, monitoramento e análise de pacotes Exemplos: Adware: programa que visa obter informações pessoais do usuário através da Internet, enviando-as para outra máquina. Hack tools: ferramentas que visam obter acesso não autorizado em outros computadores. Ex.: keystroke logger Spyware: programas que monitoram o sistema secretamente, obtendo dados confidenciais e senhas, reenviando-os a outro computador Ataques ativos: adulteração, fraude, reprodução, bloqueio Cavalo de tróia: programa que executa funções não autorizadas, podendo causar perdas de dados ou comprometer a segurança. Não se replica automaticamente Virus: programa que se replica, infectando outros programas e arquivos. Worm: programa que se replica através da rede, podendo causar perdas de dados ou comprometer a segurança. Adware: interceptação de informação, em geral para fins de propaganda, obtendo dados relacionados aos sites que são tipicamente visitados durante a navegação pela Internet. A máquina pode ser infectada através de downloads de e-mail, Web sites e instant messengers. Cavalo de tróia: É um programa que é capaz de causar danos ou comprometer a segurança do computador. Ele não se retransmite automaticamente, e geralmente é recebido por e-mail, em forma de um joke program ou de alguma forma de software. Vírus: Um tipo de programa que auto duplica, infectando outros programas, partições, setores de boot, ou documentos que suportam macros. Ele se insere naquilo que deseja atacar, podendo causar grandes danos. Worms: Um programa capaz de se replicar e se retransmitir para outros drives, e-mails, ou outros mecanismos de transporte. Ele pode comprometer a segurança do computador, além de poder também causar danos. Em geral, ele vem com formato de um joke program ou algum outro tipo de software. E mais ... Replay: quando msg (ou parte dela) é interceptada e posteriormente transmitida para produzir um efeito não autorizado. Recusa ou impedimento de serviço: uma entidade deixa de executar sua função apropriadamente ou atua de forma a impedir que outras entidades executem suas funções. Armadilha (trapdoor): modificação de uma entidade do sistema para produzir efeitos não autorizados em resposta a um comando, um evento ou seq de eventos, pré-determinados ...

Injeção de ataques Um tipo de teste de segurança Existem diversas técnicas, dentre as quais: Emulação de ambientes hostis Injeção de pacotes na rede Alteração da sintaxe de mensagens Envio de mensagens ou pacotes mal-formados Emulação de ataques Uso da Ballista Uso de testes aleatórios (fuzzing) Uso de modelo de ataques

Avaliação de ferramentas Quão confiáveis são as ferramentas de detecção de vulenrabilidades existentes? Testes com vulnerability scanners: vulnerability scanners: detectores de vulnerabilidades em aplicações, redes Foram analisados 3 detectores comerciais para aplicações Web: Acunetix Web Vulnerability Scanner, IBM Rational AppScan, HP WebInspect Foram utilizados 300 serviços Web como alvo Vieira, M., Antunes, N., Madeira, H., “Using Web Security Scanners to Detect Vulnerabilities in Web Services”, (accepted) IEEE/IFIP Intl Conf. on Dependable Systems and Networks, DSN 2009, Lisbon, Portugal, June 2009; Internal report available at http://eden.dei.uc.pt/~mvieira

Resultados Ferramentas e suas versões Vulnera-bilidades que as ferramentas alegam detectar Tipos de vulnerabilidades detectadas pelas ferramentas: SQL Garantia de anonimato das ferramentas

Uma forma de modelar ataques Árvore de ataques (Schneier 1999): O nó raiz representa o objetivo final do ataque. Cada nó filho representa um sub-objetivo para que o objetivo do nó pai tenha sucesso. A relação pode ser dos tipos OU e E. As folhas representam as ações de um atacante. Pode-se atribuir atributos às folhas: Possibilidade ou não de realizar a ação Custo da ação para o atacante ... Os atributos podem ser propagados até a raiz B. Schneier, B., “Attack Trees: Modeling Security Threats”, Dr. Dobb‘s Journal, December 1999.

Exemplo: atacante quer abrir um cofre Abrir cofre P objetivos Rouba fechadura I Aprende segredo P Arromba o cofre P Consegue o segredo P Ações do atacante Acha combinação escrita I Escuta I Ameaça I Chantagem I Suborno P E Ouve conversa P Leva o dono a dizer a senha I P – possível I - impossível

Cenários de ataque Obtidos usando uma busca em profundidade na árvore Somente folhas são mantidas no cenário, pois estas representam as ações do atacante Critério: Cobrir todas as folhas que representem ações possíveis de serem realizadas pelo atacante

Cenários de ataques possíveis Abrir cofre P Rouba fechadura I Aprende segredo P Arromba o cofre P Consegue o segredo P Acha combinação escrita I Escuta I Ameaça I Chantagem I Suborno P E Cenários: Arromba o cofre Suborno Ouve conversa P Leva o dono a dizer a senha I

Workflow típico de teste de desempenho Fase 1 Fase 2 Fase 3 Fase 4 Fase 5 Planejar teste de carga Criar Cenários Criar usuários virtuais Executar Cenários Analisar o sistema testado Ajuste do siste- ma baseado na análise

Exemplo de ferramenta: JMeter JMeter é um software open-source mantido pelo grupo Jakarta Apache para a realização de testes de desempenho. Escrito em Java (100%)  utilizável em diversas plataformas. Permite que uma só máquina faça várias requisições simultaneamente (multithreading). Com isso, permite representar um grupo de usuários executando determinada(s) solicitação(ões). As solicitações podem ser feitas via HTTP, FTP, SOAP, JDBC, LDAP e Java. Dados podem ser enviados como parte de uma solicitação. Interface gráfica tanto para preparar os testes quanto para exibir resultados.