A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Tópicos de Engenharia de Computação B Professor: Edmar Rezende Alunos: Artur Praseres Varejão RA: 04142030 Everton Segato Zanon RA: 04251559 Guilherme.

Apresentações semelhantes


Apresentação em tema: "Tópicos de Engenharia de Computação B Professor: Edmar Rezende Alunos: Artur Praseres Varejão RA: 04142030 Everton Segato Zanon RA: 04251559 Guilherme."— Transcrição da apresentação:

1 Tópicos de Engenharia de Computação B Professor: Edmar Rezende Alunos: Artur Praseres Varejão RA: Everton Segato Zanon RA: Guilherme HayashiRA: Raphael RicciottiRA: (Buffer Overflow…)

2 Agenda Introdução Visão Geral Ataques Buffer Overflow Baseado em Pilha Buffer Overflow Baseado em Heapy Buffer Overflow de Retorno a Libc Códigos Prevenção Demonstração Perguntas

3 Introdução O que é? É uma falha de segurança cometida por falha do programador durante o período de desenvolvimento de um software. Quando ocorre ? Ocorre quando o tamanho do buffer ultrapassa sua capacidade máxima de armazenamento. Vulnerabilidade O envio de dados maliciosos à um programa por meio de um buffer de dados não dimensionado, podendo corromper dados, quebrar o programa ou executar código malicioso

4 Visão Geral Exemplo: A: B: Estruturas adjacentes : A – cadeia de caracteres B – número -> Inserir a palavra transbordar na estrutura A o que vai acontecer? CONSEQUENCIAS: –FUNCIONAMENTO ERRADO –FALHA DE SEGMENTAÇÃO –HORAS DE DESENVOLVIMENTO PERDIDO –TEMPO ELEVADO PARA ENCONTRAR O ERRO

5 Ataques Como é explorada esta Vulnerabilidade? Explorando-se esta vulnerabilidade pode-se deixar que informações contidas em memória sejam sobrescritas por dados inconsistentes como a área de memória onde se encontra, valor de variáveis locais, parâmetros e/ou endereço de retorno de uma função. Os dados maliciosos podem substituir o endereço de retorno da função, transferindo assim os dados para o controle do atacante. Tipos de Ataque Buffer Overflow Baseado em Pilha Buffer Overflow Baseado em Heapy Buffer Overflow de Retorno a Libic

6 Buffer Overflow Baseado em Pilha Como Funciona? A técnica de exploração mais simples e comum, atua pela alteração do estado da pilha durante a execução do programa para direcionar a execução para o código malicioso contido no buffer estourado Formato

7 Buffer Overflow Baseado em Heap Como Funciona? Bem mais difícil de explorar, por causa da disciplina de acesso à heap (blocos não contíguos, fragmentação interna). Deve-se estourar o buffer armazenado na área da heap em direção ao endereço de retorno na pilha, para direcionar a execução para o código malicioso que se encontra no buffer estourado Formato

8 Buffer Overflow de Retorno a Libc Como Funciona? Alteram o fluxo de execução pelo estouro de algum buffer na pilha ou heap, para algum trecho de código armazenado no segmento de texto do programa. Tipicamente este trecho de código é alguma chamada de função comumente utilizada da biblioteca padrão libc, como as chamadas de execução arbitrária de comandos (funções da família exec(3)).. Formato

9 Exemplos com códigos void processaParam ( char * arg ) { char buffer[10]; strcpy(buffer, arg); /* PROBLEMA: se a string arg tiver mais que 10 caracteres então ela irá exceder o tamanho de buffer provocando um buffer overflow */ printf(buffer); } void main ( int argc, char *argv[] ) { if(arg > 1){ printf(param: %s\n, argv[1]); processaParam(argv[1]); }

10 Prevenção Como evitar Boas Práticas de programação para evitar ataques de Buffer Overflow mostram que o ideal é evitar funções que não especifiquem o número máximo de caracteres a serem copiados entre strings. Tabela de risco de funções:

11 US-Cert – Falha de BO no Winamp

12 Demonstração

13 Perguntas


Carregar ppt "Tópicos de Engenharia de Computação B Professor: Edmar Rezende Alunos: Artur Praseres Varejão RA: 04142030 Everton Segato Zanon RA: 04251559 Guilherme."

Apresentações semelhantes


Anúncios Google