Teste de Segurança em Aplicações Prontas

Slides:



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

Engenharia de Software Qualidade de Software Uma abordagem conceitual André Luis Zanon São Carlos SP – UFSCAR 2010 Engenharia de Software – UFSCAR.
Adélia Barros Testes de Software Adélia Barros
Nome da Apresentação Clique para adicionar um subtítulo.
Pontifícia Universidade Católica de Campinas
Segurança em Redes - Código Seguro
Tópicos Motivação para teste Por que algumas empresas não testam
Autarquia Educacional do Vale do São Francisco – AEVSF Faculdade de Ciências Sociais e Aplicadas de Petrolina – FACAPE Curso de Ciências da Computação.
Segurança em Redes Elmar Melcher
Emitindo seu Certificado Digital
Emitindo seu Certificado Digital
Segurança em Web 2.0 Paola Garcia Juarez
Requisitos Funcionais e Não-Funcionais/ Documento de Requisitos
TSDD Teste de segurança durante o desenvolvimento.
Testes – visão geral Vanilson Burégio.
Informática Básica Unidade IV.
S ISTEMA O DIN Egio Arruda Junior. S ISTEMA O DIN - I NTRODUÇÃO Requisitos; Visão Geral; Visão Cliente; Visão Servidor; Instanciando o Odin; Discussão.
Marcos Aurélio Rodrigues
Trabalho – 03/09/ FIM.
Introdução aos conceitos de Teste de Software
Estudo de Caso: Técnicas de Teste como parte do Ciclo de Desenvolvimento de Software Aline Pacheco Patric Ribeiro Diego Kreutz.
Classificação de Ataques
Segurança na Web SSL - Secure Socket Level TLS - Transport Layer Security SET – Secure Electronic Transaction.
SQL Injection.
O Ambiente Cooperativo
Visão Geral PRO.NET.
Introdução ao Desenvolvimento Web
AULA 14 -Principais formas de ameaças em sistemas computacionais
A autoria - II.
Nova solução CRM da Riosoft
Treinamento AJAX Segurança
Teste de Sistemas de Software
Otimizando sua TI, maximizando seus negócios
Qualidade de Software Eduardo Nicácio Guilherme Milreu Igor Furlan Jonas Frei Renata Policarpo Wesley Villar.
Fase de Concepção (Início, Planejamento)
Faculdade de Tecnologia SENAI de Desenvolvimento Gerencial
Processo de Aquisição Adilson de Almeida Cezar Meriguetti
Levantamento de Requisitos
Marcio de Carvalho Victorino Processo Unificado. Unidade VI: Teste.
Especialização em Segurança da Informação MELHORES PRÁTICAS DE PROGRAMAÇÃO Carlos/Cleofas/Rafael/StéphanasSegurança em Aplicações.
Levantamento de Requisitos
Teste de Software Conceitos iniciais.
Sistemas Tolerantes a Falhas: Conceitos e Técnicas
IIS Web Server.
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.
1.2 – Tipos de Ataques Cavalo de Tróia; Backdoors; Spoofing; Sniffing;
RUP - Cap. 3 – Processo Dirigido por Caso de Uso
Prof.°: João Henrique Disciplina: SOR II
Automação de Testes de Software
Fase de Concepção Levantamento de Requisitos, Organização de Requisitos, Planejamento dos Ciclos Iterativos.
VPN VPN VIRTUAL PRIVATE NETWORK. VPN - DEFINIÇÃO VPN é uma conexão onde o acesso e a troca de dados somente é permitido a usuários e/ou redes que façam.
Sistema de Gestão de Segurança da Informação
SISTEMAS de INFORMAÇÃO segunda-feira, 1 de fevereiro de 2010
FIREWALL.
Tema 2: Técnicas de desenvolvimento seguro
Qualidade de Produtos de Software
Trabalho Teórico Sistemas Distribuídos e Tolerância a Falhas
Sobre a Prime Control A Prime Control é um Centro de Excelência em Qualidade de Software. Nossa missão é desenvolver, aperfeiçoar e realizar serviços.
Engenharia de Software com o RUP - Workflow de Requisitos
Apresentação Leonardo Brussolo de Paula
TÉCNICAS DE ESTIMATIVAS
Estimativa, Teste e Inspeção de Software
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
GUTS-RS TESTES EM PROJETO DE IMPLANTAÇÃO ERP.
Faculdade de Tecnologia SENAC Pelotas/RS Curso Superior de Tecnologia em Redes de Computadores Projeto Integrador I Seminário Final Ferramenta Nessus e.
UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE CIÊNCIA DA COMPUTAÇÃO Redes de Computadores Ferramenta NTop (Network Traffic Probe) Explorador.
Introdução ao Gerenciamento de Redes de Computadores Curso Técnico em Redes de Computadores Professor Emerson Felipe Capítulo 01 Gerenciamento de Redes.
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
Transcrição da apresentação:

Teste de Segurança em Aplicações Prontas

Teste de Segurança em Aplicações Prontas Apresentação Albene Teixeira Chaves Borges Carlos Henrique de Barros Carlos Henrique Oliveira Bispo Eduardo Henrique Pontes Humberto Luis Floriano de Toledo Leonardo Santana Gunes Amorim Paulo Henrique Borges Megda

Teste de Segurança em Aplicações Prontas Agenda Introdução. Testes de segurança em aplicações. SFR - Security Functional Requirements. Modelo de ameaças. Testes de penetração. Tipos de testes de penetração. Conclusão. Bibliografia.

Teste de Segurança em Aplicações Prontas Introdução Expansão da Internet Globalização

Teste de Segurança em Aplicações Prontas Introdução e Motivação: Entre os principais requisitos de qualidade de software segundo Pressman [1] estão a reusabilidade, manutenabilidade, portabilidade, confiabilidade, usabilidade e interoperabilidade. Dentre estes, a reusabilidade representa uma alternativa significativa para incrementar a produtividade e a qualidade no desenvolvimento e na manutenção do software. O desenvolvimento de software com reuso é uma abordagem que tenta maximizar a reutilização de componentes de software já existentes [3], ou seja, o desenvolvimento baseado em componentes permite que uma aplicação seja construída através da reutilização de componentes de software que já foram bem especificados e testados anteriormente. Um dos principais motivos para este reuso é a diminuição dos custos durante o processo de desenvolvimento [2]. Interface: A especificação de todas as funcionalidades de um componente de software é representada através de suas interfaces. Uma interface é uma coleção de operações que são utilizadas para especificar um serviço do componente [5]. Uma interface resume como um cliente deve interagir com o componente, escondendo detalhes de implementação (idéia da caixa preta), fornecendo ao cliente todas as informações que ele precisa para utilizar o componente. Métodos get_Quanquer_Coisa() e set_Quanquer_Coisa () podem ser utilizados para ler ou modificar os dados do componente [6]. Componente como uma Caixa preta: Um componente de software pode ser considerado como uma caixa preta onde suas interações ocorrem através de sua interface. Empresa gera demandas Software gera Solução

Teste de Segurança em Aplicações Prontas INFORMAÇÃO = BEM DE ALTO VALOR

Teste de Segurança em Aplicações Prontas NECESSIDADE Informação RÁPIDA Informação CONFIÁVEL O desenvolvimento do software é baseado em componentes que já existem: o principal objetivo do sistema baseado no desenvolvimento de componentes(CBD) é a reutilização de componentes já existentes para a construção de um sistema [7,8], ou seja, componentes são partes de software que podem ser combinadas para formar um sistema maior [8]. Fornecimento de interfaces bem definidas: a única maneira de um componente interagir com outro é através de suas interfaces. A especificação do componente deve descrever explicitamente todas as interfaces que o cliente pode acessar [8]. Completa separação entre interfaces e implementação: componentes de software necessitam que a especificação das suas interfaces estejam completamente separadas da sua implementação, pois a especificação da interface, ao invés do código, define o que o componente realmente irá fazer e o que esperar do mesmo quando ele for utilizado [8]. Reutilização de especificação e projeto do componente: a reutilização de um componente não significa, apenas, a reutilização do código. É possível, também, reutilizar a especificação e o projeto do componente [3]. Projeto Baseado em Componentes versus Projeto OO: quando a construção de um software é baseada no projeto de componentes, não existe a necessidade de saber como o sistema é representado na forma de objetos ou como instâncias de uma classe. Objetos são instâncias criadas durante a execução do sistema, através da execução de um código, este código faz parte de um componente. Considerando esta diferença, um objeto não é um componente. Ele é o código interno do componente que pode ser reutilizado [8]. DESAFIO Informação SEGURA

Teste de Segurança em Aplicações Prontas + Segurança = tecnologia Cuidados com aplicações

Teste de Segurança em Aplicações Prontas Testes de segurança em aplicações Teste sistemático de avaliação de um software - Independente da plataforma de desenvolvimento. Objetivo - Garantir que o desenvolvimento seguiu práticas de segurança. Possibilita encontrar falhas - Interface; - Código.

Teste de Segurança em Aplicações Prontas Erros - Comprometem a confiabilidade e segurança das aplicações. Origens - Cronogramas apertados; - Alto nível de complexidade da aplicação; - Orçamentos reduzidos. Processo de teste eficiente - Verifica adequação(software) aos requisitos de segurança (SFR); - Revisão / criação e teste do modelo de ameaças; - Testes de ataque e penetração no sistema.

Teste de Segurança em Aplicações Prontas SFR - Security Functional Requirements Fase de desenvolvimento -Identificação dos objetivos de segurança para atender ao nível EAL (Evaluation Assurance Level). Fase de teste - Identificação dos requisitos funcionais; - Testes dos itens; - Garantia de conformidade com EAL.

Teste de Segurança em Aplicações Prontas Modelo de ameaças - permite identificar e estimar ameaças à aplicação. Fase de testes - Levantado e atualizado; - Filtra; - Direciona para áreas críticas.

Teste de Segurança em Aplicações Prontas Testes de penetração Avaliar a segurança de uma aplicação. * Simulação de um ataque. Objetivos - Encontrar falhas técnicas; - Fragilidades; - Vulnerabilidades. Problemas + Riscos + Impactos + Solução técnica = Relatório

Teste de Segurança em Aplicações Prontas O modelo de testes - Testador: quem executa as atividades; - A metodologia e ferramentas: guia de testes; - Aplicação: testes de caixa preta (Black Box Testing).

Teste de Segurança em Aplicações Prontas Testadores - Pessoas qualificadas na área de segurança; - Hackers e crackers; - Experiência; - Conhecimento aprofundado. Metodologia e as ferramentas - Guia define um caminho mais rápido e fácil; - Guia mostra como utilizar as ferramentas de testes.

Teste de Segurança em Aplicações Prontas TIPOS DE TESTES DE PENETRAÇÃO

Teste de Segurança em Aplicações Prontas Coleta de Informações - levantar informações sobre a aplicação a ser testada; - ferramentas públicas; - scanners; - envio de requisições http. Impressão digital da aplicação - descobrir a versão e o tipo do servidor web; - direcionar testes; - analisa o cabeçalho das respostas HTTP do servidor; - "httprint".

Teste de Segurança em Aplicações Prontas Identificação das aplicações - identificar aplicações hospedadas em um servidor web; - explorar as vulnerabilidades; - verificar atualização; - checar configuração. Spidering e Googling(poderosas e úteis) - bem/mal; - Data Minings(tags/dados/url/link).

Teste de Segurança em Aplicações Prontas Código de erros - revelam informações sobre bd; - bugs. DB Listener - componente do Oracle; - trata conexões remotas dos clientes. Teste da lógica do negócio - ataques perigosos; - difíceis de detectar e especificar. Ex. Transferência de valor em dinheiro > maior que permitido.

Teste de Segurança em Aplicações Prontas Casos de abuso - testar os controles da aplicação; - verifica bloqueio nas operações fora do casos de abuso. Ex. Vender produto por um preço negativo. Testes de autenticação - confirmar algo como sendo autêntico. Ex. Solicitação de usuário e senha para verificação de autenticidade. Constas de usuários previsíveis - nomes de usuários e senhas fáceis; - senhas fracas com pouca ou nenhuma atualização periódica.

Teste de Segurança em Aplicações Prontas Força bruta - diferentes caracteres. Esquema de autenticação - burlar o processo de autenticação; - SQL injection. Acesso a diretórios - testa de acesso a diretórios e arquivos. Reset de senhas - testa esta funcionalidade do sistema. Teste de logout - encerramento de sessão após logout; - logout automático por inatividade.

Teste de Segurança em Aplicações Prontas Testes de gerenciamento de sessão - mantém estado desde a autenticação até o fechamento. Esquema de gerenciamento - avaliar a confiabilidade. Cookies - ganhar sessão. Variáveis de sessão - verifica exposição; - transmissão cliente servidor segura; - usa protocolos com criptografia. Validação de dados - tratamento e validação de dados.

Teste de Segurança em Aplicações Prontas Cross site scripting - execução de scripts indesejáveis. Métodos HTTP - métodos não seguros de acesso habilitados(PUT, DELETE, CONNECT, TRACE). SQL Injection - injeção de código SQL na entrada de dados da aplicação. Bd Oracle - acesso pelo PL/SQL ; - pontos falhos no gateway.

Teste de Segurança em Aplicações Prontas XML Injection - XML parser trata corretamente entradas inválidas. IMAP/SMTP Injection - comandos IMAP/SMTP nos servidores de e-mail(dados não tratados). Buffer Overflow - verificar como a aplicação trata as tentativas de buffer overflow.

Teste de Segurança em Aplicações Prontas Negação de serviço(DoS) - ataque comum; - indisponibiliza servidor. DDoS (Distruibuted Denial of Service) - ataque de máquinas zumbis. Bloqueio de contas válidas - bloqueio devido password inválido.

Teste de Segurança em Aplicações Prontas Alocação de objetos - paralisação do servidor devido alocação de grande nro de objetos. Loop por contador - loops por contador na aplicação. Estouro de logs - enchimento do disco de dados da aplicação através do envio de alto volume de dados ao servidor. Liberação de recursos - memória; - arquivos. Estouro de sessão - encher a sessão com dados e esgotar recursos de memória do servidor.

Teste de Segurança em Aplicações Prontas Conclusão Concluímos que o teste de segurança é uma operação essencial e indispensável para garantir que uma aplicação não possua falhas que possam permitir a uma pessoa maliciosa atacar tanto o hardware quanto o software. Também foi possível concluir que para realizar teste de alto nível é necessário planejamento, organização e, documentação de resultados e de soluções. Além disso, é extremamente necessário ter profissionais com experiência e conhecimento em segurança para que, utilizando boas ferramentas, possam realizar diversos tipos de testes em aplicações e assim pontuar níveis de segurança.

Teste de Segurança em Aplicações Prontas Referências Ebook: Addison.Wesley, Software.Security.Building.Security.In. (2006).BBL http://www.softwaremag.com/l.cfm?doc=2004-09/2004-09software-security -testing - acesso em 25/06/2007 Ebook: OWASP Testing Guide v2 (2007) http://www.invasao.com.br/coluna-andre-11.htm acesso em 25/06/2007 http://en.wikipedia.org/wiki/Common_Criteria