Towards Assessing the Security of Program Binaries
Software vulnerabilities, stemming from coding weaknesses and poor development practices, have become increasingly prevalent. These vulnerabilities could be exploited by attackers to pose risks to the confidentiality, integrity, and availability of software. To protect themselves, end-users of software may have an interest in knowing if the software they buy and use is secure from such attacks. Our work is motivated by this need to automatically assess and rate the security properties of binary software.
To increase user trust in third-party software, researchers have devised several techniques and tools to identify and mitigate coding weaknesses in binary software. Therefore, our first task in this work is to assess the current landscape and comprehend the capabilities and challenges faced by binary-level techniques aimed at detecting critical coding weaknesses in software binaries. We categorize the most important coding weaknesses in compiled programming languages, and conduct a comprehensive survey, exploration, and comparison of static techniques designed to locate these weaknesses in software binaries. Furthermore, we perform an independent assessments of the efficacy of open-source tools using standard benchmarks.
Next, we develop techniques to assess if secure coding principles were adopted during the generation of the software binary. Towards this goal, we first develop techniques to determine the high-level source language used to produce the binary. Then, we check the feasibility of detecting the use of secure coding best practices during code development. Finally, we check the feasibility of detecting the vulnerable regions of code in any binary executable. Our ultimate future goal is to employ all of our developed techniques to rate the security-quality of the given binary software.