SMOV: protecting programs against buffer overflow in hardware

Carregando...
Imagem de Miniatura

Título da Revista

ISSN da Revista

Título de Volume

Editor

Universidade Federal de Minas Gerais

Descrição

Tipo

Dissertação de mestrado

Título alternativo

Primeiro orientador

Membros da banca

Omar Paranaiba Vilela Neto
Antonio Otavio Fernandes
Ricardo Augusto Rabelo Oliveira
Sergio Vale Aguiar Campos

Resumo

Estouro de Arranjos (Buffer Overflow BOF) continua a ser uma das principais vulnerabilidades encontradas em software. Ano passado, a comunidade de Segurança da Informação foi surpreendida quando pesquisadores revelaram uma vulnerabilidade de BOF no OpenSSL.Linguagens de programação como C e C++, amplamente usadas para desenvolvimento de sistemas e em uma grande variedade de aplicações, não proveem Verificação de Limites de Arranjos (Array Bound Checks ABCs) nativamente. Existem inúmeras propostas quevisam a proteção de memória para essas linguagens, através de soluções baseadas em software ou hardware. Ainda assim, entretanto, essas técnicas acabam por comprometer o desempenho dos programas, o que não é uma solução ideal para o problema. Este trabalho apresenta uma nova abordagem para alcançar verificação de limites de arranjos e acesso à memória (quando permitido) através de uma única instrução. Nós discutimos como ela pode ser implementada em arquiteturas com tamanho variável de instruções e disponibilizamosuma implementação de referência.

Abstract

A Buffer Overflow (BOF) continues to be among the top causes of software vulnerabilities. Last year the security world was taken by surprise when researches unveiled a BOF in OpenSSL. Languages like C and C++, widely used for systems development and for a large variety of applications, do not provide native Array-Bound Checks (ABC). A myriadof proposals endeavor memory protection for such languages by employing both softwareand hardware-based solutions. Due to numerous reasons, none of them have yet reached the mainstream. In this work, we propose a novel approach to achieve an arrays bound-check and a memory access (when allowed) within a single instruction. We discuss how it can be implemented on variable-length ISAs and provide a reference implementation.

Assunto

Computação, Computadores Medidas de segurança, Redes de computadores Medidas de segurança

Palavras-chave

Buffer-overflow, Security, Computer Architectures

Citação

Departamento

Curso

Endereço externo

Avaliação

Revisão

Suplementado Por

Referenciado Por