分段错误导向编程:SFOP代码重用攻击绕过Linux上的Intel CET

richlovec 1500_400 (1)
 

一种被称为“分段错误导向编程(Segmentation Fault Oriented Programming,SFOP)”的全新代码重用攻击技术,暴露了Linux信号处理机制与Intel CET结合使用时的安全弱点。通过精心制造一连串分段错误(segmentation fault),SFOP可以在不依赖目标程序特定特性的前提下,绕过任何在Linux系统上运行程序中的Intel CET防护。

SFOP的攻击流程大致如下:攻击者首先迫使目标程序访问受限内存区域,或执行无效指令,从而触发分段错误并导致程序崩溃。每当程序因这类违规行为收到内核发送的 SIGSEGV 信号时,攻击者就利用机会注册或更换信号处理程序,使程序在处理信号的过程中再次崩溃,并进入下一轮信号处理。整个攻击过程依赖于研究人员发现的 12 个此前未知、影响Linux信号处理的内核漏洞。

这项研究由CISPA亥姆霍兹信息安全中心的 Marcos Bajo、Apostolos Chatzianagnostou、Christian Rossow,以及印度理工学院坎普尔分校的 Ritvik Goyal 共同完成。论文第一作者 Marcos Bajo 表示,SFOP的利用门槛相对较低,因为它不需要目标程序具备特定结构或特性,理论上适用于所有在Linux上运行的程序。

突破Intel CET的代码重用攻击

SFOP的核心成果在于突破了Intel CET(Control-flow Enforcement Technology),这是一种面向现代处理器的高级控制流完整性(CFI)方案。CFI机制的目标是确保程序的执行路径不被恶意篡改,从而抵御传统的代码重用攻击。

Bajo指出,如今广泛部署的CFI机制在很大程度上提升了系统对代码重用攻击的防御能力,而SFOP试图重新获得在CFI方案出现之前攻击者可能拥有的能力。之所以重点针对Intel CET,是因为自2020年以来,它已经集成进Intel处理器,并在Windows和Linux系统中默认启用,几乎所有在这些平台上运行的程序都在其保护之下。

利用连续分段错误串联代码片段

在Linux系统中,当程序尝试访问不应访问的内存区域,或在启用Intel CET的情况下执行无效指令时,内核会检测到异常并阻止操作,随后向程序发送 SIGSEGV 信号,指明发生了分段错误。正是在这一时刻,SFOP得以介入。

在SFOP攻击中,攻击者利用SIGSEGV信号处理机制,将特定代码片段注册为信号处理程序,控制程序对信号的响应过程。Bajo解释称,SFOP本质上是由一系列信号处理程序构成的链条:

  • 程序因非法内存访问或无效指令触发分段错误;
  • 内核发送 SIGSEGV 信号;
  • 攻击者预先注册的信号处理程序被执行,运行一小段攻击代码;
  • 信号处理程序再次导致程序崩溃,触发下一次 SIGSEGV;
  • 攻击者再注册或切换到下一个信号处理程序,执行新的代码片段;
  • 如此循环,将多个小片段串联成完整的攻击逻辑。

正因为攻击过程依赖不断制造分段错误并借此“跳转”到不同的信号处理程序,这种技术被命名为“分段错误导向编程”。通过在每一步插入不同的代码片段,攻击者可以逐步实现多种功能,例如打开文件、读取或发送数据,最终达到任意代码执行的效果。

异步信号成为CFI防御薄弱点

在Linux中,信号用于向正在运行的程序通知各种异步事件,例如终止、暂停或恢复进程等。Bajo指出,这类异步机制本身就给CFI防御带来挑战:

一方面,CFI方案通常假设程序执行流程相对可预测和可控,而异步信号会在任意时间点打断当前执行路径,转入信号处理程序;另一方面,许多防护设计主要聚焦在用户态程序或内核本身,但凡是位于程序与内核之间、负责交互的机制,都可能成为被忽视的薄弱环节。

研究团队在Linux内核中共发现了12个此前未公开的、与信号处理相关的漏洞。这些漏洞单独看可能影响有限,但综合利用时,为SFOP提供了完整的攻击链,使其能够在Intel CET存在的前提下依然实现可靠的代码重用攻击。

修复路径:从Linux内核入手

Bajo及其合作者认为,SFOP在代码重用攻击谱系中属于“低垂果实”,原因在于它几乎对所有Linux程序都适用。信号机制是Linux的基础组成部分,默认存在且难以彻底禁用,开发者也不需要为其做特别配置,任何普通程序都会自动与信号机制发生交互。

因此,要有效防御SFOP,关键在于修补Linux内核中与信号处理相关的漏洞,而不是针对单个应用程序做加固。研究团队已经与Linux内核安全团队合作,设计并提交了多项补丁,用于缓解或阻断SFOP攻击链。

关于SFOP的完整研究成果和技术细节,将在2026年5月20日于旧金山举行的IEEE安全与隐私研讨会(SP 2026)上正式发布。届时,研究人员将进一步介绍这些内核漏洞的技术成因、利用方式以及对应的修补方案。


分享:


发表评论

登录后才可评论。 去登录