qualidade, seguranÇa e confiabilidade de software
DESCRIPTION
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.TRANSCRIPT
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
Fabiano G. Souza – Arquiteto de Sistemas – [email protected]
Apr 13, 2023
MISSÃO CRÍTICA Page 1
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 2
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 3
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 4
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.
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 5
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 6
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.
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 7
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 8
Segurança e custo
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 9
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 10
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”
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 11
Software é mais complexo a cada dia
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 12
Produtos seguros são produtos de qualidade
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 13
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 14
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 15
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.
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 16
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 17
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 18
Falhas críticas nas aplicações
• 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/ accesscontrol• Audit and logging failures• Improper error handling• Denial of Service• Man-in-the-middle• Multiple sign-on issues• Weak Encryption• Coding / Deployment problems
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 19
Visão do SEI - Software Engineering Institute
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 20
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 21
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).
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 22
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 23
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 24
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.
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 25
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 26
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 27
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 28
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
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 29
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.
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 30
Obrigado pela atenção!
Perguntas?
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 31
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 32
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.
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 33
Threat Modeling
Apr 13, 2023
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 34
Técnicas - Threat Modeling
• Entry point identification
• Privilege boundaries
• Threat trees