10/27/2016

DrK (デランダマイジング・カーネルASLR)攻撃

Hacker Newsより。BTBを利用したASLR攻撃とは別のTSXを使った攻撃(DrK)。ここにまとめられている。

DrKはTLBをエクスプロイトして、i-cacheサイドチャネルをデコードすることによってカーネルアドレス空間レイアウトランダム化(KASLR)を破る攻撃である。サイドチャネルを確実にエクスプロイトするため、DrK攻撃はIntel TSX (Transactional Synchronization eXtension)を巧みに利用する。このセキュリティの抜け穴の根本的原因となるTSXの驚くべき挙動の一つは、従来はカーネルの介在が必要だったトランザクションがページフォールトあるいはアクセス違反のような致命的なエラーが原因で失敗した時であっても、下位のカーネルに通知することなくトランザクションを中止することである。DrKはこの性質をマッピング状態(例えばマップされているか、されていないか)や特権的なカーネルアドレス空間の実行状態(例えば実行可能か、そうでないか)を決定できるタイミングチャネルに変える。そのような挙動はハードウェアレベルで行われるので、DrKは仮想環境であっても全てのOSに広く適用でき、明白な証拠を残さず、実際に検知するのが難しい。従って、DrKは全ての主要OS (例えば、Windows、Linux、macOS)のKASLRを1秒足らずで完璧に近い精度で破ることができる。