這與傳統的 Return‑Oriented Programming(ROP) 有明顯差異:
換句話說,SFOP 把 程式崩潰本身變成一種可重用的控制流程工具。
Intel 的 Control‑Flow Enforcement Technology(CET) 是為了防止程式碼重用攻擊而設計的硬體防護機制。
CET 主要包含兩類保護:
其目標是阻止攻擊者把程式執行流程跳轉到不預期的指令位置。
但 CET 的保護範圍主要集中在 程式正常執行路徑中的控制流程轉移。
而 SFOP 則繞過這個假設。
SFOP 的關鍵洞察是:
訊號傳遞(signal delivery)本身就是作業系統允許的合法控制流程轉移。
攻擊流程大致如下:
接著同樣流程再次發生。
每一次 signal handler 的執行,都成為攻擊鏈的一個「節點」。由於這種轉移是由作業系統合法觸發,而不是非法的 indirect jump 或 return,因此可以避開 CET 對控制流程的檢查。
在 Linux 中,程式可以註冊 SIGSEGV handler 來處理 segmentation fault。
這通常用於:
SFOP 正是利用了這個設計:
因此,signal handling 本身就被轉化為一種可重用的控制流程原語(control‑flow primitive)。
公開報告提到存在核心層級的修補方向,但目前公開資訊仍未完整揭露所有實作細節。
另一個研究方向是 PLaTypus 安全強化機制。
PLaTypus 的做法是:
SFOP 的出現揭示了一個重要現實:
單靠 CPU 硬體防護並不足以完全阻止控制流程攻擊。
如果作業系統的合法機制(例如訊號處理)仍然能被濫用,攻擊者就可能在防護之間找到縫隙。
對資安工程師而言,這意味著防禦策略必須跨越整個技術堆疊,包括:
隨著 CET 與類似技術逐漸成為標準,像 SFOP 這類研究也為下一代防護機制提供了重要線索。