I. Introduction
Cyber-attacks continue to grow in frequency and severity, e.g., from 2015 to 2016 the average annualized loss from cyber-attacks increased 3.03 million in financial services companies, 2.95 million in technology companies, and $2.24 million in retail companies [1]. Various techniques have been developed to help prevent and defend against cyber-attacks. Manual approaches [2]–[4], such as defensive programming and code reviews, are widely applied to limit and correct mistakes made by software developers. Dynamic taint analysis techniques [5], [6] aid in detecting code vulnerabilities. Likewise, machine learning techniques [7]–[9] have been applied to detect cyber-attacks and identify vulnerabilities.