クラウドにおけるIntel SGXを用いた VMの安全な監視機構

Slides:



Advertisements
Similar presentations
九州工業大学 塩田裕司 光来健一.  仮想マシンは必要なときだけ動かす使い方が一般 的 ◦ 一台の計算機上に複数の計算機を仮想的に作成できる ◦ デスクトップ  異なる OS を使用するため作成 ◦ サーバ  最大負荷に合わせた数の仮想マシンを作成  長期間使わない仮想マシンも存在する VM.
Advertisements

ファイルキャッシュを考慮したディスク監視のオフロード
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
クラウド上の仮想マシンの安全なリモート監視機構
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
Xenを用いたクラウドコンピュー ティングにおける情報漏洩の防止
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
KVMにおけるIDSオフロードのための仮想マシン監視機構
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
クラウドにおけるライブラリOSを用いた インスタンス構成の動的最適化
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
XenによるゲストOSの解析に 基づくパケットフィルタリング
大きな仮想マシンの 複数ホストへのマイグレーション
ファイルシステムキャッシュを 考慮したIDSオフロード
ネストした仮想化を用いた VMの安全な帯域外リモート管理
帯域外リモート管理の継続を 実現可能なVMマイグレーション手法
VMマイグレーションを可能にするIDSオフロード機構
クラウドの内部攻撃者に対する安全なリモートVM監視機構
アスペクト指向プログラミングを用いたIDSオフロード
サスペンドした仮想マシンの オフラインアップデート
型付きアセンブリ言語を用いた安全なカーネル拡張
踏み台攻撃だけを抑制できる VMMレベル・パケットフィルタ
KVMにおける仮想マシンの 内部監視機構の実装と性能評価
分散IDSの実行環境の分離 による安全性の向上
VMのメモリ暗号化によるクラウド管理者への情報漏洩の防止
VMのメモリ暗号化による クラウド管理者への情報漏洩の防止
VM専用仮想メモリとの連携による VMマイグレーションの高速化
IaaS型クラウドにおける インスタンス構成の動的最適化手法
暗号化された仮想シリアルコンソールを 用いたVMの安全な帯域外リモート管理
リモートホストの異常を検知するための GPUとの直接通信機構
シャドウデバイスを用いた 帯域外リモート管理を継続可能なVMマイグレーション
インターネットにおける真に プライベートなネットワークの構築
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
ネストしたVMを用いた 仮想化システムの高速なソフトウェア若化
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
仮想シリアルコンソールを用いた クラウドの安全なリモート管理
IaaS環境におけるVMのメモリ暗号化による情報漏洩の防止
クラウドにおけるVMリダイレクト攻撃を防ぐためのリモート管理機構
GPUDirect RDMAを用いた リモートホストの異常検知手法
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
クラウドにおけるVM内コンテナを用いた 低コストで迅速な自動障害復旧
Intel SGXを利用する 巨大なアプリケーションの マイグレーション機構
仮想マシンを用いた 既存IDSのオフロード
Intel SGXを利用するコンテナの マイグレーション機構
Intel SGXを用いた仮想マシンの 安全な監視機構
軽量な仮想マシンを用いたIoT機器の安全な監視
複数ホストにまたがって動作する仮想マシンの障害対策
信頼できないクラウドにおける仮想化システムの監視機構
VM内コンテナを用いた サービス単位の オートスケール機構
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
仮想環境を用いた 侵入検知システムの安全な構成法
Cell/B.E.のSPE Isolationモードを用いた監視システム
仮想マシンの監視を継続可能なマイグレーション機構
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
ゼロコピー・マイグレーションを 用いた軽量なソフトウェア若化手法
仮想化システムの 軽量なソフトウェア若化のための ゼロコピー・マイグレーション
強制パススルー機構を用いた VMの安全な帯域外リモート管理
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
複数ホストにまたがるVMの メモリ使用状況に着目した高速化
Virtual Machine Introspectionを可能にするVMCryptの拡張 田所秀和 光来健一 (九州工業大学)
強制パススルー機構を用いた VMの安全な帯域外リモート管理
管理VMへの キーボード入力情報漏洩の防止
Presentation transcript:

クラウドにおけるIntel SGXを用いた VMの安全な監視機構 九州工業大学 中野 智晴        光来 健一 

侵入検知システム(IDS) IaaS型クラウドが普及している IDSを用いてVMを監視する必要がある 仮想マシン(VM)を提供する VM内でIDSを動かすと侵入時に無効化される恐れ VM インターネット IDS 侵入 ユーザ 攻撃 攻撃者 クラウド

IDSオフロード 監視対象VMの外でIDSを実行する手法 監視対象VMに侵入されてもIDSは無効化されない IDSは監視対象VMのメモリを解析し、OSデータを取得し て監視 例:プロセス一覧を取得し、不正なプログラムの実行を 検知 監視対象VMに侵入されてもIDSは無効化されない 監視対象VM 監視 IDS 侵入 攻撃者

オフロードしたIDSへの攻撃 まだIDSが攻撃を受ける可能性がある IDSが取得したVM内の機密情報を盗まれる恐れ 外部の攻撃者が侵入して攻撃する可能性 IDSが取得したVM内の機密情報を盗まれる恐れ 攻撃 監視対象VM 攻撃者 監視 IDS 攻撃 悪意のある 管理者

従来手法(1/2) 信頼できるハイパーバイザを利用 ハイパーバイザ内でIDSを実行 [Oyama et al. ’12] ユーザ専用VM内でIDSを実行 [Butt et al. ’12] そのVMに脆弱性がある可能性 リモートホストでIDSを実行 [Kourai et al. '16] クラウド外にホストが必要 ユーザ専用VM 監視対象VM 監視 監視 IDS IDS IDS 監視 ハイパーバイザ リモートホスト

従来手法(2/2) 仮想化システムの外側でIDSを安全に実行 専用ハードウェアを利用 [Petroni et al.'04] 高コスト 汎用CPUの機能を利用 [Rutkowska et al.'08] IDS実行中は仮想化システムが停止 ネストした仮想化を利用 [Miyama et al.'17] 仮想化システムの性能が低下 監視対象VM IDS 監視 ハイパーバイザ クラウドハイパーバイザ

提案:SGmonitor Intel SGXを用いてクラウド内でIDSを安全に実行 エンクレイヴと呼ばれる保護領域でIDSを実行 ハイパーバイザ経由でVMを監視 SGXアプリケーション 監視対象VM エンクレイヴ ハートビート IDS SGmonitor ライブラリ リモートホスト ハイパーバイザ データ取得 監視対象ホスト

脅威モデル ハードウェアとハイパーバイザを信頼 IDSを動作させる実行環境は信頼しない TPMを用いたリモートアテステーションによる正常起動 の確認 IDSを動作させる実行環境は信頼しない SGXアプリケーション内のSGmonitorライブラリ SGXアプリケーションが動作するOS 監視対象VM IDS SGmonitor ライブラリ ハイパーバイザ 確認 ハードウェア TPM 第三者機関

SGXによるIDSの安全な実行 クラウド内でIDSを安全に実行可能 実行開始時にリモートアテステーション エンクレイヴのメモリの整合性を保証 エンクレイヴのメモリを暗号化 IDSが取得したVM内の情報の漏洩を防ぐ SGXアプリケーション エンクレイヴ 確認 IDS 第三者機関

SGmonitorの特徴 高機能なIDSを比較的容易に開発可能 仮想化システムの性能に影響を与えない カーネルモジュールのように開発できる 仮想化システムの性能に影響を与えない 仮想化システム内のアプリケーションとして実行 仮想化システムは従来通りに実行 仮想化システム SGXアプリケーション 監視対象VM IDS SGmonitor ライブラリ

実装 SGXをサポートしたXen (Xen-SGX)を用いて実装 VM起動時にEPCの一部を割り当てるように拡張 IDS専用VM内でSGXアプリケーションを実行 Dom0にはEPCを割り当てることができないため IDS VM IDS EPC EPC ハイパーバイザ

VM内のOSデータの取得 ハイパーバイザ経由でVM内のOSデータを取得 OCALLを用いてSGmonitorライブラリを呼び出す エンクレイヴ 監視対象VM IDS  OCALL SGmonitor ライブラリ 仮想アドレス ハイパーコール データ取得 変換 仮想アドレス 物理アドレス OSデータ ハイパーバイザ

OSデータの暗号化 VM内の情報が漏洩しないように取得したOSデータ を暗号化 ハイパーバイザが暗号化し、エンクレイヴ内で復号 それぞれにwolfSSLのAES関数を移植 取得したOSデータはエンクレイヴ内でキャッシュ データ取得・暗号化のオーバヘッドを減らす エンクレイヴ SGmonitor ライブラリ IDS 復号 OSデータ OSデータ 暗号化 OSデータ OSデータ ハイパーバイザ

暗号鍵の安全な共有 エンクレイヴはハイパーバイザとOSデータを暗号 化するための暗号鍵を共有 生成した暗号鍵をハイパーバイザの公開鍵で暗号化 ハイパーバイザだけが秘密鍵で復号可能 信頼できる第三者機関による電子署名も検証 正しいIDSのみが暗号鍵を登録可能 エンクレイヴ IDS 暗号化 OCALL SGmonitor ライブラリ 公開鍵 第三者機関 ハイパーコール 復号 ハイパーバイザ 秘密鍵

SGmonitorにおけるIDSの開発 IDSをカーネルモジュールのように開発 Linuxカーネルのヘッダファイルを使用 コード変換により透過的にOSデータを取得 IDSの開発者はオフロードを意識する必要はない void plist(void) { struct task_struct *p; p = init_task; do { p = list_entry(p->tasks.next, struct task_struct, tasks); } while (p != init_task); }

透過的なOSデータの取得 LLView [尾崎ら’18]をSGXに対応させ、それを用い てIDSをコンパイル LLVMでコンパイルする際に生成された中間表現を変換 load命令の前でOSデータを取得する関数を呼び出す %1 = load i64, i64* %jiffies %2 = udiv i64 %1, 250 %1 = bitcast i64* %jiffies to i8* %2 = call i8* @g_map(i8* %1) %3 = bitcast i8* %2 to i64* %4 = load i64, i64* %3 %5 = udiv i64 %4, 250

ハートビートによる動作確認 チャレンジ・レスポンスを利用してIDSが正常に動 作していることを確認 リモートホストからチャレンジ(乱数)を送信 ECALLを用いてエンクレイヴを呼び出す エンクレイヴ内でレスポンスを計算して返送 SGXアプリケーション 暗号鍵 エンクレイヴ チャレンジ 送信 ECALL チャレンジ + 暗号鍵 SGmonitor ライブラリ ハッシュ計算 ハッシュ計算 一致 レスポンス リモートホスト 監視対象ホスト

実験 目的 SGmonitorを用いたIDSの動作確認 VM内のOSデータを取得する時間の測定 プロセス数とEPCサイズの影響の測定 SGmonitor(データ暗号化の有無)、SGXを用いない従来 手法を比較 プロセス数とEPCサイズの影響の測定 監視対象VM IDS VM 仮想CPU数 2 メモリ 2GB OS Linux 4.4 Linux 4.13 EPC 0MB 32MB ホスト CPU Intel Xeon E3-1225 v5 メモリ 8GB 仮想化システム Xen-SGX 4.7

IDSの動作確認 監視対象VM内のプロセス一覧を取得して表示す るIDSを作成 プロセスIDとプロセス名が正しく取得できていることを確 認 166プロセス

OSデータの取得時間 プロセス一覧を取得するのにかかる時間を測定 暗号化を行わない場合は従来手法より8%だけ増加 OCALLによるオーバヘッドのため 暗号化を行う場合は従来手法の2.3倍の時間がかかっ た CPUのAES-NI機能により削減可能

プロセス数とEPCサイズの影響 プロセス数を増やしながら、プロセス一覧を取得す るのにかかる時間を測定 IDS VMに割り当てるEPCのサイズも変更 EPCが1MBの場合、取得時間の増加率が大きくなる EPCのサイズが不足したため 数百程度のプロセスなら大きな差はない

関連研究 S-NFV [Shih et al.'16] libSEAL [Aublin et al.'18] Snortのポリシーをエンクレイヴ内で管理 libSEAL [Aublin et al.'18] サービスへのリクエスト・ログをエンクレイヴ内で保存 し、ログの整合性違反を検出 Graphene-SGX [Tsai et al.'17] エンクレイヴ内で既存のアプリケーションを実行 Transcall [飯田ら'10] と組み合わせて既存のIDSを動作 させられる可能性

まとめ SGXを用いてIDSを保護し、VMを安全に監視するシ ステムSGmonitorを提案 今後の課題 エンクレイヴ内でIDSを安全に実行 AES-NIを用いた暗号化オーバヘッドの削減 暗号鍵を共有する実装の完成 リモートホストからのハートビートの実装 様々なIDSの開発