Capítulo de livro Revisado por pares

A Unit-Based Symbolic Execution Method for Detecting Heap Overflow Vulnerability in Executable Codes

2022; Springer Science+Business Media; Linguagem: Inglês

10.1007/978-3-031-09827-7_6

ISSN

1611-3349

Autores

Maryam Mouzarani, Ali Kamali, Sara Baradaran, Mahdi Heidari,

Tópico(s)

Software Engineering Research

Resumo

Symbolic execution has been a popular method for detecting vulnerabilities of programs in recent years, yet path explosion has remained a significant challenge in its application. This paper proposes a method for improving the efficiency of symbolic execution and detecting heap overflow vulnerability in executable codes. Instead of applying symbolic execution to the whole program, our method initially determines test units of the program, which are parts of the code that might contain heap overflow vulnerability. This is performed through static analysis and based on the specification of heap overflow vulnerability. Then, it applies symbolic execution to the test units and extracts a constraint tree for each unit. Every node in this tree contains the path and vulnerability constraints on the unit input data for executing and overflowing heap buffers in that node. Solving these constraints gives us input values for the test unit that execute the desired nodes and cause heap overflow. Finally, we use curve fitting and treatment learning to approximate the relation between system and unit input data as a function. Using this function, we generate system inputs that enter the program, reach vulnerable instructions in the desired test unit, and cause heap overflow in those instructions. This method is implemented as a plugin for angr framework and evaluated using a group of benchmark programs. The experiments show its superiority over similar tools in accuracy and performance.

Referência(s)