SFOP(Segmentation Fault Oriented Programming)は、Linuxでセグメンテーションフォルトを連続的に発生させることでIntel CETを回避する新しいコード再利用攻撃として研究者により報告された。[3][5] 従来のROPとは異なり、SFOPはSIGSEGVのシグナルハンドラ呼び出しを攻撃の“ステップ”として利用し、クラッシュと回復を繰り返しながら任意の挙動を構築する。[3][5] 対策としてLinuxカーネルのシグナル処理の強化や、ライブラリ間の制御フロー遷移を制限するPLaTypusというハードニング層が提案されている。[39][40]

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)**です。CETはコード再利用攻撃(code‑reuse attack)を難しくすることを目的とした仕組みです。
しかし最近の研究により、OSの挙動を巧妙に利用することで、ハードウェア保護さえ回避できる可能性が示されました。
ドイツのCISPA Helmholtz Center for Information Securityの研究者らは、**Segmentation Fault Oriented Programming(SFOP)**と呼ばれる新しい攻撃手法を発表しました。この研究は2026年のIEEE Symposium on Security and Privacyに関連して報告されています。
SFOPは、セグメンテーションフォルトを意図的に繰り返し発生させることで進行する「シリアル型」のコード再利用攻撃です。
基本的な流れは次のようになります。
このサイクルを何度も繰り返すことで、クラッシュそのものを“制御フローのステップ”として利用できるようになります。
従来の攻撃(Return‑Oriented Programmingなど)は、関数のリターンアドレスを書き換えて既存コードをつなぎ合わせます。
一方SFOPでは、連続するフォルト処理を利用して実行の流れを段階的に進めるという点が大きく異なります。
Intel CETは、CPUレベルで制御フローの整合性を守るための仕組みです。
主に以下のような攻撃を防ぐ目的があります。
CETは次のような仕組みで保護を行います。
これにより、プログラムの想定外の命令へ飛ぶことを防ぐ設計になっています。
しかしCETが想定しているのは、プログラム内部の不正な制御フロー遷移です。
SFOPはそこを回避し、OSが正当に行うシグナル処理を利用するという別ルートを使います。
SFOPの核心は、シグナル配送そのものが合法的な制御フロー遷移であるという点です。
攻撃の大まかな流れは以下の通りです。
これにより
という連鎖が作られます。
つまり各シグナルハンドラが攻撃チェーンの1ステップになるわけです。
この遷移はOSが正当に行う処理のため、CETが検査する「不正な分岐」には該当しない可能性があると研究者は指摘しています。
その結果、攻撃者は既存コードを組み合わせて最終的に任意コード実行に至る可能性があります。
Linuxでは、プログラムがクラッシュした際にSIGSEGVハンドラを登録しておくことで、次のような処理を行えます。
SFOPはこの仕組みを逆手に取り、
というループを作ります。
その結果、クラッシュ処理自体が攻撃の制御フロープリミティブ(再利用可能な動作単位)として機能するようになります。
研究では、この攻撃に対抗するためにいくつかの対策が議論されています。
一つの方向性は、Linuxカーネル側でシグナル処理の挙動を強化することです。
公開されている概要では、セグメンテーションフォルトの連続利用やシグナルハンドラの悪用を難しくするカーネルレベルの修正が提案されています。ただし現時点の公開情報では、具体的なパッチ詳細は限定的です。
もう一つの提案が、PLaTypusという研究段階の防御レイヤーです。
研究者は、CETが有効でも攻撃者が異なる共有ライブラリ間を自由にジャンプできることを問題として指摘しました。
PLaTypusは次のような対策を行います。
これにより、攻撃で利用できるコード断片(ガジェット)の数を大幅に減らすことができます。
SFOPは、現代のセキュリティ設計に重要な教訓を示しています。
それは、
**「ハードウェア防御だけでは不十分で、OSの挙動も含めたシステム全体を守る必要がある」**という点です。
CETのような高度な防御があっても、攻撃者は
といった別のレイヤーを足がかりにします。
こうした研究は、CPU・OS・アプリケーションを含むスタック全体の防御設計を見直すきっかけになると考えられています。
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)は、Linuxでセグメンテーションフォルトを連続的に発生させることでIntel CETを回避する新しいコード再利用攻撃として研究者により報告された。[3][5]
SFOP(Segmentation Fault Oriented Programming)は、Linuxでセグメンテーションフォルトを連続的に発生させることでIntel CETを回避する新しいコード再利用攻撃として研究者により報告された。[3][5] 従来のROPとは異なり、SFOPはSIGSEGVのシグナルハンドラ呼び出しを攻撃の“ステップ”として利用し、クラッシュと回復を繰り返しながら任意の挙動を構築する。[3][5]
対策としてLinuxカーネルのシグナル処理の強化や、ライブラリ間の制御フロー遷移を制限するPLaTypusというハードニング層が提案されている。[39][40]