SFIP:现代系统中粗粒度的系统调用流完整性保护
密码学与安全
2022-03-01 v1
摘要
现代应用程序不断增长的代码库导致了漏洞数量的稳步上升。控制流完整性(CFI)是一种颇有前景的缓解措施,正被越来越广泛地部署,并阻止了大量利用。CFI纯粹聚焦于单一安全域。即,用户空间与内核空间之间的转换不受CFI保护。此外,若用户空间CFI被绕过,系统与内核接口仍不受保护,攻击者可运行任意转换。本文中,我们引入系统调用流完整性保护(SFIP)的概念,以面向用户-内核转换的完整性补充CFI的概念。我们的概念验证实现依赖于编译期间的静态分析来自动提取可能的系统调用转换。应用程序可通过向内核提供提取信息以进行运行时强制来选用SFIP。该概念建立在三个全自动化支柱上:第一,系统调用状态机,依据系统调用有向图模型表示可能的转换。第二,系统调用来源映射,将系统调用映射到其可发生位置。第三,在修改版Linux内核中对系统调用流完整性的高效强制。在我们的评估中,我们表明SFIP可应用于大规模应用程序且 slowdown 极小。在微基准与宏基准中,其分别仅引入13.1%与1.8%的开销。在安全性方面,我们讨论并演示了其在阻止现实世界应用中的控制流劫持攻击上的有效性。最后,为凸显攻击面的缩减,我们对若干现实世界应用的状态机与系统调用来源映射进行了分析。平均而言,相较seccomp,SFIP将可能转换数量减少38.6%;在无任何保护时减少90.9%。
引用
@article{arxiv.2202.13716,
title = {SFIP: Coarse-Grained Syscall-Flow-Integrity Protection in Modern Systems},
author = {Claudio Canella and Sebastian Dorn and Daniel Gruss and Michael Schwarz},
journal= {arXiv preprint arXiv:2202.13716},
year = {2022}
}