Controlled-Channel Attacks
原論文
S&P'15
Yuanzhong Xu, The University of Texas at Austin
page fault
プログラムが物理メモリがマップされていない仮想アドレス空間上のページにアクセスしたときにハードウェアが発生する割り込み
page tables/page fault handlerはOSが管理
MMUがメモリ変換の際に、unmapped/invalid/wrong access rightsなどにより例外が発生
page table entries
mapping virtual memory addresses to physical memory addresses
access rights(read, write, execute)
page fault handlerはOSが実行
pagesは暗号化されているのでOSができるのは本来DoS attackのみのはずだが秘匿情報に基づく条件分岐を避けるなどの実装が意識されていないコードは後述のようなアクセスパータンの推測余地がつく
通常、enclave実行でpage faultが発生する頻度は低い
enclaveのapplication codeは公開されていると仮定
秘匿情報に基づく条件分岐において特定の関数などのアドレスがpage faultによりOSに知られると、その秘匿情報が分かる
https://gyazo.com/c2e07491f84ff49501467fa46352a95c
SGXではこれに対処するため、page境界に実際のpafe fault addressesを割り当てることで隠している
一方、異なる関数、変数がアクセスされるパターンから推測できる余地
1.page fault列を特定のアルゴリズムでcontrol transfersを探すために作成
control transfers: 特定の関数の呼び出し
https://gyazo.com/b23bf1bb2f7946097e94042f9a52f1c0
2, 3.encalveが実行されたら全てのpageからアクセス権限を外し、page faultを発生させる
全てのpageをトラッキングするのは高コストすぎるため、特定のアルゴリズムでサブセットをトラッキング
4.page faultログを解析し、control transfersを見つける
オフラインで実行可能
ASLR(address space layout randomiaztion)が適用されても推測余地
緩和
asplos'20
Pan Zhang, Huazhong Univ. of Sci. & Tech
, including page-fault-based attacks (a.k.a. controlled-channel attack) 45, 56, cache-based attacks 9, 19, 23, 42, 54, branch-prediction-based attack 30, and transient attacks 10, 14, 31, 41. Among these attacks, we argue that controlled-channel attacks are the most critical because most other finer-grained attacks 10, 14, 23, 30, 31, 41, 53, 54 (except Meltdown 31) are more costly. https://gyazo.com/5f5a11690e16927a7beee016214c82bb
side-channel系の1番の障害は解析時の他のアクセスパターンによるノイズ
ノイズを減らすためにenclaveの実行を止めるべくAEXを頻繁に行う必要 --> 粒度の小さい攻撃はコスト的に非現実的なので関数レベルの粒度の攻撃耐性をつける
controlled-channel attackの原因は2つでいずれかに対処すればOK
攻撃者がメモリアクセスパターンを知れること
アプリケーションのメモリアクセスパターンがインプット依存であること
攻撃者がわざとpafe faultをインジェクトしてpageアクセスパターンを得るためにユーザー空間でのpage faultを検出する方法はaccess-bit-based attackなどpage-faultを用いないcontrolled-channel attackに効果がない 脅威モデル
enclave以外のソフトウェアスタックは全てuntrusted
攻撃者はenclaveのソースコード、バイナリコードを把握
攻撃者はenclaveプログラムへ任意のインプットを与えられる
software-basedでvCache, sMMU, virtual main memoryのメモリサブシステム上でプログラムを実行
https://gyazo.com/5363c1d12660a05a9af4dae94c5794b9