Modern software deployment process produces software that is uniform and hence vulnerable to large-scale code-reuse attacks, such as Jump-Oriented Programming (JOP) attacks. Compiler-based diversification improves the resilience of software systems by automatically generating different assembly code versions of a given program. Existing techniques are efficient but do not have a precise control over the quality of the generated variants. This paper introduces Diversity by Construction (DivCon), a constraint-based approach to software diversification. Unlike previous approaches, DivCon allows users to control and adjust the conflicting goals of diversity and code quality. A key enabler is the use of Large Neighborhood Search (LNS) to generate highly diverse code efficiently. For larger problems, we propose a combination of LNS with a structural decomposition of the problem. To further improve the diversification efficiency of DivCon against JOP attacks, we propose an application-specific distance measure tailored to the characteristics of JOP attacks. We evaluate DivCon with 20 functions from a popular benchmark suite for embedded systems. These experiments show that the combination of LNS and our application-specific distance measure generates binary programs that are highly resilient against JOP attacks. Our results confirm that there is a trade-off between the quality of each assembly code version and the diversity of the entire pool of versions. In particular, the experiments show that DivCon generates near-optimal binary programs that share a small number of gadgets. For constraint programming researchers and practitioners, this paper demonstrates that LNS is a valuable technique for finding diverse solutions. For security researchers and software engineers, DivCon extends the scope of compiler-based diversification to performance-critical and resource-constrained applications.
翻译:现代软件部署流程生成的软件是统一的,因此容易受到大规模代码重复攻击,例如跳动导向程序(JOP)攻击。基于编译者的多样化通过自动生成一个特定程序的不同组装代码版本,提高了软件系统的复原力。现有的技术是高效的,但对生成的变异物的质量没有精确的控制。本文介绍了“建设”(DivCon)带来的多样化(DivCon),这是对软件多样化的一种制约性方法。与以往的做法不同,DivCon允许用户控制和调整多样化和代码质量等相互矛盾的目标。一个关键的促进因素是使用大邻里搜索(LNS)来扩展高度多样化的代码。对于更大的问题,我们建议将LNS组合起来,同时对生成的软件的组装代码进行结构分解。为了进一步提高DivCon对JOP攻击的多样化效率,我们建议针对JOP攻击的特性,采用一个专门的远程应用计量标准。我们用20个功能来评价DivCon,对于嵌入的系统来说,我们从一个通用的硬度基准程序套数。这些实验显示,LNS和我们的应用程序的全方位远程计算方法的生成了一种技术,用来在接近的硬盘中,对于JOP的硬值中, 并显示每个软件的硬质版本的计算方法的计算,一个对JOP的计算,一个特殊的计算过程的模型的模型的模型的模型的每个版本的模型的模型的模型的模型显示一个测试显示一个特殊的计算,一个特殊的计算方法的计算方法是用来显示一个能能能能能度计算方法,一个对JOP的模型的计算。