1 / 13

Tópicos de Engenharia de Computação B

(Buffer Overflow…). Tópicos de Engenharia de Computação B Professor: Edmar Rezende Alunos: Artur Praseres Varejão RA: 04142030 Everton Segato Zanon RA: 04251559 Guilherme Hayashi RA: 04122529 Raphael Ricciotti RA: 04148235. Agenda. Introdução Visão Geral

moe
Download Presentation

Tópicos de Engenharia de Computação B

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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 • CONSEQUENCIAS: • 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? • 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

More Related