Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Security Thinking e o Design de Código para Apl...

Security Thinking e o Design de Código para Aplicações Seguras

Em um mundo hiperconectado, repleto de ameaças digitais, criminosos virtuais e monitoramento massivo, as técnicas e metodologias de design seguro de código estão se tornando obrigatórias. É preciso melhorar significativamente a forma pela qual projetamos, desenvolvemos e validamos software, e essa melhoria contempla necessariamente o seguinte “tripé”: pessoas, processos e tecnologia. Nesta palestra, vamos mostrar um pouco desse universo fascinante de design e desenvolvimento seguro, com base em abordagens, princípios e técnicas usados em projetos reais.

Sean Michael Wykes

December 08, 2018
Tweet

More Decks by Sean Michael Wykes

Other Decks in Programming

Transcript

  1. 1 www.nascent.com.br Security Thinking Mudando a mentalidade O Design de

    Código para Aplicações Seguras Sean Michael Wykes
  2. TDC / 2018 2 Sean Michael Wykes • British born

    and educated, living in Brazil since 1997 • Masters Degree (’92) in Information Engineering from Southampton University • 20+ years experience in design and development of systems and secure applications, based on technologies such as smart-cards and cryptography. • Author of “Criptografia Essencial - a Jornada do Criptógrafo” – Elsevier 2016. https://CriptografiaEssencial.com.br
  3. TDC / 2018 5 Admirável Mundo Novo SOFTWARE TUDO é

    controlado por onde Zoando está!
  4. TDC / 2018 11 ... mas agora .. Na ERA

    DIGITAL funciona? H A C K E D
  5. TDC / 2018 15 Desenvolvimento Seguro Processos de Desenvolvimento Seguro

    Requisitos de Segurança, Design Seguro, Desenvolvimento de Código Seguro, Validação e testes de Segurança, SecDevOps Atividades Seguras Incorporar atividades novas relacionadas à segurança, como a Modelagem de Ameaças, Revisão e Análise de Código e os Testes de Penetração
  6. TDC / 2018 16 16 Atividades de Segurança de Aplicações

    ü Treinamento em Sec-App-Dev ... ü Modelagem de Ativos e Ameaças ... ü Práticas de Desenvolvimento Seguro e Checklists ... ü Features e Frameworks de Segurança ... ü Ferramentas Automatizadas ... SAST, DAST, RASP ü Testes de Invasão em Produção ... PenTest
  7. TDC / 2018 17 SDLC Desenvolvimento de Software Seguro Agile

    DevOps + Software Secure S- Secure Sec
  8. TDC / 2018 18 18 Então porque ainda temos software

    inseguro? Falta liga com os business stakeholders. Abordagens reativas – tapa o buraco mas não aprende. Regras e Receitas prontas não geram compreensão Previne ataques conhecidos, mas não futuros ... Foco em Features de Segurança x Features Seguros ... Segurança é vista com “arte oculta” e complexa
  9. TDC / 2018 19 O que está faltando ? Processos

    de Desenvolvimento Seguro Requisitos de Segurança, Design Seguro, Desenvolvimento de Código Seguro, Validação e testes de Segurança, SecDevOps Atividades Seguras Incluir atividades novas relacionadas à segurança, como a Modelagem de Ameaças, Revisão e Análise de Código e os Testes de Penetração Mindset de Segurança Pensar sobre segurança ajuda a: a) pensar sobre a solução, e b) desenvolver produtos melhores e mais seguros +
  10. TDC / 2018 22 22 “Security Thinking é a mentalidade,

    ou mind- set, de tornar segurança uma parte integral do processo de desenvolvimento de software e hardware, através de uma compreensão da importância, complexidade, sutileza e profundidade da Segurança Sistêmica” Security Thinking
  11. TDC / 2018 23 SDLC Desenvolvimento com Security Thinking Agile

    DevOps + Software Secure Rugged S- Secure Sec ST + ST + ST + ST
  12. TDC / 2018 24 Rugged Software, o que é isso?

    ü Disponível ü Defensível ü Seguro ü Resiliente ü Sobrevivente https://ruggedsoftware.org/ Utilizar a competição, cooperação e experimentação para aprender e melhorar, ao invés de repetir sempre os mesmos erros. Organizações “rugged” buscam ativamente novas ameaças e criam defesas antes que se tornem um problema. Filosofia “
  13. TDC / 2018 26 Stories de Segurança SECURE USER STORIES

    Relacionadas à: Features de Segurança ABUSER STORIES Asseguram que: Features são seguros Exemplos: Login do usuário Configurações de Privacidade Exemplos: Comprar sem pagar Ver fotos de outra pessoa Eu, enquanto _______________, quero ____________________, para _____________________. STORY 1 U/A
  14. TDC / 2018 27 Exemplos de Abuser Stories Eu, enquanto

    usuário esperto, quero comprar sem pagar, para ter o produto de graça. STORY 1 A Eu, enquanto cibercriminoso, quero esvaziar a conta bancária, para comprar uma ferrari. STORY 2 A
  15. TDC / 2018 28 Exemplos de Abuser Stories Eu, enquanto

    funcionário infeliz, quero deletar o banco de dados, para me vingar do meu padrão. STORY 3 A Eu, enquanto fornecedor, quero entregar produtos falsificados, para ter maior lucro. STORY 4 A
  16. TDC / 2018 30 Os 4 Caminhos de Testes Seguros

    1. FELIZ Condições de Erro Condições Maliciosas Condições Normais 2. INFELIZ Condições Excepcionais 3.FALHA 4. HACKED
  17. TDC / 2018 32 As 5 Máximas do Security Thinking

    Equilíbrio Simplicidade Desconfiança Encapsulamento Abertura
  18. TDC / 2018 34 ü Simples, mas ainda capaz de

    funcionar ü Small – Menor código possível ü Legível – facilita o entendimento KISS - “Keep it Simple and Small” Ø YAGNI – Você não irá precisar Ø DRY – Não se repete Ø Design Iterativo -> Emergente Ø Refacturing cuidadoso + testes compreensivos Utilizar ferramentas como: Simplicidade
  19. TDC / 2018 35 Reduz Código Crítico – TCB (Trusted

    Code Base) Reduz sobrecarga cognitiva Reduz condições de borda e casos de exceção Facilita o trabalho futuro dos colegas Simplicidade Benefícios para um Código mais Seguro Cuidado com classes de ‘entulho’ e patternite
  20. TDC / 2018 37 ü Agrupar funcionalidades relacionadas ü Separar

    funcionalidades diferentes ü Isolar funcionalidades críticas “Cada macaco no seu galho” Ø Serviços, módulos, classes, objetos, ... Ø Herança x Composição Ø “S” do SOLID – “Single Responsibility” Ø Sandboxing x Containers Seguros Utilizar ferramentas como: VM TEE - TrustZone, SGX, ... Enclaves Seguros, ... HSM Smartcards e Elementos Seguros Encapsulamento
  21. TDC / 2018 38 ü Isolar código com amplos poderes

    ü Executar com o mínimo de privilégios ü Limitar tempo com privilégios maiores “Manda quem pode, ...” Ø Definição e separação de Papeis Ø Políticas e Serviços de Autorização centralizadas Ø Gerenciamento de Permissões: ‘quem pode .. o quê .. com o quê” Utilizar ferramentas como: Encapsulamento
  22. TDC / 2018 39 Permite definir claramente as Fronteiras Encapsulamento

    Benefícios para um Código mais Seguro Reduz o Potencial de Danos – ataques, falhas ou bugs Evita acessos e operações indevidos Cuidado com grude de Privilégios e Fantasmas Reduz Superfície de Ataque
  23. TDC / 2018 40 Permite definir claramente as Fronteiras Encapsulamento

    Benefícios para um Código mais Seguro Reduz o Potencial de Danos – ataques, falhas ou bugs Evita acessos e operações indevidos Cuidado com grude de Privilégios e Fantasmas Reduz Superfície de Ataque Pode gerar conflitos com a Simplicidade
  24. TDC / 2018 42 Desconfiança ü Confie em nada nem

    ninguém ü Exija provas de Identidade e Permissão ü Valide qualquer dado ‘externo’ “Inseguro, até prova-se o contrário” Ø Identificação Segura e Autenticação Ø Autorização antes de qualquer acesso Ø Escaping, Encoding e Validação de dados Ø Defence in Depth Utilizar ferramentas como: Usuários Serviços Objetos Princípio de Mediação Completa
  25. TDC / 2018 43 Evita spoofing e uso/acesso indevido Confiança

    deve que ser relativa e contextual Previne contra ataques de injeção de dados/código Torna o código mais robusto & resiliente Desconfiança Benefícios para um Código mais Seguro
  26. TDC / 2018 45 Abertura ü Não esconda nada no

    código ü Obscuridade não provê segurança ü Mais olhos percebem mais erros “Um dia, tudo será revelado” Ø Criptografia forte Ø Armazenamento seguro de chaves, credenciais e senhas Ø Revisão de código, open-source, ... Utilizar ferramentas como: