Dissertação

Automatic Vulnerability Detection: Using Compressed Execution Traces to Guide Symbolic Execution EVALUATED

Execução simbólica é uma técnica que permite analisar todos os possíveis caminhos que um programa pode correr, usando variáveis simbólicas em vez de inputs concretos. Nesta tese, trabalhámos com um conjunto de testes que exercitam as vulnerabilidades e um conjunto de testes que demonstram a funcionalidade do programa. São três as contribuições desta dissertação. Primeiro, é um estudo das técnicas mais recentes na análise de software no contexto de segurança. Segundo, mostramos como implementar as técnicas mencionadas para analisar um programa de forma independente da linguagem alvo, e também quais foram os problemas com que nos confrontámos e as soluções que encontrámos para esses problemas. Finalmente, mostramos como implementar uma versão prioritizada da execução simbólica que dado um conjunto de testes que exercitam um certo componente do software, consegue percorrer apenas os caminhos mais parecidos com os que foram exercitados por esse conjunto de testes, com a assistência de um coeficiente de semelhança dinâmico. Avaliámos esta ferramenta analisando a eficácia e eficiência alcançadas ao tentar encontrar vulnerabilidades em um dataset da DARPA usado na famosa competição Cyber Grand Challenge. Analisámos com sucesso 186 binários nesse dataset com 590 vulnerabilidades no total e encontrámos 118 delas. Adicionalmente, comparámos o nosso coeficiente de semelhança dinâmico com dois outros: O coeficiente de Ochiai e um usado numa ferramenta chamada Staged Program Repair. Mostrámos que o nosso coeficiente de semelhança supera os outros, permitindo analisar um maior número de binários e assim, descobrir mais vulnerabilidades.
Deteção automática de vulnerabilidades, Testes de segurança, Técnicas para análise de software, Execução simbólica

Novembro 25, 2019, 13:0

Documentos da dissertação ainda não disponíveis publicamente

Orientação

ORIENTADOR

Pedro Miguel dos Santos Alves Madeira Adão

Departamento de Engenharia Informática (DEI)

Professor Auxiliar