Cell/B.E.のSPE上で動作する安全なOS監視 システム

SPE Observer: Cell/B.E.のSPEを
用いたOS監視システム
九州工業大学
永田卓也 光来健一
従来のセキュリティ対策
• コンピュータをネットワークに接続すると、外
部からの攻撃に晒される
攻撃者
– ウィルスに感染
– 侵入によるデータ流出
• 通常、セキュリティ対策ソフトを用い
攻撃に備えている
– ウィルススキャンソフト
• OSに対する攻撃も増えてきた
– カーネルルートキット
ネットワーク
OSが改ざんされると・・・
• セキュリティ対策ソフトが正常に動かなくなる
– セキュリティ対策ソフトもOSの機能を使用
• 監視対象の「ファイルを開く」
• パターンファイルと比較
• 診断結果を「ログに出力する」
– 改ざんされた場合
• パターンファイルが「すり替えられる」
• 診断結果が「ログから消される」
セキュリティ
対策ソフト
OS
ハードウェア
従来のOSの改ざん検知
• OSの監視を安全に行うのは難しい
– OSの上で動く場合
OS監視
システム
• 監視システムも
改ざんされたOSの機能を使用
– OSの内部で動く場合
• OSの機能を使わずに監視可能
• 攻撃される恐れがある
– VMMの中で動く場合
• 安全に監視が可能
• VMMにバグがあるかもしれない
OS 監視
監視
VMM
提案:SPE Observer
• Cell/B.E.のSPE上でOS監視システムを動かす
– OSが動くPPEから隔離されたSPE上で動作
• 他のアプリケーションと並列動作が可能
– SPE Isolationモードを用いて安全に実行
• セキュリティプロキシにより実行を監視
Cell/B.E.
監視
OS
PPE
監視
OS監視
システム
SPE
SPE
・・・・・・・・
Security
Proxy
ネットワーク
Cell/B.E.のアーキテクチャ
• ヘテロジニアス型マルチコアプロセッサ
– PlayStation3やCell REGZA等に使用されている
– 制御系CPUのPPEと演算系CPUのSPE
– SPEはLocal Store(LS)と呼ばれるメモリを持つ
– SPEはDMAを用いてメインメモリにアクセス
Cell/B.E.
SPE
PPE
Main
Memory
SPE
SPE
Local
Store
EIB
SPE
SPE
SPU
SPE
MFC
OS監視システムの例
• OSカーネルの整合性をチェック
– SPEはDMA転送によりカーネルメモリを取得
– ハッシュ値を計算し、事前に取った値と比較
• コード領域、読み取り専用データ領域
– カーネルデータが改ざんされていないかチェック
• プロセスリスト、スケジューラのランキュー
メイン
メモリ
LS
SPE
OS
LS
監視
システム
SPE Isolationモードによる実行
• プログラムを安全に実行するCPUのモード
– 攻撃者はOS監視システムの改ざんや
解析を行えない
– 実行中
• 実行中はLSにアクセス不可
• 実行中の改ざん、解析ができない
– 実行後
• 中断・終了時はLSの中身を全削除
• 実行後の解析は不可能
SPU
LS
OS監視
システム
MFC
Secure Loaderによる安全なロード
• Secure Loaderが暗号化された
OS監視システムをSPEにロードする
– PPEが暗号化されたSecure LoaderをSPEにロード
• Secure Loaderはハードウェアから保護されている
– ディスク上のOS監視システムの保護ができる
PPE
OS監視
システム
Secure
Loader
SPE
SPU
OS監視
LS
システム
Secure
Loader
セキュリティプロキシ
• OS監視システムの動作状況をチェックする
– PPEはSPE上のOS監視システムを停止できる
– OS監視システムに定期的にハートビートを送る
• 暗号化されたメッセージを送りあう
• 正しい応答でなければ、ネットワークを遮断
• 攻撃者は攻撃を継続することができなくなる
Cell/B.E.
OS
PPE
監視
OS監視
システム
SPE
ハートビート
Security
Proxy
ネットワーク
OS監視のスケジューリング
• 必要な時だけOS監視システムを起動させる
– OS監視中はSPEを占有する
• SPE1つ分性能低下する
– 定期的に監視を行えばよい場合
監視していない期間はSPEを解放
– SPEを横取りできるようにSPEスケジューラを改造
起動しない
優先的に割
り付けられ
るよう指定
SPE
OS
監視
App
SPE
App
SPE
App
SPE
OS
監視
App
SPE
SPE
SPE
OS監視のスケジューリング
• 必要な特だけOS監視システムを起動させる
– OS監視中はSPEを占有する
選択が不公平
• SPE1つ分性能低下する
– 定期的に監視を行えばよい場合
監視していない期間はSPEを解放
– SPEを横取りできるようにSPEスケジューラを改造
OS
監視
SPE
App
SPE
App
SPE
App
SPE
SPE
SPE
実装
• PS3にSPE Observerを実装
– IBMのSecure SDKを使用
• Isolationモードのエミュレーションを利用
• OS監視システムがコンテキストスイッチされないように
SPE_NOSCHEDフラグをつけて実行
– SPEからカーネルメモリが読み出せるようにした
• MFCの状態レジスタを設定
• Segment Lookaside Buffer (SLB) にマッピングを登録
実験
• 実験の目的
– OSの改ざんを検知できるかの評価
– OS監視システムの実行がアプリケーションの
性能に及ぼす影響の評価
• 実験環境
– PlayStation3
• Fedora 9 (Linux 2.6.27)
– セキュリティプロキシ
• Intel Xeon 2.53GHz
メモリ 4GB
OS改ざんの検知
• 以下のOSカーネルのハッシュ値を計算し、
事前に計算した値と比較
– 改ざんしていないカーネル
– システムコールテーブルを改ざんしたカーネル
– システムコールを改ざんしたカーネル
• 実験結果
– 監視時間は24.1ミリ秒
– 改ざんを検知することができた
• 改ざんしていないカーネル以外はハッシュ値が異なる
監視する影響(CPU)
• OS監視の内容がアプリケーション性能に及ぼ
す影響を調べた
– CPUバウンドとDMAバウンドのOS監視を実行
• CPUバウンドのアプリケーションの場合
6
– OS監視の影響はない
5
App
SPE
App
SPE
・・・・・
App
SPE
OS
監視
SPE
性能
4
単体
3
DMAバウンド
2
CPUバウンド
1
0
1
2
3
使用SPE数
4
5
監視する影響(DMA)
• DMAバウンドのアプリケーションの場合
– DMAバウンドのOS監視と競合して性能が低下
• DMA転送をするSPEが増えるとメモリが混雑
• メモリの帯域を使いきってしまう
– CPUバウンドのOS監視の
影響はない
Main
Memory
SPE
App
・・・・・
SPE
App
SPE
OS
監視
SPE
2
1.5
性能
App
2.5
単体
DMAバウンド
1
CPUバウンド
0.5
EIB
0
1
2
3
使用SPE数(個)
4
5
SPEを占有する影響
• OS監視が6並列のアプリケーションに及ぼす
影響を調べた
1
0.9
– OS監視はカーネルの改ざん検知
– CPUバウンドの場合:5/6
– DMAバウンドの場合:ほぼ同じ
0.8
0.7
0.6
性能
• SPEが減った分DMAの
混雑が解消したため
0.5
0.4
0.3
監
視
SPE
SPE
SPE
SPE
SPE
SPE
0.2
0.1
0
CPUバウンド
DMAバウンド
同期を取るアプリケーションへの問題
• OS監視が同期をとる6並列アプリケーションに
及ぼす影響を調べた
– IBMの行列演算アプリケーションを使用
– SPEを占有すると大幅に性能低下
1
0.9
• SPEのコンテキストスイッチが
100msに1回しか起きないため
0.8
0.7
性能
0.6
0.5
0.4
待
機
SPE
待
機
SPE
待
機
SPE
0.3
監
視
SPE
0.2
0.1
0
監視なし
監視あり
スケジューリングによる改善
• OS監視をスケジューリングした時のアプリ
ケーション性能の変化を測定
– OS監視の起動間隔を少しあけるだけで大幅に
1
性能が改善
– それ以降はSPEを解放
した分だけ改善
0.8
性能
• 同期の待ち時間が
急激に減る
• 200msで5/6の性能
0.9
0.7
0.6
0.5
0.4
OS監視起動間隔(msec)
関連研究
• ハードウェアを用いた安全なコード実行
– Flicker[McCune et al. ‘08]
• Intel TXTなどを用いて安全なメモリ領域で
OS監視システムを動作
• システム全体を停止させる必要があり、
常時動作はできない
– HyperCheck [Wang et al.’10]
• SMM上でOSの情報を取得し、外部マシンに送って
OSが改ざんされていないか調べる
まとめ
• 安全なOS監視のためのSPE Observerを提案
– SPE IsolationモードによりOS監視システムの
完全性と機密性を保証
• セキュリティプロキシにより動作状況を確認
– OS監視がSPEを占有すると
アプリケーション性能が低下
• OS監視のスケジューリングにより、
同期をとるアプリケーション性能が大幅に改善
今後の課題
• カーネルデータの改ざんをチェックする
OS監視システムの作成
• OS監視システムの最適な起動間隔を決定す
る手法の開発
• SPEの実行状態を考慮したスケジューラの開
発
同期を取るアプリケーション
停止
停止
停止
停止
停止
6
1
2
3
4
5
OS
6
監視
6
1
同期スケジューリング短間隔
1.2
1
性能
0.8
0.6
0.4
0.2
0
0
10
20
30
40
50
60
70
80
90
100
200
OS監視起動間隔(msec)
300
400
500
600
700
800
900
1000
DMAバウンドのアプリケーション
• コアが増えれば読み出すメモリが増えていく
– 並列に読み出すから時間変化は少ないはず
12
11
10
実行時間(秒)
9
8
DMA単体
7
DMA*DMA
6
5
4
3
1
2
3
4
使用SPE数
5
6
スケジューリングによる改善
1.05
1
性能
0.95
0.9
CPUバウンド
DMAバウンド
0.85
0.8
0.75
0
10
20
30
40
50
60
OS監視起動間隔(msec)
70
80
90
100
ハートビート
• PPE上のリレープロセスがハートビートを中継
– SPEと直接通信するにはTCP/IPの実装が必要
– セキュリティプロキシが暗号メッセージを送る
• OS監視システムは暗号化された応答メッセージを返す
– 攻撃者は正しい応答を返すことができない
• 鍵は監視システムとプロキシだけが共有
ネットワーク
リレー
プロセス
Security Proxy
TCP/IP
暗号
Cell/B.E.
OS監視
システム
Mailbox
応答
応答
PPE
SPE
スケジューリングの流れ
• プロキシからの起動メッセージに応じてOS監視
システムをロード
– OS監視の実行中、他のコンテキストは
そのSPEを使用できなくする
– SPEに空きがない場合は
優先度の低いスレッドからSPEを奪う
• 終了メッセージを受け取るとプロキシは
指定時間待機する
– その間他のアプリケーションに
SPEを割り当て可能
Security
Proxy
Cell搭載
マシン
起動
要求
開始
終了
通知