A primeira publicação que se falava sobre Buffer Overflow ocorreu em 1972, quando foi inicialmente identificado e documentado no “Computer Security Technology Planning Study”:
"O código que executa essa função não checa os endereços de origem e destino devidamente, permitido que porções do monitor sejam sobrepostas pelo usuário. Isto pode ser usado para injetar código no monitor que permitirá ao usuário tomar controle da máquina." (Página 61).Monitor, atualmente seria o kernel.
Mas a primeira exploração de buffer overflow que se sabe, ocorreu somente em 1988, pelo worm Morris.
Criado por Robert Morris Jr., estudante da Cornell University, foi lançado na internet em 1988, é o primeiro worm conhecido, tinha o objetivo de “apenas” se espalhar o máximo possível sem ser detectado. Apesar de o worm ter sido criado pensando em causar nenhum dano ou roubar informações, devido a seu alto poder de autorreplicação imprevisto, em questão de 90 minutos após o computador ser infectado, o sistema se tornava inutilizável devido a sobrecarga de processamento. O departamento de contabilidade do governo americano estimou que por volta de 6000 máquinas UNIX foram infectadas e o estrago feito foi entre U$100,000 a U$10,000,000 de dólares.
O Morris worm utilizou de diversas vulnerabilidades existentes, umas delas era utilizar-se de ataque de buffer overflow contra uma versão vulnerável do fingerd em sistemas VAX. O worm sobrescrevia um flag autenticada do fingerd para criar uma nova cópia dele mesmo.
| Disquete contendo o código fonte do worm Morris, no Museu de Ciências de Boston. |
No final dos anos 80, Overflows se tornaram uma preocupação nacional sobre segurança nos EUA. Em 1996, um dos mais clássicos artigos sobre o assunto foi publicado, entitulado de "Destruindo a Pilha por Diversão e Lucro" (the Stack for Fun and Profit) , introduz um passo-a-passo sobre como realizar buffer overflow utilizando pilha, um “must-read” para estudantes de segurança e profissionais da área, o artigo está disponível aqui.
Alguns outros casos de ataque de buffer overflow foram surgindo ao longo dos anos depois. Como o do Code Red Worm I e II, lançados no verão de 2001. O primeiro atacava Microsoft ISS Web Servers, usando uma string com vários caracteres ‘N’ repetidos para transbordar o buffer. O Code Red Worm II era uma variação do primeiro, só que utilizando caracteres ‘X’. O worm Code Red original iniciou um ataque de negação de serviço distribuída (DDoS) na Casa Branca. O ínicio do pacote do worm se parecia com o seguinte:
GET/default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucb
d3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u
8b00%u531b%u53ff%u0078%u0000%u00=a
| Linha do tempo demonstrando a expansão do worm Code Red em 2001. |
Embora o buffer overflow tenha tido incontável importância na área de pesquisa sobre segurança, hoje em dia essa área está quase morta pela comunidade de pesquisa. Será mesmo? Então, após algumas décadas de existência, podemos finalmente deixarmos de preocuparmos sobre? o overflow foi derrotado? Pelo que parece, não. Iremos falar em breve sobre o Heartbleed.
Fonte:
http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html
http://groups.csail.mit.edu/mac/classes/6.805/articles/morris-worm.html
http://jabsoft.io/2013/09/25/are-buffer-overflows-solved-yet-a-historical-tale/
https://courses.cs.washington.edu/courses/cse484/13wi/lectures/Lecture02-Wi-2013.pdf
http://cyberwarfaremag.files.wordpress.com/2008/10/codered_infect.gif
Nenhum comentário:
Postar um comentário