Discovering vulnerabilities in applications of real-world complexity is a daunting task: a vulnerability may affect a single line of code, and yet it compromises the security of the entire application. Even worse, vulnerabilities may manifest only in exceptional circumstances that do not occur in the normal operation of the application. It is widely recognized that state-of-the-art penetration testing tools play a crucial role, and are routinely used, to dig up vulnerabilities. Yet penetration testing is still primarily a human-driven activity, and its effectiveness still depends on the skills and ingenuity of the security analyst driving the tool. In this paper, we propose a technique for the automatic discovery of vulnerabilities in event-based systems, such as web and mobile applications. Our approach is based on a collaborative, co-evolutionary and contract-driven search strategy that iteratively (i) executes a pool of test cases, (ii) identifies the most promising ones, and (iii) generates new test cases from them. The approach makes a synergistic combination of evolutionary algorithms where several "species" contribute to solving the problem: one species, the test species, evolves to find the target test case, i.e., the set of instruction whose execution lead to the vulnerable statement, whereas the other species, called contract species, evolve to select the parameters for the procedure calls needed to trigger the vulnerability. To assess the effectiveness of our approach, we implemented a working prototype and ran it against both a case study and a benchmark web application. The experimental results confirm that our tool automatically discovers and executes a number of injection flaw attacks that are out of reach for state-of-the-art web scanners.
翻译:在应用现实世界复杂度时发现脆弱性是一项艰巨的任务:脆弱性可能影响到单行代码,但会损害整个应用的安全性。更糟糕的是,脆弱性可能只在应用的正常操作中不会发生的特殊情况下出现。人们普遍认识到,最先进的渗透测试工具发挥着关键作用,并经常用来挖掘脆弱性。但渗透测试仍然主要是由人驱动的活动,其有效性仍然取决于驱动工具的安全分析师的技能和智慧。在本文件中,我们提出了在基于事件的系统中自动发现脆弱性的技术,例如网络和移动应用。我们的方法基于协作、共同进化和合同驱动的搜索战略,这种战略(一) 执行一组测试案例,(二) 确定最有希望的,以及(三) 从中产生新的测试案例。这种方法将进化算法的协同组合,其中几个“物种”方法有助于解决问题:一种物种,测试物种,在基于事件系统的系统中, 逐步地发现目标测试的测试案例,(一) 共同进进化和由合同驱动的搜索策略, 一种我们被执行的实验性测试案例, 以及一个我们被执行的实验性标定的路径, 一个我们被应用的路径, 一个我们被应用的精确的路径, 一个我们被设定的路径, 一个我们被应用的路径, 一个被应用的路径的路径, 一个我们被应用的路径, 一个被应用的路径, 一个被应用的路径, 一个被应用的路径, 一个我们被测试的路径, 一个被应用的路径的路径的路径的路径的路径的路径的路径。