SFOP(Segmentation Fault Oriented Programming)是一種新的程式碼重用攻擊,透過連續觸發 segmentation fault 並利用 Linux 的 SIGSEGV 訊號處理流程來繞過 Intel CET。 與傳統 ROP 不同,SFOP 透過多次程式崩潰與訊號處理器執行形成控制流程鏈,使攻擊者能逐步操控程式行為。

Create a landscape editorial hero image for this Studio Global article: What is the newly disclosed Segmentation Fault Oriented Programming (SFOP) attack presented by CISPA researchers at the IEEE Symposium on Se. Article summary: SFOP, or Segmentation Fault Oriented Programming, is a newly disclosed serial code-reuse attack by CISPA researchers that abuses Linux SIGSEGV signal handling to bypass Intel CET on Linux by deliberately triggering segme. Topic tags: general, education, general web, documentation. Reference image context from search candidates: Reference image 1: visual subject "IEEE Symposium on Security and Privacy IEEE Symposium on Security and Privacy. Home IEEE Symposium on Security and Privacy: Academic Security Research That Matters. # IEEE Symposiu" source context "IEEE Symposium on Security and Privacy: Academic Security Research That Matters | netguardia.com" Referenc
隨著現代 CPU 不斷加入硬體級防護機制,像是 Intel 的 Control‑Flow Enforcement Technology(CET),許多傳統的記憶體破壞攻擊(memory‑corruption attacks)理論上應該變得更難實現。
然而最新研究顯示,即使有硬體保護,攻擊者仍可能透過作業系統的正常行為找到新的攻擊路徑。
來自德國 CISPA Helmholtz Center for Information Security 的研究團隊提出一種名為 Segmentation Fault Oriented Programming(SFOP) 的技術。這種方法可以利用 Linux 的訊號處理機制,在啟用 Intel CET 的情況下仍然完成程式碼重用攻擊。相關研究在 2026 年 IEEE Security and Privacy 相關研究討論中被提及。
SFOP 是一種 序列式(serial)的 code‑reuse attack。它的核心概念非常反直覺:
攻擊者故意讓程式 不斷發生 segmentation fault(記憶體存取錯誤),然後利用每次錯誤觸發的訊號處理流程,逐步操控程式的執行路徑。
典型攻擊流程如下:
當這個流程不斷重複時,每一次崩潰都成為攻擊鏈的一個節點。攻擊者可以利用程式本身或其函式庫中的既有程式碼,逐步組合出想要的行為。
這與傳統的 Return‑Oriented Programming(ROP) 有明顯差異:
換句話說,SFOP 把 程式崩潰本身變成一種可重用的控制流程工具。
Intel 的 Control‑Flow Enforcement Technology(CET) 是為了防止程式碼重用攻擊而設計的硬體防護機制。
這項技術自 Intel 第 10、11 代 Core 處理器開始逐步導入,並已整合到較新的 Windows 與 Linux 系統中。
CET 主要包含兩類保護:
其目標是阻止攻擊者把程式執行流程跳轉到不預期的指令位置。
但 CET 的保護範圍主要集中在 程式正常執行路徑中的控制流程轉移。
而 SFOP 則繞過這個假設。
SFOP 的關鍵洞察是:
訊號傳遞(signal delivery)本身就是作業系統允許的合法控制流程轉移。
攻擊流程大致如下:
接著同樣流程再次發生。
每一次 signal handler 的執行,都成為攻擊鏈的一個「節點」。由於這種轉移是由作業系統合法觸發,而不是非法的 indirect jump 或 return,因此可以避開 CET 對控制流程的檢查。
透過多次錯誤與 handler 的連續觸發,攻擊者就能逐步組裝出複雜的行為,最終達到 任意程式碼執行(arbitrary code execution)。
在 Linux 中,程式可以註冊 SIGSEGV handler 來處理 segmentation fault。
這通常用於:
SFOP 正是利用了這個設計:
因此,signal handling 本身就被轉化為一種可重用的控制流程原語(control‑flow primitive)。
研究摘要指出,一種防禦方向是修改 Linux 的訊號處理行為,以限制攻擊者利用重複 segmentation fault 作為控制流程機制的能力。
公開報告提到存在核心層級的修補方向,但目前公開資訊仍未完整揭露所有實作細節。
另一個研究方向是 PLaTypus 安全強化機制。
研究人員發現,即使 CET 啟用,攻擊者仍可能透過不同共享函式庫之間的跳轉來建立攻擊鏈。
PLaTypus 的做法是:
這樣可以大幅減少攻擊者可利用的 code‑reuse 目標。
SFOP 的出現揭示了一個重要現實:
單靠 CPU 硬體防護並不足以完全阻止控制流程攻擊。
如果作業系統的合法機制(例如訊號處理)仍然能被濫用,攻擊者就可能在防護之間找到縫隙。
對資安工程師而言,這意味著防禦策略必須跨越整個技術堆疊,包括:
隨著 CET 與類似技術逐漸成為標準,像 SFOP 這類研究也為下一代防護機制提供了重要線索。
Studio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
SFOP(Segmentation Fault Oriented Programming)是一種新的程式碼重用攻擊,透過連續觸發 segmentation fault 並利用 Linux 的 SIGSEGV 訊號處理流程來繞過 Intel CET。
SFOP(Segmentation Fault Oriented Programming)是一種新的程式碼重用攻擊,透過連續觸發 segmentation fault 並利用 Linux 的 SIGSEGV 訊號處理流程來繞過 Intel CET。 與傳統 ROP 不同,SFOP 透過多次程式崩潰與訊號處理器執行形成控制流程鏈,使攻擊者能逐步操控程式行為。 [3][5]
研究人員提出多種防禦方向,包括強化 Linux 核心的訊號處理機制,以及 PLaTypus 強化層,可大幅減少跨函式庫的控制流程跳轉目標。 [39][40]