Dissertação

HeapDUO: Finding Heap Vulnerabilities in Binary Code EVALUATED

As vulnerabilidades de corrupção de memória da heap ainda estão presentes no software dos dias de hoje. Como estas vulnerabilidades podem ser usadas para obter privilégios, é necessário localizá-las o mais rapidamente possível. Nesta tese desenvolvemos uma ferramenta chamada HeapDUO, capaz de detetar vulnerabilidades de heap, entre elas, double-free, use-after-free e heap overflows. O nome HeapDUO tem como origem as vulnerabilidades que deteta, Double-free, User-after-free e Heap Overflows. Neste trabalho estendemos a ferramenta GUEB, um analisador estático, capaz de detetar use-after-free e double-free em binários, para também detetar heap overflows. Melhorámos o mecanismo de deteção de use-after-free do GUEB, adicionámos o suporte para a arquitetura x86-64, e adicionámos suporte para a deteção de heap overflows. Para melhorar a deteção de overflows dentro de ciclos, usámos o motor simbólico AVD para determinar o número de vezes que um ciclo pode ser executado. Com esta informação, a análise estática pode realizar uma análise mais completa. Além disso, e para lidar com o elevado número de falsos positivos gerados por analisadores estáticos, modelámos a heap no AVD para poder fazer a triagem das vulnerabilidades reportadas pelo analisador estático. A avaliação da nossa ferramenta foi feita recorrendo aos datasets Juliet e CodeQL. Para cada dataset comparámos o HeapDUO com o GUEB e o AFL++ e para cada uma delas analisámos o número de vulnerabilidades detetadas e também o tempo que demorou. Além disso fomos capazes de detetar um overflow, já conhecido, ao qual foi atribuído o CVE-2021-32614.
Análise Estática, Execução Simbólica, Vulnerabilidades de heap, Deteção Automática

dezembro 3, 2021, 18:0

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

Pedro Miguel dos Santos Alves Madeira Adão

Departamento de Engenharia Informática (DEI)

Professor Associado