Document details

Detecção de vulnerabilidades de inteiros na adaptação de software de 32 para 64 bits

Author(s): Medeiros, Ibéria Vitória de Sousa

Date: 2007

Persistent ID: http://hdl.handle.net/10451/1203

Origin: Repositório da Universidade de Lisboa

Subject(s): Informática; Teses de mestrado


Description

Tese de mestrado em Informática, apresentada à Universidade de Lisboa, através da Faculdade de Ciências, 2007

Os processadores de 64 bits, comercializados por fabricantes como a Intel e a AMD, começaram a equipar os mais recentes computadores, sendo muito do software neles executado desenvolvido inicialmente para arquitecturas de 32 bits. As aplicações concebidas na linguagem de programação C para a arquitectura de 32 bits, ao serem portadas para 64 bits, podem ficar com vulnerabilidades relacionadas com a manipulação de inteiros. Esta tese estuda as vulnerabilidades que podem surgir quando se adapta ( porta ) sem os necessários cuidados software de 32 para 64 bits, considerando o modelo de dados LP64, muito utilizado em software de código aberto. Também propõe a ferramenta DEEEP que faz a detecção dessas vulnerabilidades através de análise estática de código fonte. A ferramenta é baseada em duas ferramentas de análise estática de código, de código aberto, que são utilizadas para encontrar bugs na manipulação de inteiros, através de verificação de tipos, e para fazer análise de fluxo de dados, para verificar se funções perigosas (p.ex., memcpy, strcpy) estão acessíveis de fora do programa. Após estas duas formas de análise, a ferramenta DEEEP correlaciona a informação delas resultante, identificando se os bugs encontrados são realmente vulnerabilidades, ou seja, se são atacáveis. São apresentados resultados experimentais da utilização da ferramenta com código vulnerável sintético, criado especificamente para avaliar a ferramenta, e com diversos pacotes de código aberto.

64-bit processors, available from manufacturers such as Intel and AMD, started to equip many recent computers, but much of the software running in them has initially been developed for 32-bit architectures. Applications designed in the C programming language for 32-bit architecture when adapted to 64 bits can show vulnerabilities related to integer handling. This thesis studies the vulnerabilities that can arise when porting software from 32 to 64 bits without the necessary care, considering the LP64 data model, widely used in open source software. This thesis also proposes the DEEEP, a tool that detects these vulnerabilities through static analysis of source code. The tool is based on two open source static analysis tools. Type checking is used for finding bugs on the way integers are handled, and data-flow analysis is used to see if hazardous functions (eg. memcpy, strcpy) are accessible from outside the program. After these two forms of analysis, the DEEEP tool correlates their outputs, identifying if the found bugs are really vulnerabilities, i. e., if they are attackable. The tool was evaluated using synthetic code and several open source packages, like Sendmail.

Document Type Master thesis
Language Portuguese
Advisor(s) Correia, Miguel Nuno Dias Alves Pupo
Contributor(s) Repositório da Universidade de Lisboa
facebook logo  linkedin logo  twitter logo 
mendeley logo

Related documents