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 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 1. Informação RÁPIDA 2. Informação CONFIÁVEL 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