QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE - Presentation Transcript
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Fabiano G. Souza – Arquiteto de Sistemas – Unisys [email_address] Jun 7, 2009 MISSÃO CRÍTICA Page
Objetivos
Apresentar uma visão geral sobre segurança e qualidade de software
Demonstrar a importância da integração de práticas de segurança ao ciclo de desenvolvimento de software
Duração: aproximadamente 40 minutos
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Agenda
Cenário atual da segurança
Visão geral de segurança de software
Demandas da segurança de TI
Integrando qualidade de código ao processo de desenvolvimento
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Cenário atual
Pesquisa Computer Associates (Julho 2006)
642 grandes empresas americanas
Empresas afetadas nos últimos 12 meses: 84%
54% das empresas enfrentaram queda de produtividade dos funcionários
25% algum tipo de constrangimento público, perda de confiança e danos à reputação
20% perda de receita, clientes ou outros ativos.
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Cenário atual
“ Mais de 70% das vulnerabilidades de segurança existe na camada de aplicativos, não na camada de rede” - Gartner
“ 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
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Cenário atual
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.
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.
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Objetivos de segurança
100% de segurança é impossível
É necessário decidir:
O que precisa ser seguro
O quanto precisa ser seguro
Segurança deve ser equilibrada com usabilidade (e acessibilidade)
Super seguro = pouco usável
Muito usável = inseguro
Aprender a equilibrar segurança/usabilidade baseado nos riscos
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Segurança e custo Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Segurança
Segurança é como uma corrente que é tão forte quanto o elo mais fraco
Três componentes essenciais:
Serviços de rede
Sistema operacional
Aplicativo
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Rede e algo mais
Muito já foi feito para aumentar a segurança na camada de rede como:
Ferramentas de detecção de intrusão, anti-virus, firewalls, VPNs, detecção de ataques Denial of Service, etc.
Mas... somente segurança no nível de rede não é mais suficiente
Os aplicativos são disponíveis na internet ou extranets
A mesma porta de acesso ao aplicativo é a porta de ataque
O ataque tem características de um acesso “inofensivo”
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Software é mais complexo a cada dia Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Produtos seguros são produtos de qualidade Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
O estado da segurança de TI
Segurança geralmente é considerada de forma adicional e não integrada ao desenvolvimento. Em geral:
Casos de uso não capturam requisitos de segurança
Segurança é vista como uma requisito não funcional e não um alavancador de negócios
Considerações de segurança somente são feitas na fase de deployment
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
O estado da segurança de TI
Necessidade crescente de interações sem fronteiras preservando a segurança
Organizações centradas nas redes
Necessidade cada vez maior de agilidade e acesso rápido as informações
Cada vez maior dependência inter-sistemas
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Preocupações básicas
Confidencialidade
Apenas indivíduos com privilégios tem acesso a informação.
Integridade
A garantia que a informação permanece correta todo o tempo e não foi alterada ou destruída.
Disponibilidade
Assegurar que os usuários autorizados tenham acesso à informação e seus recursos associados sempre que se torne necessário.
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
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
Visão do SEI - Software Engineering Institute Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Atividades integradas ao desenvolvimento
Análise e eliminação de riscos
Identificar as ameaças e considerar o possível dano para justificar as ações preventivas.
Análise de custo-benefício.
Identificar riscos residuais.
Análise comparativa
Medir os prós e contras de uma ação preventiva.
Identificar e comparar alternativas.
Definição de políticas
Definir regras e práticas que regulam a proteção de uma aplicação.
Análise de fatores
Identificar os fatores de segurança de cada componente da infra-estrutura (dispositivos clientes, suporte a single sign-on, etc).
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Atividades integradas ao desenvolvimento
Análise por camada de software
Rever os fatores que impactam os mecanismos de segurança em cada camada do sistema
Testes caixa branca e caixa preta
Teste caixa preta ou de conhecimento zero (teste de penetração)
Teste caixa branca ou interno para ataques conhecidos e níveis de tolerância (ataques DoS, etc.)
Continuidade de serviço e Disaster Recovery
Determinar o nível de tolerância para ameaças potenciais
Definir mecanismos de proteção de falhas e gerenciamento de exceções
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Como melhorar a qualidade do software?
Reuso
Código melhor testado
Menor superfície de ataque
Geração automática de código
Verificação automatizada de código fonte
Inspeções por terceiros
Programação em par
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Padrões de Projeto
Um design pattern é uma solução reutilizável para um problema recorrente de projeto de software
Melhora o reuso de componentes e frameworks de segurança
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.
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Plataformas de desenvolvimento mais seguras
Plataformas mais modernas são inerentemente mais seguras
J2EE e Microsoft .NET
Código intermediário
Máquinas virtuais
Modelos de execução segura de código
APIs extensas de segurança e criptografia
Modelos de autenticação e autorização integrados
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Ferramentas de verificação de código
Microsoft .NET
FxCop com integração ao Visual Studio .NET
Procura por 200 defeitos no código fonte:
Projeto de bibliotecas
Internacionalização
Convenções de nomenclatura
Performance
Segurança
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Ferramentas de verificação de código
J2EE (ferramentas Open-Source)
Checkstyle
Aderência a padrões de codificação e melhores práticas
PMD
Alerta sobre possíveis bugs
Código morto
Código duplicado
FindBugs
Procura por padrões no código típicos de bugs
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Conclusão
Segurança deve ser parte integral do negócio.
Devemos garantir a segurança em todos aspectos de uma solução.
O ciclo de desenvolvimento deve possuir atividades voltadas a segurança de forma integrada desde o início do projeto.
O uso de padrões e melhores práticas é fundamental para mantermos os custos baixos e obter a qualidade e robustez desejadas.
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Obrigado pela atenção! Perguntas? [email_address] Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Método de Threat Modeling
É uma abordagem estruturada para identificar e planejar a eliminação de todas ameaças a qualquer aplicação.
Deve começar na fase de análise e projeto.
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.
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Threat Modeling Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Técnicas - Threat Modeling
Entry point identification
Privilege boundaries
Threat trees
Jun 7, 2009 QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page
Uma visão geral sobre segurança e qualidade de so more
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. less
0 comments
Post a comment