SGAxe
CacheOut
TAAを利用したキャッシュ攻撃の一種
CacheOutはキャッシュからデータを抽出し、TAAでそれを復元することでenclaveのメモリをダンプする。
LVI, PlunderVolt, Zombieload, RUDL, Foreshadowがパッチされた最新のCPU/SDKでテスト
enclave内のコード実行を必要とせずダンプ可能
constant-time coding対策など意味ない
Breaking the integrity of sealed data
sealingのための鍵をcacheoutで取得
SDK実装でsealing keyはすぐにメモリから消されるのでshort windowで取り出さないとダメ
sgxでunseal dataに対するintegrityはないため、復号し改ざんし再びsealすることで改ざんしたデータを復号させる
自作quoting enclaveのbuildと署名が必要
ZombieLoad: Cross-privilege-boundary data sampling
LVI: Hijacking transient execution through microarchitectural load value injection
CacheOut: Leaking data on Intel CPUs via cache evictions
脅威モデル
攻撃者はカーネルモジュールとring-0権限でコード実行が可能なOS
最新のマイクロコードでenclaveプログラムにはバグはない
ハードウェアがTSXをサポート(トランザクショナルメモリ)
最新のマイクロコードではSGX実行中はTSXトランザクションを強制的にアボート
sealing keyはメモリ上からすぐに消されるので極めて短いスパンに攻撃を成功させる必要がある
controlled-channel攻撃を利用
attestation process
root sealing key
乱数生成
root provisioning key
intelが個別cpuとの共有秘密鍵として保有
provisioning enclave
intel provisioning serviceにprovisoning serverの公開鍵で暗号化してcpu's provisioning IDやSVNなどを送信
intelに署名されらprovisoning enclaveのみアクセス可能
EPIDプロトコルによりintelが知らないprivate EPID signing keyを取得
EPID sining keyをsealingするためのsealing keyを生成
CPUのroot sealing key, SVN, MRSIGNERを利用
MRSIGNERはintelの公開鍵ハッシュ値
EPID keyをsealingし、ストレージに記録
quoting enclave
quoting enclaveもintelにより署名されているのでEPID keyをunseal可能
local attestation
quoting enclaveがquoting enclaveの正当性を証明するためにuser enclcveと。
user enclaveがereport命令で生成するreportはquoting enclaveのみアクセス可能な鍵により署名
reportにはuser enclaveのMRSIGNERとMRENCLAVE
remote attestation
quoting enclaveはereport命令による署名がされていることを検証後、epid keyをunsealし、reportを署名し、attestation quoteを生成(EPIDプロトコル)
user enclaveが署名されたquoteを受け取り、remote serverとやりとり
breaking sgx attestation
quoting enclaveをcacheoutで攻撃することでEPID sining keyをsealingするsealing keyを復元
provisioning enclveによりsealingされたprivate EPID keyをunseal
EGETKEY命令でMRSIGNER, SVN, Root Seal Keyからsealing key生成
intelのquoting encalveのソースコードを使って、reportの署名検証せずにEPIDkeyで全てのlocal atteestation reportに署名する悪意あるquoting enclaveを生成
不正なquoting enclaveはintelの署名がないので、epidをunsealするためのsealing keyを自分では生成できな
不正なuser enclave(reportに含むMRENCLAVEと異なるアプリケーションを持つenclave)で署名せずにreport生成し、malicious quoting enclaveで検証せず不正にunsealしたEPID Keyで署名しquoteを生成。