CET準拠のコールスタックスプーフィング:スレッドプールと列挙コールバックトランポリン経由(Rust PoC)
Intel CET が有効なハードウェアで、CET 準拠のコールスタックスプーフィングをエンドツーエンドで機能させるために不合理な時間を費やした後、これを書きました。
このテクニックは 3 つのプリミティブを組み合わせています。クリーンなスタックベースのためのスレッドプール実行、実際の署名済みミッドスタックフレームのための列挙コールバックトランポリン、および間接システムコールです。
実際の貢献は CET 準拠メカニズムです。アンワインドメタデータを触れることなく、RDSSPQ/INCSSPQ を介した直接シャドウスタックポインタの調整と組み合わせた jmp ベースのコンテキストスイッチです。BYOUD とは異なるアプローチです。
インラインアセンブリを使用して Rust で実装されました。/u/_MrTiz より投稿