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

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

(Buffer Overflow…) Tópicos de Engenharia de Computação B

Apresentações semelhantes


Apresentação em tema: "(Buffer Overflow…) Tópicos de Engenharia de Computação B"— Transcrição da apresentação:

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

2 Agenda Introdução Visão Geral Ataques Códigos Prevenção Demonstração
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 é? Quando ocorre ? Vulnerabilidade
É 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: CONSEQUENCIAS: Estruturas adjacentes:
FUNCIONAMENTO ERRADO FALHA DE SEGMENTAÇÃO HORAS DE DESENVOLVIMENTO PERDIDO TEMPO ELEVADO PARA ENCONTRAR O ERRO Exemplo: A: B: Estruturas adjacentes: A – cadeia de caracteres B – número -> Inserir a palavra transbordar na estrutura A o que vai acontecer?

5 Ataques Como é explorada esta Vulnerabilidade? Tipos de Ataque
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 Tabela de risco de funções:
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 "(Buffer Overflow…) Tópicos de Engenharia de Computação B"

Apresentações semelhantes


Anúncios Google