Code reuse attack (CRA) is a powerful attack that reuses existing codes to hijack the program control flow. Control flow integrity (CFI) is one of the most popular mechanisms to prevent against CRAs. However, current CFI techniques are difficult to be deployed in real applications due to suffering several issues such as modifying binaries or compiler, extending instruction set architectures (ISA) and incurring unacceptable runtime overhead. To address these issues, we propose the first deep learning-based CFI technique, named DeepCheck, where the control flow graph (CFG) is split into chains for deep neural network (DNN) training. Then the integrity features of CFG can be learned by DNN to detect abnormal control flows. DeepCheck does not interrupt the application and hence incurs zero runtime overhead. Experimental results on Adobe Flash Player, Nginx, Proftpd and Firefox show that the average detection accuracy of DeepCheck is as high as 98.9%. In addition, 64 ROP exploits created by ROPGadget and Ropper are used to further test the effectiveness, which shows that the detection success rate reaches 100%.
翻译:代码再利用攻击是一种强大的攻击,它重新使用现有的代码来控制程序控制流程。控制流程完整性是防止计算机控制流程的最受欢迎的机制之一。然而,目前的计算机控制视频技术很难在实际应用中应用,因为需要经历若干问题,如修改二进制或编译者、扩展指令设置架构(ISA)和引起不可接受的运行时间接费用。为了解决这些问题,我们建议采用第一种深层次的基于学习的CFI技术,名为DeepCheck,其中控制流程图(CFG)被分割成深神经网络培训的链条。然后,DNN可以学习CFG的完整性特征来检测异常的控制流程。深检查不会中断应用,因此造成零运行时的间接损失。 Adobe Flad Player、Nginx、Proftpd和Firefox的实验结果表明,DeepClecker的平均探测精确度高达98.9%。此外,由ROPGadget和Ropper所创造的64 ROP利用的功能被用于进一步测试有效性,这表明检测成功率达到100%。