Buffer Overflows Julio Auto - jam. Roteiro Introdução Stack Overflows Heap Overflows...

Click here to load reader

download Buffer Overflows Julio Auto - jam. Roteiro Introdução Stack Overflows Heap Overflows Integer Overflows Format String Attacks Conclusões Referências

of 36

  • date post

    22-Apr-2015
  • Category

    Documents

  • view

    116
  • download

    1

Embed Size (px)

Transcript of Buffer Overflows Julio Auto - jam. Roteiro Introdução Stack Overflows Heap Overflows...

  • Slide 1
  • Buffer Overflows Julio Auto - jam
  • Slide 2
  • Roteiro Introduo Stack Overflows Heap Overflows Integer Overflows Format String Attacks Concluses Referncias
  • Slide 3
  • Introduo - Prlogo Fudamentos sobre Intel x86 Ambiente Linux/UNIX Pr-requisito: programao C (ou linguagem de sintaxe similar) No entanto, os conceitos se aplicam a outros S.O.s, arquiteturas e linguagens modernos
  • Slide 4
  • Introduo - Histrico 1970: Criao da Linguagem C, K&R 1988: Worm de Robert T. Morris Jr. 1996: Phrack publica Smashing The Stack For Fun And Profit, de AlephOne 2001: Exploiting Format String Vulnerabilities, de scut 2001: Phrack 57
  • Slide 5
  • Introduo O Que Estouro da memria de um buffer Stack/Heap overflows Sobrescrita de dados Comportamento inesperado Denial of Service Execuo de cdigo arbitrrio
  • Slide 6
  • Introduo O Que (2) /* buf um array com capacidade para 8 ints */ for (i = 0; i
  • Integer Overflows (2) Antiga vulnerabilidade no OpenSSH: input_userauth_info_response() em auth2-chall.c: 258 nresp = packet_get_int(); 259 if (nresp > 0) { 260 response = xmalloc(nresp * sizeof(char*)); 261 for (i = 0; i < nresp; i++) 262 response[i] = packet_get_string(NULL); 263 }
  • Slide 27
  • Integer Overflows (3) Contra-medidas Programao decente
  • Slide 28
  • Format String Attacks Format Strings so strings usadas para formatar um nmero arbitrrio de parmetros de tipo arbitrrio em uma nica string, eg.: /* sprintf (char *buffer, const char *format [, argument,...]); */ sprintf(output, Nome: %s\nNumero: %d\n, nome, numero); printf(Dados:\n%s, output);
  • Slide 29
  • Format String Attacks (2) E se uma format string recebe mais argumentos do que os que foram passados para a funo? Ela vai ler (ou escrever) o que estiver na stack
  • Slide 30
  • Format String Attacks (3) O problema est quando o programa nos deixa controlar a format string: Poderia ser feito diferente? /* fprintf (FILE *stream, const char *format [, argument,...]); */ fprintf(file, string); /* fprintf (FILE *stream, const char *format [, argument,...]); */ fprintf(file, %s, string);
  • Slide 31
  • Format String Attacks (4) Format Strings maliciosas podem: Ler o contedo de qualquer lugar na memria Escrever qualquer valor em qualquer lugar da memria O resto no novidade: Injeo do shellcode, Sobrescrita do endereo de retorno...
  • Slide 32
  • Format String Attacks (5) Contra-medidas Programao decente
  • Slide 33
  • Concluses Buffer Overflow um dos tipos de bug mais comuns e mais perigosos A explorao de um buffer overflow pode invalidar vrias medidas de segurana: Firewalls, Criptografia...
  • Slide 34
  • Concluses (2) O mundo procura por solues: Linguagens seguras, Softwares de bug-hunting, Protees em memory-level... At l, somente uma medida se mostra infalvel: Programao decente
  • Slide 35
  • Referncias Phrack - http://www.phrack.org/http://www.phrack.org/ sshutup-theo - http://packetstormsecurity.org/0207- exploits/sshutup-theo.tar.gz http://packetstormsecurity.org/0207- exploits/sshutup-theo.tar.gz
  • Slide 36
  • Buffer Overflows Julio Auto - jam