SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Weber Ress
weber@weberress.com
SDL
 Security Development Lifecycle
 SD3+C
   Security by Design
   Security by Default
   Security in Deployment
   Communications
SDL



 Processo de desenvolvimento clássico
 Processo espiral
 Existência de código executável desde o início do
 desenvolvimento
SDL




 Atividades em conjunto com o processo de
 desenvolvimento clássico
SDL




 Integração do SDL ao processo de desenvolvimento
SDL - Fases
 Requerimentos
 Design
 Implementação
 Verificação
 Release
 Suporte e Serviço
Requerimentos
 É alocado um Security Advisor para a equipe de
  desenvolvimento.
 Ponto focal entre a equipe de desenvolvimento e a
  área de segurança.
 Responsável por analisar os requisitos do sistema,
  diagramas e schedule, incluindo os no projeto os
  requisitos de segurança necessários.
Design
 Arquitetura de Segurança / Design Guidelines
 Documentação da superfície de ataque
 Modelagem de Ameaças (Threat Modeling)
Design
 Arquitetura de Segurança / Design Guidelines
 Definição da estrutura geral do software na
  perspectiva da segurança.
 Identificação e padronização de técnicas de design
  seguro como layering (camadas), uso de linguagem
  com tipagem forte, uso de mínimos privilégios no
  sistema operacional, etc.
 Security Patterns
Design
 Documentação da superfície de ataque
   Documentar as interfaces que são suscetíveis a
    ataques.
   Apenas expor as funcionalidades do software que
    são necessárias para a maioria dos usuários;
    Não expor TODAS as funcionalidades.
   Reduzir a quantidade de funcionalidades
    expostas aos usuários reduz a superfície de
    ataque.
Design
 Identificar através de diagramas de componentes as
  ameaças a cada componente e interface do sistema.
    Identificar no diagrama de componentes as
     ameaças
    Identificar e analisar os riscos
    Identificar formas de mitigar os riscos
     encontrados.
 Application Threat Modeling
Implementação
 Padrões de codificação seguro
 Padrões para testes de segurança
 Ferramentas para testes
   Fuzzing Tools (validação de INPUT de dados p/
     API’s, interfaces e componentes)
    Scanning de código estático (busca de buffer
     overflow, estouro de inteiros, variáveis não-
     inicializadas)
 Code Review
Verificação
 O software encontra-se em versão beta.
 Security Push
   Treinamento
   Analisar a fase de implementação.
   Corrigir os erros encontrados.
 Processo cíclico, de acordo com o cronograma de
 desenvolvimento (build’s beta)
Release
• “Do ponto de vista da segurança, este software está
  pronto para ser entregue ao cliente ?”
• Análise de segurança por uma equipe neutra.
• Encontrar as últimas vulnerabilidades presentes no
  software.
• Corrigir as vulnerabilidades / assumir os riscos
Suporte e Serviço
 “Não é possível desenvolver um software 100%
  seguro”
 Uma problema de segurança SERÁ encontrado
  após o software ter sido entregue ao cliente.
 Transparência
    Elaborar um processo de resposta a incidentes
    Blogs, boletim de segurança, patchs, service
     packs
Resultados
 Inovação x Segurança
   Mais recursos = Mais código = Mais erros
    SLOC = Source Lines of Code
       1993 - Windows NT 3.1 – 6 milhões
       1994 - Windows NT 3.5 – 10 milhões
       1996 - Windows NT 4.0 – 16 milhões
       2000 - Windows 2000 – 29 milhões
       2001 - Windows XP -40 milhões
       2005 - Windows Vista Beta 2 – 50 milhões
   Windows 2000: Novo paradigma (Internet Full)
   Maior Uso = Maior grau de exposição = Maior
    Superfície de Ataque
Resultados - Desktop
              Bugs críticos de Segurança x
                 Boletim de Segurança




           35                     35
     22                  21
                                                   18



          Professional        Service Pack 1   Service Pack 2


                                               Fonte: Microsoft Security Bulletin Search
Resultados - Servidores
Boletins de criticidade Importante e Crítico,
após lançamento do produto




                                                Fonte: Microsoft Security Bulletin Search
Security Development
Lifecycle
 Processo viável de ser integrado a um processo de
  desenvolvimento existente.
 Considerar a segurança como parte do projeto do
  software, não como uma premissa a ser cumprida
  posteriormente.
 Facilmente adaptável para exigências regulatórias de
  segurança em software (SOX, PCI).
SDL - Fases
 Requerimentos
 Design
 Implementação
 Verificação
 Release
 Suporte e Serviço
Fase 0 – Educação e Consciência
 Desenvolver com segurança envolve conhecimento
 específico e consciência

 Nivelamento do conhecimento na equipe.


 Aprofundamento em demandas específicas
Fase 0 – Educação e Consciência
 Curso anual de segurança em desenvolvimento
 Sugestão de conteúdo:
    Visão geral sobre o Trustworthy Computing
     (Computação Confiável)
    Introdução ao SDL
    Conceitos básicos de Design Seguro:
       Redução de Superfície de Ataque
       Defesa em Profundidade
       Mínimos Privilégios
       Secure Defaults
Fase 0 – Educação e Consciência
 Sugestão de conteúdo:
   Modelagem de Ameaças
     Design voltado para modelo de ameaças
     Codificação para modelo de ameaças

     Testes em um modelo de ameaças

   Introdução a testes Fuzz
   Best Pratices em codificação segura
     Buffer Overflow

     Problemas aritméticos (divisão por zero, dízimas)

     Cross-Site Scripting

     SQL Injection

     Criptografia
Fase 1 – Kick-off
 Determinar se o software que será desenvolvido
  será atendido pelo SDL.
 Definir o Security Advisor
 Definir o processo de comunicação entre a equipe
  de segurança e a equipe de desenvolvimento
 Validar se o sistema de controle de bugs utilizado
  possui campos para bugs de segurança e
  privacidade.
 Definir o “BUG BAR”
Fase 2 – Design Best Pratices
 Definir as boas práticas de segurança.
 Embasamento em normas ISO, RFCs e boas
  práticas de mercado.
 Complexidade X Segurança
   Software muito complexo apresenta mais problemas
    de segurança.
   Manter o projeto do software simples. Código perfeito
    é impossível de ser obtido.
 ASA e ASR
    ASA = Attack Surface Analysis
    ASR = Attack Surface Reduction
Fase 2 – Design Best Pratices
 ASA - Attack Surface Analysis
 ASR – Attack Surface Reduction
    Definem a redução da exposição de código que seja
     acessível por usuários não confiáveis.
    Código = recursos, serviços, funções, etc.
    Redução da quantidade de código que é executado
     por default.
    Restringir o escopo de quem pode acessar o código.
    Restringir o escopo do código que identifica quem
     pode acessá-lo (perfis).
    Reduzir o privilégio do código
Fase 2 – Design Best Pratices
 Script
    a) “Esta funcionalidade é realmente importante ?”
    b) “Quem precisa acessar esta funcionalidade ? De
     onde esta funcionalidade será acessada ?”
    c) Reduzir privilégios
Fase 3 – Análise de Risco
 Mapeamento do nível de risco para o software a
 partir dos modelos de ameaças
   Alto Risco = Altos Custos de Suporte e
    Desenvolvimento
 Risco = Probabilidade X Severidade X Relevância
 Identificar as ameaças ao software
 Determinar os riscos relacionados a cada ameaça.
 Planejar medidas de mitigação para cada risco.
Fase 4 – Relacionamento com
Clientes
  Disponibilizar ferramentas, documentação e melhores
   práticas para os clientes.
  Ferramentas úteis para automatização de
   configurações de segurança.
     Ex: IIS LockDown, SQL 2005 Surface Analysis
  Documentação clara e transparente sobre os recursos
   de segurança e controles.
  Transparência com o cliente.
Fase 5 – Codificação Segura
  Conhecimento sobre como construir um código de
   forma segura
  Utilizar a última versão do compilador disponível.
  Utilizar os recursos de segurança presentes no
   compilador
      /GS – Checagem contra problemas de buffer
      /NXCOMPAT – Tornar o executável compatível com o DEP
       (Data Execution Protection) do Windows 2003.
  Utilizar ferramentas para análise de código-fonte.
  Não utilizar funções banidas
      sscanf_s() no lugar de scanf()
Fase 6 – Testes de Segurança
  Fuzz Testing
      Teste em massa de input de dados mal-formados/mal-
       formatados.
  Penetration Test
      Teste com objetivo de obter acesso privilegiado ao software
       a partir de um acesso não-privilegiado.


  Foco
      80% do tempo em Fuzz Testing.
      20% em Penetration Test.
Fase 7 – Security Push
  Task-Force para encontrar e resolver os bugs de
  segurança antes da entrega do software.

  Somente após a fase de implementação. Produto
  completo.

  Não substitui o SDL; faz parte dele.
Fase 8 – Final Security Review
  “Do ponto de vista da segurança, este software está
  pronto para ser entregue ao cliente ?”

  Análise de segurança por uma equipe neutra.


  Encontrar as últimas vulnerabilidades presentes no
  software.

  Corrigir as vulnerabilidades / assumir os riscos
Fase 9 – Resposta a Incidentes
 Transparência
   Elaborar um processo de resposta a incidentes
   Blogs, boletim de segurança, patchs, service
    packs

 “Manter a calma”
 Assumir os erros e aprender com eles.
 Situações de Emergência X Situações Críticas
    Afeta privacidade e/ou disponibilidade ? = Emergência
SDL
 Security Development Lifecycle
 SD3+C
   Security by Design
   Security by Default
   Security in Deployment
   Communications
SDL




 Integração do SDL ao processo de desenvolvimento
SDL - Fases
 Requerimentos
 Design
 Implementação
 Verificação
 Release
 Suporte e Serviço
Design Best Pratices
 Definir as boas práticas de segurança.
 Embasamento em normas ISO, RFCs e boas
  práticas de mercado.
 Complexidade X Segurança
   Software muito complexo apresenta mais problemas
    de segurança.
   Manter o projeto do software simples. Código perfeito
    é impossível de ser obtido.
 ASA e ASR
    ASA = Attack Surface Analysis
    ASR = Attack Surface Reduction
Design Best Pratices
 ASA - Attack Surface Analysis
 ASR – Attack Surface Reduction
    Definem a redução da exposição de código que seja
     acessível por usuários não confiáveis.
    Código = recursos, serviços, funções, etc.
    Redução da quantidade de código que é executado
     por default.
    Restringir o escopo de quem pode acessar o código.
    Restringir o escopo do código que identifica quem
     pode acessá-lo (perfis).
    Reduzir o privilégio do código
Questões de Design
 Arquitetura do Software
 Acesso ao banco de dados
 Armazenamento de credenciais de acesso
Design - Arquitetura
 Defesa em Profundidade
    Objetivo: Proteger a informação, não o sistema.
    O alvo de um atacante é sempre o banco de dados,
     não o sistema em si.
    Proteção em camadas, dificultando assim o acesso do
     atacante ao banco de dados.
Design - Arquitetura
 Defesa em Profundidade
    Client-Server clássico
       Software cliente acessando diretamente banco de dados
         Problemas:

           O banco de dados estará diretamente conectado à rede
            da estação cliente.
           Acesso direto ao banco de dados através de Excel.
Design - Arquitetura
 Defesa em Profundidade
    Client-Server 3 camadas
Design - Arquitetura
 Defesa em Profundidade
    Client-Server 3 camadas
       Software cliente acessa servidor de componentes.
       Servidor de componentes acessa o banco de dados.
         Vantagens:

           Isolamento do banco de dados com relação à rede dos
            clientes.
           Reutilização de funções de acesso/negócios,etc
            existentes nos componentes.
           Ponto único de manutenção e upgrade de funções.

         Desvantagem:

           A atualização de clientes é muito complexa e trabalhosa.
Design - Arquitetura
 Defesa em Profundidade
    Solução Web 2 camadas
       Cliente Web acessa servidor Web.
       Servidor Web acessa banco de dados.
         Problemas:

            O banco de dados estará diretamente conectado à rede
             da estação cliente.
            Acesso direto ao banco de dados através de Excel.

         Firewall não resolve todos os problemas.
Design - Arquitetura
 Defesa em Profundidade
       Cliente Web acessa servidor Web.
       Servidor Web acessa servidor de componentes.
       Servidor de componentes acessa o banco de dados.
         Vantagens:

            Isolamento do banco de dados com relação à rede dos
             clientes.
            Reutilização de funções de acesso/negócios,etc
             existentes nos componentes.
            Ponto único de manutenção e upgrade de funções.

            Atualização de clientes é transparente. Aplicação Web.
Design – Banco de Dados
 Acesso ao banco de dados
    Acesso claro, sem criptografia
    Acesso seguro, com criptografia (IPSEC, VPN).


 Questões
   O software não consegue garantir o controle de
    acesso ao banco de dados ?
       Usar criptografia como controle adicional de acesso.
   Os dados são sensíveis ?
       Usar criptografia no armazenamento dos dados.
   O banco de dados suporta criptografia ?
       Use criptografia !
Design – Credenciais de Acesso
 Credenciais de Acesso
    Onde armazenar ?
    Normalmente é armazenado no próprio código-fonte
     do software. Ex: (user=“XXX” ; password=“YYY”);
    O desenvolvedor deve ter acesso posterior às
     credenciais de acesso ?
       Troca de senha
       Uso de ambiente de desenvolvimento, com massa de dados
        não relevante.
       Avaliar o risco e confiança.
Design – Credenciais de Acesso
 Credenciais de Acesso
       DPAPI (Data Protection Application Programming Interface)
         Para criptografar uma senha qualquer, é necessário
          trabalhar com a senha da chave de criptografia. 2
          problemas.
         DPAPI utiliza os recursos de criptografia nativos do sistema
          operacional para proteger a credencial de acesso do seu
          sistema.
         Armazenamento no Registry.
Design – Credenciais de Acesso
 Credenciais de Acesso
       Single Sign-on
         Utilizar uma entidade externa para gerenciar o processo de
          credenciais de acesso.
         Utilizar algum serviço de diretório, como o Active Directory.

         O controle de acesso é baseado em perfis, que são
          atribuídos através de grupos no Active Directory.
         Vantagem: O desenvolvedor NÃO precisa se preocupar em
          implementar diversos controles de segurança,
          armazenamento de senhas, logs de acesso, etc. Utilizando o
          Active Directory, todos estes serviço estão expostos para o
          uso.
Design – Conclusão
 Na fase de Design é feita a concepção do software.
    Definir:
       Arquitetura
       Acesso ao banco de dados
       Uso de credenciais de acesso


   Com o uso de modelos/patterns/templates, o tempo
    de trabalho na fase de Design é baixo.
   O objetivo de implementar segurança na fase de
    Design é garantir que o acesso às informações no
    banco de dados seja feito somente por entidades
    autorizadas.

Contenu connexe

Tendances

(2) O Processo de Gerenciamento de Vulnerabilidades Web
(2) O Processo de Gerenciamento de Vulnerabilidades Web(2) O Processo de Gerenciamento de Vulnerabilidades Web
(2) O Processo de Gerenciamento de Vulnerabilidades WebEduardo Lanna
 
Aula 03 qs - confiabilidade de sw
Aula 03   qs - confiabilidade de swAula 03   qs - confiabilidade de sw
Aula 03 qs - confiabilidade de swJunior Gomes
 
(4) Comparando o N-Stalker WAS com o RedeSegura
(4) Comparando o N-Stalker WAS com o RedeSegura(4) Comparando o N-Stalker WAS com o RedeSegura
(4) Comparando o N-Stalker WAS com o RedeSeguraEduardo Lanna
 
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWAREQUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWAREFabiano Souza
 
Requisitos de Segurança
Requisitos de SegurançaRequisitos de Segurança
Requisitos de SegurançaOWASP Brasília
 
CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil
CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil
CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil Bruno Dantas
 
DevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágil
DevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágilDevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágil
DevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágilBruno Dantas
 
Implementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISOImplementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISOConviso Application Security
 
Uniinfo2010 introdução teste de software - priscila coelho blauth2
Uniinfo2010 introdução teste de software - priscila coelho blauth2Uniinfo2010 introdução teste de software - priscila coelho blauth2
Uniinfo2010 introdução teste de software - priscila coelho blauth2Priscila Coelho S. Blauth
 
Integração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPSIntegração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPSFabiano Souza
 
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Luiz Ladeira
 
Be Aware Webinar Symantec - Reduza as vulnerabilidades do seu ambiente de TI
Be Aware Webinar Symantec - Reduza as vulnerabilidades do seu ambiente de TIBe Aware Webinar Symantec - Reduza as vulnerabilidades do seu ambiente de TI
Be Aware Webinar Symantec - Reduza as vulnerabilidades do seu ambiente de TISymantec Brasil
 
Segurança como parte integral no ciclo de desenvolvimento de software
Segurança como parte integral no ciclo de desenvolvimento de softwareSegurança como parte integral no ciclo de desenvolvimento de software
Segurança como parte integral no ciclo de desenvolvimento de softwareVinicius Oliveira Ferreira
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 

Tendances (19)

Desenvolvimento Seguro- 2011
Desenvolvimento Seguro- 2011Desenvolvimento Seguro- 2011
Desenvolvimento Seguro- 2011
 
(2) O Processo de Gerenciamento de Vulnerabilidades Web
(2) O Processo de Gerenciamento de Vulnerabilidades Web(2) O Processo de Gerenciamento de Vulnerabilidades Web
(2) O Processo de Gerenciamento de Vulnerabilidades Web
 
Aula 03 qs - confiabilidade de sw
Aula 03   qs - confiabilidade de swAula 03   qs - confiabilidade de sw
Aula 03 qs - confiabilidade de sw
 
(4) Comparando o N-Stalker WAS com o RedeSegura
(4) Comparando o N-Stalker WAS com o RedeSegura(4) Comparando o N-Stalker WAS com o RedeSegura
(4) Comparando o N-Stalker WAS com o RedeSegura
 
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWAREQUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
 
Requisitos de Segurança
Requisitos de SegurançaRequisitos de Segurança
Requisitos de Segurança
 
Java security
Java securityJava security
Java security
 
Software Seguro
Software SeguroSoftware Seguro
Software Seguro
 
CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil
CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil
CPBR11 - DevSecOps: Adotando uma cultura de segurança ágil
 
DevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágil
DevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágilDevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágil
DevOpsDays Brasilia - DevSecOps: Adotando uma cultura de segurança ágil
 
Implementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISOImplementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISO
 
CNASI 2015 - Desenvolvimento Seguro
CNASI 2015 - Desenvolvimento SeguroCNASI 2015 - Desenvolvimento Seguro
CNASI 2015 - Desenvolvimento Seguro
 
CNASI 2014 - Servicos Confiaveis
CNASI 2014 - Servicos ConfiaveisCNASI 2014 - Servicos Confiaveis
CNASI 2014 - Servicos Confiaveis
 
Uniinfo2010 introdução teste de software - priscila coelho blauth2
Uniinfo2010 introdução teste de software - priscila coelho blauth2Uniinfo2010 introdução teste de software - priscila coelho blauth2
Uniinfo2010 introdução teste de software - priscila coelho blauth2
 
Integração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPSIntegração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPS
 
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
 
Be Aware Webinar Symantec - Reduza as vulnerabilidades do seu ambiente de TI
Be Aware Webinar Symantec - Reduza as vulnerabilidades do seu ambiente de TIBe Aware Webinar Symantec - Reduza as vulnerabilidades do seu ambiente de TI
Be Aware Webinar Symantec - Reduza as vulnerabilidades do seu ambiente de TI
 
Segurança como parte integral no ciclo de desenvolvimento de software
Segurança como parte integral no ciclo de desenvolvimento de softwareSegurança como parte integral no ciclo de desenvolvimento de software
Segurança como parte integral no ciclo de desenvolvimento de software
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 

Similaire à Design Best Pratices SDL

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfMichaelArrais1
 
Projeto de Avaliação de Segurança de TI
Projeto de Avaliação de Segurança de TIProjeto de Avaliação de Segurança de TI
Projeto de Avaliação de Segurança de TIMessias Dias Teixeira
 
Katana Security - Consultoria em Segurança da Informação
Katana Security - Consultoria em Segurança da InformaçãoKatana Security - Consultoria em Segurança da Informação
Katana Security - Consultoria em Segurança da InformaçãoMagno Logan
 
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Alcyon Ferreira de Souza Junior, MSc
 
Documento Técnico - Guia de estudos para o exame CASE
Documento Técnico - Guia de estudos para o exame CASEDocumento Técnico - Guia de estudos para o exame CASE
Documento Técnico - Guia de estudos para o exame CASETI Safe
 
Gerenciamento de Vulnerabilidades em Aplicações e Servidores Web
Gerenciamento de Vulnerabilidades em Aplicações e Servidores WebGerenciamento de Vulnerabilidades em Aplicações e Servidores Web
Gerenciamento de Vulnerabilidades em Aplicações e Servidores WebEduardo Lanna
 
Symantec™ Advanced Threat Protection: Endpoint
Symantec™ Advanced Threat Protection: EndpointSymantec™ Advanced Threat Protection: Endpoint
Symantec™ Advanced Threat Protection: EndpointSymantec Brasil
 
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...tdc-globalcode
 
Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Erivelton Silva Rocha
 
tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdfDouglas Siviotti
 

Similaire à Design Best Pratices SDL (20)

Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)
 
Aula11.pdf
Aula11.pdfAula11.pdf
Aula11.pdf
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
(2) O Processo de Gerenciamento de Vulnerabilidades Web
(2) O Processo de Gerenciamento de Vulnerabilidades Web(2) O Processo de Gerenciamento de Vulnerabilidades Web
(2) O Processo de Gerenciamento de Vulnerabilidades Web
 
Introdução de teste de segurança app web
Introdução de teste de segurança app webIntrodução de teste de segurança app web
Introdução de teste de segurança app web
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Projeto de Avaliação de Segurança de TI
Projeto de Avaliação de Segurança de TIProjeto de Avaliação de Segurança de TI
Projeto de Avaliação de Segurança de TI
 
Katana Security - Consultoria em Segurança da Informação
Katana Security - Consultoria em Segurança da InformaçãoKatana Security - Consultoria em Segurança da Informação
Katana Security - Consultoria em Segurança da Informação
 
Ethical Hacking - Campus Party Brasília 2017
Ethical Hacking - Campus Party Brasília 2017Ethical Hacking - Campus Party Brasília 2017
Ethical Hacking - Campus Party Brasília 2017
 
MTI-MT Desenvolvimento Seguro
MTI-MT Desenvolvimento SeguroMTI-MT Desenvolvimento Seguro
MTI-MT Desenvolvimento Seguro
 
(4) Comparando o NStalker WAS com o RedeSegura
(4) Comparando o NStalker WAS com o RedeSegura(4) Comparando o NStalker WAS com o RedeSegura
(4) Comparando o NStalker WAS com o RedeSegura
 
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 05 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
 
PCI DSS e Metodologias Ágeis
PCI DSS e Metodologias ÁgeisPCI DSS e Metodologias Ágeis
PCI DSS e Metodologias Ágeis
 
Defesa Becker
Defesa BeckerDefesa Becker
Defesa Becker
 
Documento Técnico - Guia de estudos para o exame CASE
Documento Técnico - Guia de estudos para o exame CASEDocumento Técnico - Guia de estudos para o exame CASE
Documento Técnico - Guia de estudos para o exame CASE
 
Gerenciamento de Vulnerabilidades em Aplicações e Servidores Web
Gerenciamento de Vulnerabilidades em Aplicações e Servidores WebGerenciamento de Vulnerabilidades em Aplicações e Servidores Web
Gerenciamento de Vulnerabilidades em Aplicações e Servidores Web
 
Symantec™ Advanced Threat Protection: Endpoint
Symantec™ Advanced Threat Protection: EndpointSymantec™ Advanced Threat Protection: Endpoint
Symantec™ Advanced Threat Protection: Endpoint
 
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
 
Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1
 
tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdf
 

Design Best Pratices SDL

  • 2. SDL  Security Development Lifecycle  SD3+C  Security by Design  Security by Default  Security in Deployment  Communications
  • 3. SDL  Processo de desenvolvimento clássico  Processo espiral  Existência de código executável desde o início do desenvolvimento
  • 4. SDL  Atividades em conjunto com o processo de desenvolvimento clássico
  • 5. SDL  Integração do SDL ao processo de desenvolvimento
  • 6. SDL - Fases  Requerimentos  Design  Implementação  Verificação  Release  Suporte e Serviço
  • 7. Requerimentos  É alocado um Security Advisor para a equipe de desenvolvimento.  Ponto focal entre a equipe de desenvolvimento e a área de segurança.  Responsável por analisar os requisitos do sistema, diagramas e schedule, incluindo os no projeto os requisitos de segurança necessários.
  • 8. Design  Arquitetura de Segurança / Design Guidelines  Documentação da superfície de ataque  Modelagem de Ameaças (Threat Modeling)
  • 9. Design  Arquitetura de Segurança / Design Guidelines  Definição da estrutura geral do software na perspectiva da segurança.  Identificação e padronização de técnicas de design seguro como layering (camadas), uso de linguagem com tipagem forte, uso de mínimos privilégios no sistema operacional, etc.  Security Patterns
  • 10. Design  Documentação da superfície de ataque  Documentar as interfaces que são suscetíveis a ataques.  Apenas expor as funcionalidades do software que são necessárias para a maioria dos usuários; Não expor TODAS as funcionalidades.  Reduzir a quantidade de funcionalidades expostas aos usuários reduz a superfície de ataque.
  • 11. Design  Identificar através de diagramas de componentes as ameaças a cada componente e interface do sistema.  Identificar no diagrama de componentes as ameaças  Identificar e analisar os riscos  Identificar formas de mitigar os riscos encontrados.  Application Threat Modeling
  • 12. Implementação  Padrões de codificação seguro  Padrões para testes de segurança  Ferramentas para testes  Fuzzing Tools (validação de INPUT de dados p/ API’s, interfaces e componentes)  Scanning de código estático (busca de buffer overflow, estouro de inteiros, variáveis não- inicializadas)  Code Review
  • 13. Verificação  O software encontra-se em versão beta.  Security Push  Treinamento  Analisar a fase de implementação.  Corrigir os erros encontrados.  Processo cíclico, de acordo com o cronograma de desenvolvimento (build’s beta)
  • 14. Release • “Do ponto de vista da segurança, este software está pronto para ser entregue ao cliente ?” • Análise de segurança por uma equipe neutra. • Encontrar as últimas vulnerabilidades presentes no software. • Corrigir as vulnerabilidades / assumir os riscos
  • 15. Suporte e Serviço  “Não é possível desenvolver um software 100% seguro”  Uma problema de segurança SERÁ encontrado após o software ter sido entregue ao cliente.  Transparência  Elaborar um processo de resposta a incidentes  Blogs, boletim de segurança, patchs, service packs
  • 16. Resultados  Inovação x Segurança  Mais recursos = Mais código = Mais erros SLOC = Source Lines of Code  1993 - Windows NT 3.1 – 6 milhões  1994 - Windows NT 3.5 – 10 milhões  1996 - Windows NT 4.0 – 16 milhões  2000 - Windows 2000 – 29 milhões  2001 - Windows XP -40 milhões  2005 - Windows Vista Beta 2 – 50 milhões  Windows 2000: Novo paradigma (Internet Full)  Maior Uso = Maior grau de exposição = Maior Superfície de Ataque
  • 17. Resultados - Desktop Bugs críticos de Segurança x Boletim de Segurança 35 35 22 21 18 Professional Service Pack 1 Service Pack 2 Fonte: Microsoft Security Bulletin Search
  • 18. Resultados - Servidores Boletins de criticidade Importante e Crítico, após lançamento do produto Fonte: Microsoft Security Bulletin Search
  • 19. Security Development Lifecycle  Processo viável de ser integrado a um processo de desenvolvimento existente.  Considerar a segurança como parte do projeto do software, não como uma premissa a ser cumprida posteriormente.  Facilmente adaptável para exigências regulatórias de segurança em software (SOX, PCI).
  • 20. SDL - Fases  Requerimentos  Design  Implementação  Verificação  Release  Suporte e Serviço
  • 21. Fase 0 – Educação e Consciência  Desenvolver com segurança envolve conhecimento específico e consciência  Nivelamento do conhecimento na equipe.  Aprofundamento em demandas específicas
  • 22. Fase 0 – Educação e Consciência  Curso anual de segurança em desenvolvimento  Sugestão de conteúdo:  Visão geral sobre o Trustworthy Computing (Computação Confiável)  Introdução ao SDL  Conceitos básicos de Design Seguro:  Redução de Superfície de Ataque  Defesa em Profundidade  Mínimos Privilégios  Secure Defaults
  • 23. Fase 0 – Educação e Consciência  Sugestão de conteúdo:  Modelagem de Ameaças  Design voltado para modelo de ameaças  Codificação para modelo de ameaças  Testes em um modelo de ameaças  Introdução a testes Fuzz  Best Pratices em codificação segura  Buffer Overflow  Problemas aritméticos (divisão por zero, dízimas)  Cross-Site Scripting  SQL Injection  Criptografia
  • 24. Fase 1 – Kick-off  Determinar se o software que será desenvolvido será atendido pelo SDL.  Definir o Security Advisor  Definir o processo de comunicação entre a equipe de segurança e a equipe de desenvolvimento  Validar se o sistema de controle de bugs utilizado possui campos para bugs de segurança e privacidade.  Definir o “BUG BAR”
  • 25. Fase 2 – Design Best Pratices  Definir as boas práticas de segurança.  Embasamento em normas ISO, RFCs e boas práticas de mercado.  Complexidade X Segurança  Software muito complexo apresenta mais problemas de segurança.  Manter o projeto do software simples. Código perfeito é impossível de ser obtido.  ASA e ASR  ASA = Attack Surface Analysis  ASR = Attack Surface Reduction
  • 26. Fase 2 – Design Best Pratices  ASA - Attack Surface Analysis  ASR – Attack Surface Reduction  Definem a redução da exposição de código que seja acessível por usuários não confiáveis.  Código = recursos, serviços, funções, etc.  Redução da quantidade de código que é executado por default.  Restringir o escopo de quem pode acessar o código.  Restringir o escopo do código que identifica quem pode acessá-lo (perfis).  Reduzir o privilégio do código
  • 27. Fase 2 – Design Best Pratices  Script  a) “Esta funcionalidade é realmente importante ?”  b) “Quem precisa acessar esta funcionalidade ? De onde esta funcionalidade será acessada ?”  c) Reduzir privilégios
  • 28. Fase 3 – Análise de Risco  Mapeamento do nível de risco para o software a partir dos modelos de ameaças  Alto Risco = Altos Custos de Suporte e Desenvolvimento  Risco = Probabilidade X Severidade X Relevância  Identificar as ameaças ao software  Determinar os riscos relacionados a cada ameaça.  Planejar medidas de mitigação para cada risco.
  • 29. Fase 4 – Relacionamento com Clientes  Disponibilizar ferramentas, documentação e melhores práticas para os clientes.  Ferramentas úteis para automatização de configurações de segurança.  Ex: IIS LockDown, SQL 2005 Surface Analysis  Documentação clara e transparente sobre os recursos de segurança e controles.  Transparência com o cliente.
  • 30. Fase 5 – Codificação Segura  Conhecimento sobre como construir um código de forma segura  Utilizar a última versão do compilador disponível.  Utilizar os recursos de segurança presentes no compilador  /GS – Checagem contra problemas de buffer  /NXCOMPAT – Tornar o executável compatível com o DEP (Data Execution Protection) do Windows 2003.  Utilizar ferramentas para análise de código-fonte.  Não utilizar funções banidas  sscanf_s() no lugar de scanf()
  • 31. Fase 6 – Testes de Segurança  Fuzz Testing  Teste em massa de input de dados mal-formados/mal- formatados.  Penetration Test  Teste com objetivo de obter acesso privilegiado ao software a partir de um acesso não-privilegiado.  Foco  80% do tempo em Fuzz Testing.  20% em Penetration Test.
  • 32. Fase 7 – Security Push  Task-Force para encontrar e resolver os bugs de segurança antes da entrega do software.  Somente após a fase de implementação. Produto completo.  Não substitui o SDL; faz parte dele.
  • 33. Fase 8 – Final Security Review  “Do ponto de vista da segurança, este software está pronto para ser entregue ao cliente ?”  Análise de segurança por uma equipe neutra.  Encontrar as últimas vulnerabilidades presentes no software.  Corrigir as vulnerabilidades / assumir os riscos
  • 34. Fase 9 – Resposta a Incidentes  Transparência  Elaborar um processo de resposta a incidentes  Blogs, boletim de segurança, patchs, service packs  “Manter a calma”  Assumir os erros e aprender com eles.  Situações de Emergência X Situações Críticas  Afeta privacidade e/ou disponibilidade ? = Emergência
  • 35. SDL  Security Development Lifecycle  SD3+C  Security by Design  Security by Default  Security in Deployment  Communications
  • 36. SDL  Integração do SDL ao processo de desenvolvimento
  • 37. SDL - Fases  Requerimentos  Design  Implementação  Verificação  Release  Suporte e Serviço
  • 38. Design Best Pratices  Definir as boas práticas de segurança.  Embasamento em normas ISO, RFCs e boas práticas de mercado.  Complexidade X Segurança  Software muito complexo apresenta mais problemas de segurança.  Manter o projeto do software simples. Código perfeito é impossível de ser obtido.  ASA e ASR  ASA = Attack Surface Analysis  ASR = Attack Surface Reduction
  • 39. Design Best Pratices  ASA - Attack Surface Analysis  ASR – Attack Surface Reduction  Definem a redução da exposição de código que seja acessível por usuários não confiáveis.  Código = recursos, serviços, funções, etc.  Redução da quantidade de código que é executado por default.  Restringir o escopo de quem pode acessar o código.  Restringir o escopo do código que identifica quem pode acessá-lo (perfis).  Reduzir o privilégio do código
  • 40. Questões de Design  Arquitetura do Software  Acesso ao banco de dados  Armazenamento de credenciais de acesso
  • 41. Design - Arquitetura  Defesa em Profundidade  Objetivo: Proteger a informação, não o sistema.  O alvo de um atacante é sempre o banco de dados, não o sistema em si.  Proteção em camadas, dificultando assim o acesso do atacante ao banco de dados.
  • 42. Design - Arquitetura  Defesa em Profundidade  Client-Server clássico  Software cliente acessando diretamente banco de dados  Problemas:  O banco de dados estará diretamente conectado à rede da estação cliente.  Acesso direto ao banco de dados através de Excel.
  • 43. Design - Arquitetura  Defesa em Profundidade  Client-Server 3 camadas
  • 44. Design - Arquitetura  Defesa em Profundidade  Client-Server 3 camadas  Software cliente acessa servidor de componentes.  Servidor de componentes acessa o banco de dados.  Vantagens:  Isolamento do banco de dados com relação à rede dos clientes.  Reutilização de funções de acesso/negócios,etc existentes nos componentes.  Ponto único de manutenção e upgrade de funções.  Desvantagem:  A atualização de clientes é muito complexa e trabalhosa.
  • 45. Design - Arquitetura  Defesa em Profundidade  Solução Web 2 camadas  Cliente Web acessa servidor Web.  Servidor Web acessa banco de dados.  Problemas:  O banco de dados estará diretamente conectado à rede da estação cliente.  Acesso direto ao banco de dados através de Excel.  Firewall não resolve todos os problemas.
  • 46. Design - Arquitetura  Defesa em Profundidade  Cliente Web acessa servidor Web.  Servidor Web acessa servidor de componentes.  Servidor de componentes acessa o banco de dados.  Vantagens:  Isolamento do banco de dados com relação à rede dos clientes.  Reutilização de funções de acesso/negócios,etc existentes nos componentes.  Ponto único de manutenção e upgrade de funções.  Atualização de clientes é transparente. Aplicação Web.
  • 47. Design – Banco de Dados  Acesso ao banco de dados  Acesso claro, sem criptografia  Acesso seguro, com criptografia (IPSEC, VPN).  Questões  O software não consegue garantir o controle de acesso ao banco de dados ?  Usar criptografia como controle adicional de acesso.  Os dados são sensíveis ?  Usar criptografia no armazenamento dos dados.  O banco de dados suporta criptografia ?  Use criptografia !
  • 48. Design – Credenciais de Acesso  Credenciais de Acesso  Onde armazenar ?  Normalmente é armazenado no próprio código-fonte do software. Ex: (user=“XXX” ; password=“YYY”);  O desenvolvedor deve ter acesso posterior às credenciais de acesso ?  Troca de senha  Uso de ambiente de desenvolvimento, com massa de dados não relevante.  Avaliar o risco e confiança.
  • 49. Design – Credenciais de Acesso  Credenciais de Acesso  DPAPI (Data Protection Application Programming Interface)  Para criptografar uma senha qualquer, é necessário trabalhar com a senha da chave de criptografia. 2 problemas.  DPAPI utiliza os recursos de criptografia nativos do sistema operacional para proteger a credencial de acesso do seu sistema.  Armazenamento no Registry.
  • 50. Design – Credenciais de Acesso  Credenciais de Acesso  Single Sign-on  Utilizar uma entidade externa para gerenciar o processo de credenciais de acesso.  Utilizar algum serviço de diretório, como o Active Directory.  O controle de acesso é baseado em perfis, que são atribuídos através de grupos no Active Directory.  Vantagem: O desenvolvedor NÃO precisa se preocupar em implementar diversos controles de segurança, armazenamento de senhas, logs de acesso, etc. Utilizando o Active Directory, todos estes serviço estão expostos para o uso.
  • 51. Design – Conclusão  Na fase de Design é feita a concepção do software.  Definir:  Arquitetura  Acesso ao banco de dados  Uso de credenciais de acesso  Com o uso de modelos/patterns/templates, o tempo de trabalho na fase de Design é baixo.  O objetivo de implementar segurança na fase de Design é garantir que o acesso às informações no banco de dados seja feito somente por entidades autorizadas.