qualidade, seguranÇa e confiabilidade de software

34
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Fabiano G. Souza – Arquiteto de Sistemas – Unisys [email protected] Jun 12, 2022 MISSÃO CRÍTICA Page 1

Upload: fabiano-souza

Post on 06-Jun-2015

6.490 views

Category:

Technology


0 download

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

Page 1: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Fabiano G. Souza – Arquiteto de Sistemas – [email protected]

Apr 13, 2023

MISSÃO CRÍTICA Page 1

Page 2: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 3: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 4: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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.

Page 5: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 6: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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.

Page 7: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 8: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 8

Segurança e custo

Page 9: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 10: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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”

Page 11: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 11

Software é mais complexo a cada dia

Page 12: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 12

Produtos seguros são produtos de qualidade

Page 13: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 14: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 15: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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.

Page 16: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 16

Page 17: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 17

Page 18: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 19: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 19

Visão do SEI - Software Engineering Institute

Page 20: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 20

Page 21: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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).

Page 22: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 23: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 24: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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.

Page 25: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 25

Page 26: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 27: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 28: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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

Page 29: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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.

Page 30: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 30

Obrigado pela atenção!

Perguntas?

[email protected]

Page 31: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 31

Page 32: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

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.

Page 33: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 33

Threat Modeling

Page 34: QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE

Apr 13, 2023

QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE Page 34

Técnicas - Threat Modeling

• Entry point identification

• Privilege boundaries

• Threat trees