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.

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Uma visão geral sobre segurança e qualidade de software
Foco na importância da integração de práticas de segurança ao ciclo de desenvolvimento de software.

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

  1. 1. QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Fabiano G. Souza – Arquiteto de Sistemas – Unisys [email_address] Jun 7, 2009 MISSÃO CRÍTICA Page
  2. 2. Objetivos <ul><li>Apresentar uma visão geral sobre segurança e qualidade de software </li></ul><ul><li>Demonstrar a importância da integração de práticas de segurança ao ciclo de desenvolvimento de software </li></ul><ul><li>Duração: aproximadamente 40 minutos </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  3. 3. Agenda <ul><li>Cenário atual da segurança </li></ul><ul><li>Visão geral de segurança de software </li></ul><ul><li>Demandas da segurança de TI </li></ul><ul><li>Integrando qualidade de código ao processo de desenvolvimento </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  4. 4. Cenário atual <ul><li>Pesquisa Computer Associates (Julho 2006) </li></ul><ul><ul><li>642 grandes empresas americanas </li></ul></ul><ul><li>Empresas afetadas nos últimos 12 meses: 84% </li></ul><ul><ul><li>54% das empresas enfrentaram queda de produtividade dos funcionários </li></ul></ul><ul><ul><li>25% algum tipo de constrangimento público, perda de confiança e danos à reputação </li></ul></ul><ul><ul><li>20% perda de receita, clientes ou outros ativos. </li></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  5. 5. Cenário atual <ul><li>“ Mais de 70% das vulnerabilidades de segurança existe na camada de aplicativos, não na camada de rede” - Gartner </li></ul><ul><li>“ A conclusão é inevitável: qualquer noção de que a segurança é apenas uma questão de proteger o perímetro de rede é totalmente ultrapassada” - IDC and Symantec </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  6. 6. Cenário atual <ul><li>Organizações que atingiram um alto nível de maturidade na segurança de seus sistemas podem reduzir os gastos anuais com TI entre 3% e 4% até 2008, aponta pesquisa do Gartner. </li></ul><ul><li>Por outro lado, organizações que não atingiram um nível desejável de eficiência ou têm investido pouco na proteção da infra-estrutura deverão ver seus investimentos em segurança crescerem até 8% no período. </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  7. 7. Objetivos de segurança <ul><li>100% de segurança é impossível </li></ul><ul><li>É necessário decidir: </li></ul><ul><ul><li>O que precisa ser seguro </li></ul></ul><ul><ul><li>O quanto precisa ser seguro </li></ul></ul><ul><li>Segurança deve ser equilibrada com usabilidade (e acessibilidade) </li></ul><ul><ul><li>Super seguro = pouco usável </li></ul></ul><ul><ul><li>Muito usável = inseguro </li></ul></ul><ul><li>Aprender a equilibrar segurança/usabilidade baseado nos riscos </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  8. 8. Segurança e custo Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  9. 9. Segurança <ul><li>Segurança é como uma corrente que é tão forte quanto o elo mais fraco </li></ul><ul><li>Três componentes essenciais: </li></ul><ul><ul><li>Serviços de rede </li></ul></ul><ul><ul><li>Sistema operacional </li></ul></ul><ul><ul><li>Aplicativo </li></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  10. 10. Rede e algo mais <ul><li>Muito já foi feito para aumentar a segurança na camada de rede como: </li></ul><ul><ul><li>Ferramentas de detecção de intrusão, anti-virus, firewalls, VPNs, detecção de ataques Denial of Service, etc. </li></ul></ul><ul><li>Mas... somente segurança no nível de rede não é mais suficiente </li></ul><ul><ul><li>Os aplicativos são disponíveis na internet ou extranets </li></ul></ul><ul><ul><li>A mesma porta de acesso ao aplicativo é a porta de ataque </li></ul></ul><ul><ul><li>O ataque tem características de um acesso “inofensivo” </li></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  11. 11. Software é mais complexo a cada dia Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  12. 12. Produtos seguros são produtos de qualidade Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  13. 13. O estado da segurança de TI <ul><li>Segurança geralmente é considerada de forma adicional e não integrada ao desenvolvimento. Em geral: </li></ul><ul><ul><li>Casos de uso não capturam requisitos de segurança </li></ul></ul><ul><ul><li>Segurança é vista como uma requisito não funcional e não um alavancador de negócios </li></ul></ul><ul><ul><li>Considerações de segurança somente são feitas na fase de deployment </li></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  14. 14. O estado da segurança de TI <ul><li>Necessidade crescente de interações sem fronteiras preservando a segurança </li></ul><ul><ul><li>Organizações centradas nas redes </li></ul></ul><ul><ul><li>Necessidade cada vez maior de agilidade e acesso rápido as informações </li></ul></ul><ul><ul><li>Cada vez maior dependência inter-sistemas </li></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  15. 15. Preocupações básicas <ul><li>Confidencialidade </li></ul><ul><ul><li>Apenas indivíduos com privilégios tem acesso a informação. </li></ul></ul><ul><li>Integridade </li></ul><ul><ul><li>A garantia que a informação permanece correta todo o tempo e não foi alterada ou destruída. </li></ul></ul><ul><li>Disponibilidade </li></ul><ul><ul><li>Assegurar que os usuários autorizados tenham acesso à informação e seus recursos associados sempre que se torne necessário. </li></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  16. 16. Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  17. 17. Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  18. 18. Falhas críticas nas aplicações Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page • Input validation • Output sanitation • Buffer overflow • Data injection • Improper error handling • Weak session identifiers • Weak Password exploits • Session theft • Cross-site scripting • Insecure configuration data • Broken authentication/ access control • Audit and logging failures • Improper error handling • Denial of Service • Man-in-the-middle • Multiple sign-on issues • Weak Encryption • Coding / Deployment problems
  19. 19. Visão do SEI - Software Engineering Institute Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  20. 20. Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  21. 21. Atividades integradas ao desenvolvimento <ul><li>Análise e eliminação de riscos </li></ul><ul><ul><li>Identificar as ameaças e considerar o possível dano para justificar as ações preventivas. </li></ul></ul><ul><ul><li>Análise de custo-benefício. </li></ul></ul><ul><ul><li>Identificar riscos residuais. </li></ul></ul><ul><li>Análise comparativa </li></ul><ul><ul><li>Medir os prós e contras de uma ação preventiva. </li></ul></ul><ul><ul><li>Identificar e comparar alternativas. </li></ul></ul><ul><li>Definição de políticas </li></ul><ul><ul><li>Definir regras e práticas que regulam a proteção de uma aplicação. </li></ul></ul><ul><li>Análise de fatores </li></ul><ul><ul><li>Identificar os fatores de segurança de cada componente da infra-estrutura (dispositivos clientes, suporte a single sign-on, etc). </li></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  22. 22. Atividades integradas ao desenvolvimento <ul><li>Análise por camada de software </li></ul><ul><ul><li>Rever os fatores que impactam os mecanismos de segurança em cada camada do sistema </li></ul></ul><ul><li>Testes caixa branca e caixa preta </li></ul><ul><ul><li>Teste caixa preta ou de conhecimento zero (teste de penetração) </li></ul></ul><ul><ul><li>Teste caixa branca ou interno para ataques conhecidos e níveis de tolerância (ataques DoS, etc.) </li></ul></ul><ul><li>Continuidade de serviço e Disaster Recovery </li></ul><ul><ul><li>Determinar o nível de tolerância para ameaças potenciais </li></ul></ul><ul><ul><li>Definir mecanismos de proteção de falhas e gerenciamento de exceções </li></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  23. 23. Como melhorar a qualidade do software? <ul><li>Reuso </li></ul><ul><ul><li>Código melhor testado </li></ul></ul><ul><ul><li>Menor superfície de ataque </li></ul></ul><ul><li>Geração automática de código </li></ul><ul><li>Verificação automatizada de código fonte </li></ul><ul><li>Inspeções por terceiros </li></ul><ul><li>Programação em par </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  24. 24. Padrões de Projeto <ul><li>Um design pattern é uma solução reutilizável para um problema recorrente de projeto de software </li></ul><ul><li>Melhora o reuso de componentes e frameworks de segurança </li></ul><ul><li>No projeto permite melhor comunicação do conhecimento de segurança e identificação de riscos tradicionalmente identificados apenas através de protótipos ou experiência. </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  25. 25. Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  26. 26. Plataformas de desenvolvimento mais seguras <ul><li>Plataformas mais modernas são inerentemente mais seguras </li></ul><ul><ul><li>J2EE e Microsoft .NET </li></ul></ul><ul><ul><ul><li>Código intermediário </li></ul></ul></ul><ul><ul><ul><li>Máquinas virtuais </li></ul></ul></ul><ul><ul><ul><li>Modelos de execução segura de código </li></ul></ul></ul><ul><ul><ul><li>APIs extensas de segurança e criptografia </li></ul></ul></ul><ul><ul><ul><li>Modelos de autenticação e autorização integrados </li></ul></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  27. 27. Ferramentas de verificação de código <ul><li>Microsoft .NET </li></ul><ul><ul><li>FxCop com integração ao Visual Studio .NET </li></ul></ul><ul><ul><ul><li>Procura por 200 defeitos no código fonte: </li></ul></ul></ul><ul><ul><ul><ul><li>Projeto de bibliotecas </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Internacionalização </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Convenções de nomenclatura </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Performance </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Segurança </li></ul></ul></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  28. 28. Ferramentas de verificação de código <ul><li>J2EE (ferramentas Open-Source) </li></ul><ul><ul><li>Checkstyle </li></ul></ul><ul><ul><ul><li>Aderência a padrões de codificação e melhores práticas </li></ul></ul></ul><ul><ul><li>PMD </li></ul></ul><ul><ul><ul><li>Alerta sobre possíveis bugs </li></ul></ul></ul><ul><ul><ul><li>Código morto </li></ul></ul></ul><ul><ul><ul><li>Código duplicado </li></ul></ul></ul><ul><ul><li>FindBugs </li></ul></ul><ul><ul><ul><li>Procura por padrões no código típicos de bugs </li></ul></ul></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  29. 29. Conclusão <ul><li>Segurança deve ser parte integral do negócio. </li></ul><ul><li>Devemos garantir a segurança em todos aspectos de uma solução. </li></ul><ul><li>O ciclo de desenvolvimento deve possuir atividades voltadas a segurança de forma integrada desde o início do projeto. </li></ul><ul><li>O uso de padrões e melhores práticas é fundamental para mantermos os custos baixos e obter a qualidade e robustez desejadas. </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  30. 30. Obrigado pela atenção! Perguntas? [email_address] Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  31. 31. Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  32. 32. Método de Threat Modeling <ul><li>É uma abordagem estruturada para identificar e planejar a eliminação de todas ameaças a qualquer aplicação. </li></ul><ul><li>Deve começar na fase de análise e projeto. </li></ul><ul><li>Devemos enumerar todos possíveis ameaças para a aplicação e os recursos associados, construindo um modelo que irá ajudar no projeto e desenvolvimento. </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  33. 33. Threat Modeling Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
  34. 34. Técnicas - Threat Modeling <ul><li>Entry point identification </li></ul><ul><li>Privilege boundaries </li></ul><ul><li>Threat trees </li></ul>Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page

×