I. Introduction
Many software systems have a large codebase and are developed over several years to provide adequate features to the end-users. Their complexity increases as the number of features grows, leading to many defects being shipped with the software. Software vulnerabilities are a particular type of defect that may be maliciously exploited, leading to severe consequences. Examples include unauthorized access, access to confidential information, and gain of administrative privileges [1].