Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Desenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação

3,381 views

Published on

Davidson Bocccardo – CTO (Green Hat Segurança da Informação - Grupo Clavis) Palestra: Desenvolvimento Seguro de Software

Published in: Technology
  • Be the first to comment

Desenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação

  1. 1. AnálisedeCódigoe SegurançadeSoftware Por Davidson Boccardo Data: 23/11/2016
  2. 2. Clavis Segurança da informação www.clavis.com.br Green Hat Segurança da Informação whoami Doutor em Engenharia Elétrica (UNESP/ULL) Instrutor dos cursos de Forense, Testes de Invasão e de Desenvolvimento Seguro, Proteção de Software Coordenador de projetos de pesquisa, orientador de alunos de mestrado/ doutorado MPMQ/PPGI - mais de 50 artigos científicos publicados Entre 2007 e 2009 trabalhou no Software Research Lab da University of Louisiana at Lafayette, na qual se especializou em análise estática e dinâmica de artefatos maliciosos Entre 2010 e 2015 desenvolveu metodologias para o Serviço de Avaliação de Produtos de Software no Laboratório de Informática da Divisão de Metrologia em Tecnologia da Informação e Telecomunicações do Inmetro 02 DAVIDSON RODRIGO BOCCARDO DIRETOR DO GREEN HAT LABS Green Hat Segurança da Informação
  3. 3. Green Hat Segurança da informação www.clavis.com.br Sobre a Green Hat Análise de Segurança Orientada por Dados Análise de Código e Segurança de Software Auditorias Teste de Invasão Forense Computacional • 2009: empresa spin-off corporativa que nasceu a partir de um grupo da Clavis Segurança da Informação • 2010: Framework de Teste de Invasão (FINEP) • 2015: Auditoria de Código-Fonte e Análise Dinâmica • 2016: Análise de Código e Segurança de Software • 2016: Análise de Segurança Orientada por Dados (FAPERJ) Green Hat 01 Auditoria de Código-Fonte Análise dinâmica
  4. 4. Green Hat Segurança da Informação www.clavis.com.br Segurança de Software • A economia e as defesas das nações dependem, em grande parte, da execução de software confiável • Software é onipresente! • afeta todos os aspectos de nossas vidas pessoais e profissionais • Vulnerabilidades de software também são ubíquas, comprometendo: • identidades pessoais • propriedade intelectual • confiança do consumidor • serviços empresariais e operações • infra-estruturas críticas e governo 03
  5. 5. Green Hat Segurança da Informação www.clavis.com.br Falhas crescentes envolvendo software 04 [GIZMODO, 2014] [FINANCIAL TIMES, 2014]
  6. 6. Green Hat Segurança da Informação www.clavis.com.br Falhas crescentes envolvendo software 05 [SLASHDOT, 2012] [REDDIT, 2014] [THEGUARDIAN, 2013]
  7. 7. Green Hat Segurança da Informação www.clavis.com.br Falhas crescentes envolvendo software 06 [NEWYORKTIMES, 2011] [FORBES, 2014]
  8. 8. Green Hat Segurança da Informação www.clavis.com.br Falhas de software são custosas 07 [NEWYORKTIMES, 2014] [THE WALL STREET JORNAL, 2014]
  9. 9. Green Hat Segurança da Informação www.clavis.com.br • Maioria das vulnerabilidades são causadas por erros de programação • 64% das vulnerabilidades da base do NIST NVD • 51% dessas são originadas em erros clássicos como buffer overflows, cross-site scripting, falhas de injeção • Vulnerabilidades mais comuns incluem: • Integer overflow • Buffer overflow • Format string • Autenticação ausente • Autorização ausente ou incorreta • Confiar em entradas não-confiáveis 08Origem das falhas de software
  10. 10. Green Hat Segurança da Informação www.clavis.com.br • Começa com o entendimento de práticas de codificação inseguras e como podem ser exploradas • Projetos inseguros podem levar a “erros intencionais”, ou seja, o código está corretamente implementado, mas o software resultante é vulnerável • Projetos seguros exigem um entendimento dos requisitos de software funcionais e não-funcionais • Codificação segura exige um entendimento específico de cada linguagem de programação 09Desenvolvimento de Software Seguro
  11. 11. Green Hat Segurança da Informação www.clavis.com.br Fontes de Insegurança em Software • Considerações mínimas ou ausentes de segurança durante todo o ciclo de vida do software • Complexidade, mudanças, suposições incorretas • Não pensar como um atacante • Especificações e projetos falhos • Implementação “pobre” das interfaces de software • Interações inesperadas e não-intencionais • Conhecimento inadequado de práticas de codificação segura 10
  12. 12. Green Hat Segurança da Informação www.clavis.com.br 11 • Análise de requisitos de segurança e arquitetura de software • Inspeção de código e programação segura • Análise de fluxo de controle e de dados • Análise de vulnerabilidades (CWE/SANS Top 25, OWASP Top 10) • Análise dinâmica de software e testes funcionais • Proteção de Software • Ofuscação, Incorruptibilidade e Marca d'água Análise de Código e Segurança de Software
  13. 13. Green Hat Segurança da Informação www.clavis.com.br Análise de Requisitos de Segurança e Arquitetura de Software 12 • Requisitos gerais de segurança • Confidencialidade, integridade e disponibilidade • Ambiente de implantação, arquivamento, anti-pirataria • Gerenciamento de sessões, gerenciamento de erros e excessões, gerenciamento de parâmetros de configuração
 • Arquitetura de segurança • Princípios básicos de projeto seguro: redução das superfícies de ataque, falha segura, defesa em profundidade, privilégio mínimo, separação de deveres, etc… • Utilização correta de algoritmos criptográficos e protocolos de segurança
  14. 14. Green Hat Segurança da Informação www.clavis.com.br Inspeção de Código e Programação Segura 13 Análise do Fluxo de Controle: Rastreabilidade de Software
  15. 15. Green Hat Segurança da Informação www.clavis.com.br 14 Inspeção de Código e Programação Segura Análise do Fluxo de Controle: Funcionalidades Escondidas
  16. 16. Green Hat Segurança da Informação www.clavis.com.br 15 Inspeção de Código e Programação Segura Orientações para Codificação Segura
  17. 17. Green Hat Segurança da Informação www.clavis.com.br 16 Um estouro de buffer ocorre quando dados são gravados fora dos limites da memória alocada para uma estrutura de dados específica Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Buffer overflow Origem Destino 16 Bytes Memória Alocada Memória Adjacente Montparnasse derailment [1895]
  18. 18. Green Hat Segurança da Informação www.clavis.com.br 17 Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Buffer overflow • Ocorre quando o limite de buffer é negligenciado e não-verificado • Pode ocorrer em qualquer segmento de memória • Pode ser explorado para modificar: • variável • ponteiro de dados • ponteiro de função • endereço de retorno na pilha
  19. 19. Green Hat Segurança da Informação www.clavis.com.br 18 Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Buffer overflow printf(“Nome:.n"); 
 rc = scanf("%s", registro[idx].nome); if (rc != 1) { printf(“Entrada inválida.n"); exit(1); }
  20. 20. Green Hat Segurança da Informação www.clavis.com.br 19 Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Buffer overflow printf(“Nome:.n"); 
 rc = scanf("%s", registro[idx].nome); if (rc != 1) { printf(“Entrada inválida.n"); exit(1); } Captura até acabar a entrada ou encontrar um espaço
  21. 21. Green Hat Segurança da Informação www.clavis.com.br 20 Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Buffer overflow void* rp; ... printf(“Nome:.n"); rp = fgets(registro[idx].nome, sizeof(registro[idx].nome), stdin); if(rp == NULL) { printf(“Entrada inválida.n"); exit(1); } Captura até acabar a entrada ou atingir o limite do buffer
  22. 22. Green Hat Segurança da Informação www.clavis.com.br 21 Uma entrada de usuário maliciosa é enviada para algum processador: Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Injeção Processador Tipo de Injeção HTML Parser (inc. navegador) Cross-Site Scripting (XSS) Shell OS Command C printf () Format String Banco de Dados SQL Função de acesso a arquivo (fopen()) Pathname
  23. 23. Green Hat Segurança da Informação www.clavis.com.br 22 Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Injeção SQL • Programas devem tomar medidas para garantir que quaisquer dados que cruzem uma fronteira de confiança sejam apropriados e não-malicioso
  24. 24. Green Hat Segurança da Informação www.clavis.com.br 23 Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Injeção SQL boolean isPasswordCorrect(String name, char[] password) throws SQLException, ClassNotFoundException { Connection connection = getConnection(); ... String pwd = new String(password); String sqlString = "SELECT * FROM Users WHERE name = '” + name + "' AND password = '" + pwd + "'"; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(sqlString); if (!rs.next()) return false; }
  25. 25. Green Hat Segurança da Informação www.clavis.com.br boolean isPasswordCorrect(String name, char[] password) throws SQLException, ClassNotFoundException { Connection connection = getConnection(); ... String pwd = new String(password); String sqlString = "SELECT * FROM Users WHERE name = '” + name + "' AND password = '" + pwd + "'"; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(sqlString); if (!rs.next()) return false; } 24 Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Injeção SQL
  26. 26. Green Hat Segurança da Informação www.clavis.com.br boolean isPasswordCorrect(String name, char[] password) throws SQLException, ClassNotFoundException { Connection connection = getConnection(); ... String pwd = new String(password); String sqlString = "SELECT * FROM Users WHERE name = '” + name + "' AND password = '" + pwd + "'"; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(sqlString); if (!rs.next()) return false; } 25 Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Injeção SQL name e password não foram tratados!
  27. 27. Green Hat Segurança da Informação www.clavis.com.br boolean isPasswordCorrect(String name, char[] password) throws SQLException, ClassNotFoundException { Connection connection = getConnection(); ... String pwd = new String(password); String sqlString = "SELECT * FROM Users WHERE name=? AND password=?"; PreparedStatement stmt = connection.prepareStatement(sqlString); stmt.setString(1, name); stmt.setString(2, pwd);
 ResultSet rs = stmt.executeQuery(); if (!rs.next()) { return false; } 26 Inspeção de Código e Programação Segura Análise de Vulnerabilidades: Injeção SQL sanitização da entrada =)
  28. 28. Green Hat Segurança da Informação www.clavis.com.br 27 Inspeção de Código e Programação Segura Análise Dinâmica: Análise do Fluxo de Controle e Dados
  29. 29. Green Hat Segurança da Informação www.clavis.com.br 28 Inspeção de Código e Programação Segura Análise Dinâmica: Propagação de Atributos e Execução Simbólica
  30. 30. Green Hat Segurança da Informação www.clavis.com.br 29 • Resistir à engenharia reversa estática e dinâmica • Resistir à modificações não autorizadas • Resistir à clonagem de software • Resistir ao spoofing • Esconder segredos estáticos e dinâmicos (criação, transmissão, utilização) • Impedir a distribuição de programas “crackeados” • Ofuscação — proteção contra engenharia reversa • Incorruptibilidade — proteção contra modificação/monitoramento • Marca d’água — identificação de autoria e rastreamento de propriedade Proteção de Software
  31. 31. Green Hat Segurança da Informação www.clavis.com.br 30 Ofuscação Marca d’água Incorruptibilidade Proteção de Software
  32. 32. Green Hat Segurança da Informação www.clavis.com.br Ofuscação: movfuscator The M/o/Vfuscator compiles programs into "mov" instructions, and only "mov" instructions. Arithmetic, comparisons, jumps, function calls, and everything else a program needs are all performed through mov operations; there is no self-modifying code, no transport-triggered calculation, and no other form of non-mov cheating 31
  33. 33. Green Hat Segurança da Informação www.clavis.com.br Movfuscator: Grafo de Fluxo de Controle 32
  34. 34. Green Hat Segurança da Informação www.clavis.com.br Incorruptibilidade 33
  35. 35. Green Hat Segurança da Informação www.clavis.com.br Marca d’água e Impressão Digital 34 Como?Para quê?
  36. 36. Green Hat Segurança da Informação www.clavis.com.br Marca d’água e Impressão Digital: CFG 35
  37. 37. Green Hat Segurança da Informação www.clavis.com.br Conclusões • A iminência de falhas de software em infraestruturas críticas, aplicações e serviços aumenta a necessidade de • Novas regulamentações referentes à segurança de software • Serviços, metodologias e ferramentas para avaliação de segurança • Treinamento/conscientização em desenvolvimento seguro 36
  38. 38. Green Hat Segurança da informação www.clavis.com.br Muito Obrigado! 37 davidson@clavis.com.br Davidson R. Boccardo Diretor do Green Hat Labs

×