2. Como fazer revisão e testes de código para identificar problemas (bugs) de segurança. Wagner Elias Research & Development Manager Conviso IT Security http://wagnerelias.com SEG303:
3.
4. Introdução Os testes de segurança de software são essenciais para garantir a Confidencialidade, integridade e disponibilidade das informações que serão tratadas pelo software Testes de segurança de software garantem que requisitos de segurança de software foram garantidos mesmo quando estes requisitos não fazem parte das especificações funcionais
5.
6. Buffer Overflow buffer overflow ou buffer overrun acontece quando o tamanho de um buffer ultrapassa sua capacidade máxima de armazenamento
7. Exemplo de Buffer Overflow void CopyStuff(string data) { char buffer[128]; strcpy(buffer,data); // do other stuff } Se este dado é maior do que o buffer Então esta função irá estourar o buffer
8. SQL Injection SQL injection é um tipo de ataque muito simples, baseia-se na execução de comandos SQL. Comandos de manipulação de dados - DML (select, insert, update, delete) ou comandos de definição de dados - DDL (create, drop, alter). Os comandos são injetados em campos de formulários que são disponibilizados para o usuário inserir/tratar informações
9. Exemplo de SQL Injection string Status = "No"; string sqlstring =""; try { SqlConnection sql= new SqlConnection( @"data source=localhost;" + "user id=sa;password=password;"); sql.Open(); sqlstring="SELECT HasShipped" + " FROM detail WHERE ID='" + Id + "'"; SqlCommand cmd = new SqlCommand(sqlstring,sql); if ((int)cmd.ExecuteScalar() != 0) Status = "Yes"; } catch (SqlException se) { Status = sqlstring + " failed"; foreach (SqlError e in se.Errors) { Status += e.Message + ""; } } catch (Exception e) { Status = e.ToString(); }
10. XSS (Cross Site Scripting) Uma falha no servidor que leva a um comprometimento do cliente. A falha é simplesmente ecoar input do usuário sem uma validação adequada.
11. Exemplo de XSS (Cross Site Scripting) Welcome.asp Hello, <%= request.querystring(‘name’)%> Mantém o badsite.com
12.
13.
14.
15.
16.
17.
18.
19. Criando planos de testes com base na Modelagem de Ameaças Para um teste eficaz é necessário utilizar as características que foram identificadas e documentadas na modelagem de ameaças que é realizada na fase de design do desenvolvimento de software
22. Processo de Modelagem de Ameaças (2 de 3) 1.Identificar os bens . Identifique os bens valiosos que seus sistemas devem proteger. 2.Criar uma visão geral da arquitetura . Utilize diagramas e tabelas simples para documentar a arquitetura de seu aplicativo, inclusive subsistemas, limites de confiança e fluxo de dados. 3.Decompor o aplicativo . Decomponha a arquitetura do aplicativo, inclusive a rede subjacente e o projeto de infra–estrutura do host para criar um perfil de segurança para o aplicativo. O objetivo do perfil de segurança é revelar vulnerabilidades do projeto, implementação ou configuração de implantação do aplicativo.
23. Processo de Modelagem de Ameaças (3 de 3) 4.Identificar as ameaças . Conhecendo os objetivos de um invasor, a arquitetura e as possíveis vulnerabilidades de seu aplicativo, identifique as ameaças que poderiam afetar o aplicativo. 5.Documentar as ameaças . Documente cada ameaça utilizando um modelo comum de ameaça que defina um conjunto central de atributos a capturar para cada ameaça. 6.Classificar as ameaças . Classifique as ameaças de modo a priorizar e tratar as ameaças mais significativas primeiro. Essas ameaças apresentam riscos maiores. O processo de classificação considera a probabilidade dos danos que ela poderia causar no caso de um ataque. Pode acontecer de determinadas ameaças não justificarem nenhuma ação quando você compara o risco causado pela ameaça com os custos resultantes da atenuação.
24. Modelagem de Ameaças Wagner Elias Research & Development Manager Conviso IT Security http://wagnerelias.com demo
25. Padrões de Ataques Uma série de passos repetitivos que podem ser aplicados de uma forma consistente e confiável para simular um ataque contra um sistema de software. “ Attack Patterns – http://www.attackpatterns.org ” Projeto que, tem como objetivo identificar e documentar padrões de ataques que possam ser utilizados para testes de segurança de software
26.
27. Testando SQL Injection com Scrawlr Wagner Elias Research & Development Manager Conviso IT Security http://wagnerelias.com demo
28. Testando XSS com XSSDetect Wagner Elias Research & Development Manager Conviso IT Security demo
29. Testando .net com Fxcop Wagner Elias Research & Development Manager Conviso IT Security demo
30.
31.
32. Wagner Elias Research & Development Manager Conviso IT Security http://wagnerelias.com
33.
34. Sessões Relacionadas SEG201 - Windows Server 2008 - Por que é Realmente Seguro (Análise Técnica) SEG307 - Defesa em Profundidade ? O NAP (Network Access Protection) Pode Ajudar ! SVR307 - Virtualização e Segurança: Como Conciliar os dois Mundos ? SEG308 - Estamos no Século 21: É Hora de Jogar Fora seus Gateways Medievais !