Escrevendo Software Seguro - Pequeno Resumo

7
Segurança Hoje Produto: Um produto que protege a confidencialidade, integridade e disponibilidade das informações dos clientes Vulnerabilidade de segurança: Um defeito em um produto que torna impossível – mesmo com a utilização adequada do produto - evitar que um invasor usurpe privilegio do usuário. Corrigir vulnerabilidade de segurança e algo caro. Porque? Custo de testar a configuração correção Custo de publicar a correção das versões Custo de escrever a documentação de suporte Custo dos desenvolvedores de descobrir o código vulnerável Dilema Invasor (Hacker) x Defensor (Hacker). 1) O defensor deve defender todos os pontos o invasor pode escolher o ponto mais franco 2) O defensor pode se defender somente de ataques conhecidos, o invasor pode investigar vulnerabilidade desconhecidas 3) O Defensor deve estar constantemente vigilante, o invasor pode atacar a qualquer momento 4) O Defensor deve jogar de acordo com as regras o invasor pode jogar sujo Os desenvolvedores devem construir softwares e soluções que estejam em constante monitoramento, mas os invasores estão sempre em vantagem é um software inseguro será rapidamente derrotado pelos invasores. Princípios da segurança de Software. 1) Aprende com os erros. 2) Minimize sua área de ataque. 3) Utilize a defesa em profundidade 4) Utilize o menor privilégio 5) Empregue padrões seguros 6) Lembre-se de que a compatibilidade com versões anteriores lhe dará dores de cabeça. 7) Assuma que sistema externos são inseguros. 8) Planeje-se para falhas 9) Em caso de falha, escape para um modo seguro.

description

Escrevendo software seguro

Transcript of Escrevendo Software Seguro - Pequeno Resumo

Segurana HojeProduto: Um produto que protege a confidencialidade, integridade e disponibilidade das informaes dos clientesVulnerabilidade de segurana: Um defeito em um produto que torna impossvel mesmo com a utilizao adequada do produto - evitar que um invasor usurpe privilegio do usurio.Corrigir vulnerabilidade de segurana e algo caro. Porque?Custo de testar a configurao correoCusto de publicar a correo das versesCusto de escrever a documentao de suporteCusto dos desenvolvedores de descobrir o cdigo vulnervel

Dilema Invasor (Hacker) x Defensor (Hacker).

1) O defensor deve defender todos os pontos o invasor pode escolher o ponto mais franco2) O defensor pode se defender somente de ataques conhecidos, o invasor pode investigar vulnerabilidade desconhecidas3) O Defensor deve estar constantemente vigilante, o invasor pode atacar a qualquer momento4) O Defensor deve jogar de acordo com as regras o invasor pode jogar sujo

Os desenvolvedores devem construir softwares e solues que estejam em constante monitoramento, mas os invasores esto sempre em vantagem um software inseguro ser rapidamente derrotado pelos invasores.Princpios da segurana de Software.1) Aprende com os erros.2) Minimize sua rea de ataque.3) Utilize a defesa em profundidade4) Utilize o menor privilgio5) Empregue padres seguros6) Lembre-se de que a compatibilidade com verses anteriores lhe dar dores de cabea.7) Assuma que sistema externos so inseguros.8) Planeje-se para falhas9) Em caso de falha, escape para um modo seguro.10) No Misture cdigo e dados.Modelos de ameaas.1) Os softwares so projetados via Ad Hoc e a segurana frequentemente uma vtima do caos.2) Construa modelo de ameaas para seus aplicativos, fazendo uma anlise baseada em segurana que ajuda as pessoas a determinar os riscos de segurana em tempo projeto

3) Processo de modelagem das ameaas consiste:

1) Monte a equipe de modelagem das ameaas.2) Decomponha o aplicativo3) Determine as ameaas ao sistema.4) Escolha como responder s ameaas.5) Escolha tcnicas para atenuar as ameaas.6) Escolha tecnologia adequadas

Como Responder s ameaas1) No Fazer nada2) Informar o usurio sobre a ameaa ou problema.3) Remover o problema ou ameaa.4) Corrigir o problema

Estouro do BufferDefinio de estouro de buffer?1) Emsegurana computacional ouprogramao umtransbordamento de dadosouestouro debuffer

2) Buffer uma alocao feita em memria, no momento da criao de uma varivel ou operao.

3) Uma anomalia onde um programa, ao escrever dados em umbuffer, ultrapassa os limites (tamanho) dobuffer (armazenamento)e sobrescreve a memria adjacente.

4) Esse um caso especial de violao de segurana de memria.a. Limites doarray .Deve-se checar os limites para se evitar ou prevenir o transbordamento de dados b, x(10) = 12345678910 => 11 bytes, todavia a varivel cabe apenas 10 Bytes.5) Um buffer uma unidade de armazenamento temporrio em um computador: uma seo de memria que armazena temporariamente at que o processador processe e envie os dados para outrolocal.

6) O estouro de buffer um evento indesejvel que um programa ou aplicativo gera. Esse evento ocorre quando um software tenta colocar mais dados no buffer do que ele pode conter. Quando ocorrem os estouros, o aplicativo pode falhar, os dados podem ser corrompidos e um vrus pode ser executado.

7) Um estouro de buffer pode ocorrer devido m programao. Os aplicativospossuem um cdigo fonte programado para utilizar os vrios componentes de um computador, incluindo o buffer. Um aplicativo seguro verifica se h excesso em cada caractere e abstm-se de aceitar mais dados uma vez que o buffer esteja cheio. Se o programa no verifica cada caractere, ele estar suscetvel a sofrer um estouro de buffer. Os aplicativos mais antigos, com cdigo fonte desatualizado, so altamente suscetveis a esta falha.

8) O estouro de Buffer tornou-se um dos mtodos de ataque preferidos para desenvolvedores de vrus e cavalos de Troia

9) Um hacker ir procurar por aplicativos que possuem buffers no checados. Aps encontrar um aplicativo disponvel, eles podero escrever um cdigo que pode causar danos ao computador, alterando dados e removendo arquivos. Tambm podem ser coletadas informaes pessoais dos computadores por meio do cdigo malicioso.

10) Aplicar as ltimas correes e definies de vrus para os aplicativos de segurana vai protegeros usurios contra vulnerabilidades de estouro de buffer. Verifique frequentemente os sites visitados com um software de segurana para internet que procure por essas falhas. Os desenvolvedores de aplicativos independentes devem rever todo o cdigo que aceita solicitaes via HTTP de outros usurios. Isto garante que o buffer seja adequadamente checado em todas as entradas relevantes.Explorao baseada em pilha Como Funciona?1) A tcnica de explorao mais simples e comum, funciona alterando o estado da pilha durante a execuo do programa para direcionar a execuo para o cdigo malicioso contido no buffer estourado.

2) Um usurio com habilidades tcnicas pode explorar o estouro debufferem pilhas para manipular o programa de uma das seguintes maneiras:a. Sobrescrever uma varivel local que est prxima dobufferna memria da pilha para mudar o comportamento do programa de modo a beneficiar o atacante.b. Sobrescrever o endereo de retorno da pilha. Uma vez que a funo retorna, a execuo ir continuar no endereo de retorno especificado pelo atacante, geralmente um bufferpreenchido por entrada do usurio.c. Sobrescrever um ponteiro de funo, ou tratador de exceo, que posteriormente executado. (Linguagem C ou C++).Explorao baseada em heap Como Funciona? Bem mais difcil de explorar, por causa da disciplina de acesso heap (blocos no contguos, fragmentao interna). Deve-se estourar o buffer armazenado na rea da heap em direo ao endereo de retorno na pilha, para direcionar a execuo para o cdigo malicioso que se encontra no buffer estourado A memria naheap alocada dinamicamente pela aplicao em tempo de execuo e contem tipicamente dados do programa. A explorao se d corrompendo-se esses dados de modos especficos para fazer a aplicao sobrescrever estruturas internas como listas encadeadas e ponteiros.

Escolha de linguagem de programao. A escolha da linguagem de programao pode ter um efeito profundo na ocorrncia de estouros de buffer. As linguagens mais populares esto C e sua derivativa C++, com uma ampla gama desoftwaressendo escritos nessas linguagens. C e C++ no proveem proteo embutida contra acesso indevido ou sobrescrita de qualquer parte da memria.Uso de bibliotecas seguras O problema de estouro debuffer comum em C e C++ porque elas expem detalhes de baixo nvel de implementao dosbufferscomo contedos e tipos de dados. Estouros debufferdevem ser evitados para se manter um alto nvel de correo no cdigo que executa o gerenciamento de buffer.

Evitando estouro do buffer. Compreendendo a limitao da ferramenta que voc trabalha. Protegendo suas variveis internas, criando variveis de armazenamento e de atribuies. Teste e validao completo

Controle de acesso. O que so ACL lista de controle de acesso Tem como funo definir os mecanismos de controle de acesso adequado para proteger os diversos recursos disponveis. Por que as ACLs So a ltima barreira do seu aplicativo contra um possvel ataque, pois tem evitar que o invasor acesso um recurso do seu aplicativo. Uma lista de controle de acesso (ACL), em relao a um sistema de arquivos do computador, uma lista de permisses anexadas a um objeto. Uma ACL especifica quais usurios ou processos do sistema tm acesso a objetos, bem como as operaes que so permitidas em determinados objetos. Cada entrada em uma ACL tpico especifica um assunto e uma operao. ACL lida com dois conceitos principais: Controle de Acesso de Objetos ou ACOs. Acesso de requisio de objetos ou AROs. Essencialmente, ACL o que usado para decidir quando um ARO quer ter acesso a um ACO. ACL geralmente implementado numa estrutura de rvore. Existe geralmente uma rvore de AROs e uma rvore de ACOs. Para organizar seus objetos em rvores, permisses podem ser tratadas de forma granulada. Crie sua lista de Acesso de Requisio de Objetos (AROs) e Controle de Acesso a Objetos (ACOs). Depois de criar seus ACOs e AROs, finalmente atribuir permisses entre os dois grupos e faa uma checagem das permisses ou validao do que foi concedido.