Testes de segurança Conferência Código Seguro 25 Nov 2004 Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2004 All Rights Reserved.
Agenda O que é segurança Tipo de segurança Testes Funcionais De Segurança Objectivos Boas práticas Planeamento Uso de ferramentas automatizadas Etc... Caso prático 2
O que é segurança? O que é segurança? Segurança é um processo,não um produto Bruce Schneider Author, Secrets and Lies: Digital Security in a Networked World 3
O que é segurança? Porque processo? Estamos a fazer os testes bem? Só quando temos um processo estabelecido é que conseguimos ter outras preocupações e melhorar a maneira como fazemos as tarefas. É fundamental ter um bom processo de testes para pensar em testes de segurança. 4
O que é segurança? Um dos processos é o ENG.1.6 Software Testing Este processo é ortogonal a todo o ciclo de vida de um projecto 5
Agenda O que é segurança Tipo de segurança Testes Funcionais De Segurança Objectivos Boas práticas Planeamento Uso de ferramentas automatizadas Etc... Caso prático 6
Tipo de segurança Técnica Sistemas inseguros Ataques Física Acesso sem restrições Hardware vulnerável Social Utilizadores usam passwords fáceis de adivinhar 7
Agenda O que é segurança Tipo de segurança Testes Funcionais De Segurança Objectivos Boas práticas Planeamento Uso de ferramentas automatizadas Etc... Caso prático 8
Testes Funcionais (aquilo que se sabe) Execução de um conjunto de operações mediante todas as entradas possíveis. Os resultados obtidos são comparados com os previstos. Pode dar muitos casos de erros, mas não tipicamente não são críticos. De Segurança (aquilo que não se sabe) Execução de determinadas operações com uma combinação especial de entradas. Pode não dar nenhum problema em 99,9% dos casos, mas quando dá, é dramático! 9
Testes funcionais Permitem aumentar a confiança no cumprimento dos requisitos (funcionais) do software. Devem mostrar duas coisas: Que a aplicação faz o que deve fazer Que a aplicação não faz o que não deve fazer 10
Testes de segurança Reduzem as dúvidas sobre a vulnerabilidade do software. Não se sabe bem o que devem mostrar. Os testes de segurança devem validar requisitos de segurança. Não é fácil definir requisitos de segurança. 11
Testes de segurança Ao contrário dos testes funcionais em que as entradas e saídas estão bem definidas (2+2=4), nos testes de segurança estamos à procura de um comportamento anómalo que não sabemos quando acontece. Há uma combinação muito específica de valores de entrada que activa uma falha de segurança (cavalo de tróia, por exemplo). 12
Agenda O que é segurança Tipo de segurança Testes Funcionais De Segurança Objectivos Boas práticas Planeamento Uso de ferramentas automatizadas Etc... Caso prático 13
Objectivos dos testes de segurança Precaver contra ataques Garantir robustez do software face a determinados ataques típicos Detectar vulnerabilidades Preparar medidas de contingência Oferecer maior valor acrescentado ao cliente Etc... 14
Agenda O que é segurança Tipo de segurança Testes Funcionais De Segurança Objectivos Boas práticas Planeamento Uso de ferramentas automatizadas Etc... Caso prático 15
Boas práticas Adoptar uma metodologia de desenvolvimento Uma metodologia consistente oferece à partida maiores probabilidades de qualidade Na Critical, utiliza-se o modelo em cascata, ou iterativo. As metodologias enquadram objectivos concretos em fases. Este objectivos previlegiam actividades importantes. Exemplo: definição de uma arquitectura segura (separação da client-tier da data-tier)! 16
Boas práticas Metodologia apoiada num Sistema de Gestão de Qualidade Quality Management System (Quality Manual) Process Improvement Process Quality Management Process Project Life Cycle Management Process Key Process Areas Project Types Tailoring Customer Processes Engineering Processes Management Processes Organisational Processes Support Processes PROJECT LIFE CYCLE PROCESSES 17
Boas práticas Processo de gestão de qualidade Processo de gestão de configurações Processo de gestão de riscos Processo de gestão de projectos Processo de melhoria constante Etc... 18
Boas práticas Certificações ISO 9001:2000 TickIT Normas ISO 15504 (SPICE) nível 3 ISO 12207 19
Boas práticas Processo de Desenvolvimento de Software SYSTEM ENGINEERING PHASE SOFTWARE REQUIREMENTS ENGINEERING PHASE DESIGN ENGINEERING PHASE VALIDATION PHASE ACCEPTANCE PHASE OPERATIONS AND MAINTENANCE PHASE SRR PDR CDR QR AR REQUIREMENTS BASELINE TECHNICAL SPEC. BASELINE DESIGN BASELINE QUALIFICATION BASELINE ACCEPTANCE BASELINE FUNCTIONAL STATE SPECIFIED STATE DEFINED STATE QUALIFIED STATE ACCEPTED STATE Software VERIFICATION Testing PROCESS Process 20
Boas práticas 21
Boas práticas Planear testes numa fase inicial do projecto. É importante definir uma estratégia (o que testar, como testar, quais os inputs, quais os resultados previstos, quando testar, quem, qual é o critério de validação) de acordo com as necessidades e não com as possibilidades. É importante definir casos de testes de acordo com requisitos, numa fase embrionário do projecto, e não em paralelo com a implementação. Num project da Critical com a Marinha, a apresentação de plano e estratégia de testes foi um requisito da proposta. Quando os testes não estão planeados, testa-se o que for possível e de forma ad-hoc! Quando as coisas começam a correr mal, as primeiras tarefas a cair são os testes... 22
Boas práticas Testar ao longo de todo o projecto. Testes unitários Testes de integração Testes de sistema Testes de aceitação A qualidade não se injecta no fim! 23
Boas práticas Revisão de código Ajuda a limpar código redundante Ajuda a detectar determinados erros difíceis de apanhar em run-time (e.g. Memory leak, tratamento de excepções, gestão de pool de sessões, etc.) Promove a partilha de boas prácticas algorítmicas e normas de codificação 24
Boas práticas Revisão de código 25
Boas práticas Análise estática Detecção de erros simples de apanhar de forma automática (variáveis não utilizadas, ponteiros não inicializados, verificação de argumentos, etc...) com produção de estatísticas. Na Critical usa-se o Code Wizard, Pascal Analyser, Check Style 26
Boas práticas Utilização de ferramentas de apoio a testes de segurança Informação sobre a rede Sam Spade http://www.samspade.org 27
Boas práticas Utilização de ferramentas de apoio a testes de segurança Port scanning SuperScan Port Scanner http://www.foundstone.c om/knowledge/free_tools.html 28
Boas práticas Utilização de ferramentas de apoio a testes de segurança Cracker de passwords Brutus Password Cracker http://www.hoobie.net/brutus 29
Boas práticas Utilização de ferramentas de apoio a testes de segurança Web scanning XXX.XX.XXX.XXX XXX.XX.XXX.XXX Nikto Web Scanning Tool http://www.cirt.net/ code/nikto.shtml 30
Boas práticas Há outras ferramentas: Nessus Nmap Holodeck Security Analysis Tool for Auditing Networks (SATAN) Foundstone Enterprise Security Administrator s Integrated Network Tool (SAINT) BindView Etc... 31
Boas práticas Ferramenta para testes de segurança Ferramenta avançada de mutações de dados e injecção de falhas 32
Boas práticas HOST COMPUTER EME Upload mutant and execute test case TARGET SYSTEM SIS Change Input Parameter Compile and link each mutant Collect Output Original Code Mutants 33
Boas práticas Intervenção especializada Security SWAT team Red Team - Microsoft InfraGuard (http://www.infraguard.net) Concursos de hack-in 34
Agenda O que é segurança Tipo de segurança Testes Funcionais De Segurança Objectivos Boas práticas Planeamento Uso de ferramentas automatizadas Etc... Caso prático 35
Caso prático EDGE-Box 36
Caso prático Plano Modelo em cascata Fases Milestones Actividades importantes (requisitos, desenho da arquitectura, implementação, testes) Artefactos a produzir 37
Caso prático Recursos humanos especializados Foram utilizados elementos com grande experiência Houve acompanhamento constante de um consultor externo 38
Caso prático Desenho da Arquitectura cuidada Isolamento de serviços Tomaram em consideração questões de autenticação 39
Caso prático Testes Quando Quem Como (casos de teste) Quais os inputs Quais os outputs previstos Quais os critérios de valiação: execução de todos os casos de testes, com 100% de sucesso! 40
Caso prático Testes De funcionalidade De segurança Foi contratado um elemento externo ao projecto que testava remotamente Foi feito port scanning Várias trials 41
Obrigado! José Gonçalo Silva Software Quality Engineer jsilva@criticalsoftware.com Critical Software, S.A. 42