论文标题
SFIP:现代系统中的粗粒syscall-foll-folw-ingertity保护
SFIP: Coarse-Grained Syscall-Flow-Integrity Protection in Modern Systems
论文作者
论文摘要
现代应用程序的不断增长的代码库导致漏洞数量稳步增加。控制流完整性(CFI)是一种有希望的缓解措施,越来越广泛地部署并防止了许多利用。 CFI纯粹专注于一个安全域。也就是说,用户空间和内核空间之间的过渡不受CFI的保护。此外,如果绕过用户空间CFI,系统和内核接口仍然没有保护,并且攻击者可以运行任意过渡。 在本文中,我们介绍了Syscall-Flow-integrity Protection(SFIP)的概念,该概念与CFI的概念相辅相成,并具有完整性的用户内核转换。我们的概念验证实现依赖于编译过程中的静态分析,以自动提取可能的SYSCALL过渡。应用程序可以通过将提取的信息提供给内核来选择运行时执行,从而选择进入SFIP。该概念建立在三个完全自动化的支柱上:首先,是Syscall状态机,代表根据Syscall Digraph模型进行的过渡。其次,一个Syscall-Origin映射,将SYSCALL映射到可能发生的位置。第三,在修改后的Linux内核中有效地执行SYSCALL-FLOW完整性。在我们的评估中,我们表明SFIP可以应用于速度最小的大规模应用程序。在微核标准中,它仅引入13.1%和1.8%的开销。在安全方面,我们讨论并演示了其在防止现实世界应用程序中的控制流式攻击方面的有效性。最后,为了强调攻击表面的降低,我们对几种现实世界应用的状态机和Syscall-Origin映射进行了分析。平均而言,与SECCOMP相比,SFIP将可能的过渡数量减少38.6%,当没有保护时,SFIP的数量和90.9%。
Growing code bases of modern applications have led to a steady increase in the number of vulnerabilities. Control-Flow Integrity (CFI) is one promising mitigation that is more and more widely deployed and prevents numerous exploits. CFI focuses purely on one security domain. That is, transitions between user space and kernel space are not protected by CFI. Furthermore, if user space CFI is bypassed, the system and kernel interfaces remain unprotected, and an attacker can run arbitrary transitions. In this paper, we introduce the concept of syscall-flow-integrity protection (SFIP) that complements the concept of CFI with integrity for user-kernel transitions. Our proof-of-concept implementation relies on static analysis during compilation to automatically extract possible syscall transitions. An application can opt-in to SFIP by providing the extracted information to the kernel for runtime enforcement. The concept is built on three fully-automated pillars: First, a syscall state machine, representing possible transitions according to a syscall digraph model. Second, a syscall-origin mapping, which maps syscalls to the locations at which they can occur. Third, an efficient enforcement of syscall-flow integrity in a modified Linux kernel. In our evaluation, we show that SFIP can be applied to large scale applications with minimal slowdowns. In a micro- and a macrobenchmark, it only introduces an overhead of 13.1% and 1.8%, respectively. In terms of security, we discuss and demonstrate its effectiveness in preventing control-flow-hijacking attacks in real-world applications. Finally, to highlight the reduction in attack surface, we perform an analysis of the state machines and syscall-origin mappings of several real-world applications. On average, SFIP decreases the number of possible transitions by 38.6% compared to seccomp and 90.9% when no protection is applied.