UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL
INSTITUTO DE INFORMÁTICA
PROGRAMA DE POS-GRADUAÇÃO EM COMPUTAÇÃO
_________________________________
DEFESA DE DISSERTAÇÃO DE MESTRADO
Aluno: Paulo Estima Mello
Orientador: Prof. Dr. Raul Fernando Weber
Titulo: Uma Ferramenta Multiplataforma para Prevenção de Buffer Overflow
Área de Pesquisa: Sistema de Computação
Data: 24/02/2010
Hora: 14h
Local: Auditório Prof. José Volkmer de Castilho, Prédio 43424 – Instituto de Informática/UFRGS
Banca Examinadora:
Prof. Dr. Marcelo Soares Pimenta (INF-UFRGS)
Profa. Dra. Regina Lúcia de Oliveira Moraes (UNICAMP)
Prof. Dr. Sérgio Luis Cechin (INF-UFRGS)
Presidente da Banca: Prof. Dr. Raul Fernando Weber
Resumo:
Este trabalho apresenta um método para prevenir as vulnerabilidades causadas por erros de programação insegura que, normalmente, é resultado da solução de um problema proposto ou do desenvolvimento de funcionalidade sem levar em consideração a segurança do sistema como um todo. Os erros de programação (no contexto da segurança de um sistema e não apenas da sua funcionalidade) são normalmente frutos da ignorância do programador sobre as vulnerabilidades apresentadas pelas suas ferramentas para construção de programas.
O estado da arte é brevemente apresentado demonstrando as soluções atuais em termos de proteção contra ataques de buffer overflow baseado em pilha. Soluções em tempo de compilação e pós-compilação por parte do sistema operacional são as mais comuns.
Neste escopo é demonstrada a solução proposta por um protótipo funcional que valida o modelo para uma série de aplicações em duas plataformas diferentes (Windows e Linux). A solução converge a instrumentação de aplicações com o uso de um repositório de endereços
de retorno para prevenir o retorno de funções a endereços não legalmente especificados.
Testes do protótipo foram realizados em ambas as plataformas e mostraram a eficácia do protótipo prevenindo falhas em casos reais de buffer overflow baseado em pilha.
Palavras-Chave: segurança, instrumentação, buffer overflow, erros de programação.
_______________