Transcript slide - KSL

九州工業大学大学院
情報工学府 情報創成工学専攻
11675501 塩田裕司

仮想マシン(VM)は必要なときだけ動かすことが多い
◦ クラウドでもデスクトップでも
◦ 長期間使わないVMが存在する

VMの再開時に攻撃を受ける可能性が高くなる
◦ 停止中にOSやアプリケーションの脆弱性が発見されることが
多い
◦ 長期間停止しているVMではセキュリティアップデートが適用
されない
アップデートA
アップデートB
アップデートC
危険
VM
VM
停止
VM
再開

VMの再開後にアップデートを行うのが一般的だが、
危険性が高い
◦ ネットワーク経由の攻撃を受ける
 アップデータをダウンロードするためにネットワークに接続
 接続後、即座に攻撃を受ける可能性がある
◦ 無防備な時間が長い
 アップデートの処理に時間がかかる
 完了するまでは攻撃にさらされる
サーバ
攻撃者
アップデータ
仮想
ディスク
仮想マシン

VMを再開する前にアップデートする手法も提案され
ている
◦ 例:VMの仮想ディスクを直接更新
◦ 完全に停止したVMが対象

サスペンド状態のVMには適用できない
◦ VMをサスペンドするとある瞬間の状態が保存される
◦ サスペンド状態で更新すると仮想ディスクが壊れる
オンライン
オフライン
オンライン
アップデート
サスペンド
シャットダウン
レジューム
ブート
サスペンド状態
停止状態

サスペンド状態のVMのオフラインアップデート
◦ オフラインでアップデートをエミュレーション
 仮想ディスクが壊れるのを防ぐ
 前処理・後処理のスクリプト実行を遅らせる
◦ VMのレジューム後にエミュレーション結果を反映
 VMをネットワークに接続せずに安全に実行可能
 オンライン時には短時間でアップデートを完了
オフライン
オンライン
アップデートのエミュレート
エミュレーション結果の反映
更新ファイル
の保存
サスペンド
スクリプト
の保存
更新ファイル
の反映
レジューム
スクリプト
の実行

VM Shadow [飯田ら’11]を用いてアップデータ実行
のエミュレーション環境を構築
◦ 既存のアップデータを実行できる
 VM内のデータベースを参照
◦ システムコールとprocファイルシステムをエミュレート
 VMのメモリを解析
◦ VMの仮想ディスクへのアクセスを提供
ホストOS
仮想マシン
VM Shadow
アップデータ
仮想
ディスク

Aufsを用いて仮想ディスクの更新をエミュレーション
◦ 保存用ディレクトリを仮想ディスクの上に重ねる
 仮想ディスクを書き換えから守る
◦ 保存用ディレクトリには以下が書き込まれる
 追加されたファイル(A)
 変更されたファイル(B’)
 削除されたことを表すwhiteoutファイル(.wh.ファイルC)
アップデータ
ファイルA
ファイルB’
.wh.ファイルC
ファイルB
ファイルC
保存用ディレクトリ
仮想ディスク

保存用ディレクトリを仮想ディスクへの更新情報とし
て抽出
◦ すべての更新ファイルは保存用ディレクトリに作成される

whiteoutファイルから削除リストを作成
◦ 保存用ディレクトリを検索して、whiteoutファイルのパス名を
取得
保存用ディレクトリ
ファイルA
ファイルB’
.wh.ファイルC
抽出
削除リスト
仮想ディスク
ファイルB
ファイルC

アップデータに含まれるスクリプトは実行せずに保
存
◦ アップデータによっては前処理や後処理を行うスクリプトを
含んでいる
◦ プログラムを実行するexecveシステムコールをエミュレー
ション
 スクリプトを実行する代わりに保存
VM Shadow
アップデータ
execve
保存用ディレクトリ
スクリプト
保存

VMのレジューム直後にVM自身に仮想ディスクへの
更新を行わせる
◦ 保存用ディレクトリのアーカイブをVMに送る
 仮想ネットワーク経由
◦ VM上でアーカイブを展開し、ファイルの追加・変更を行う
◦ 削除リストに基づいてファイルを消去
ホストOS
ファイルA
ファイルB’
Tar
ファイル
削除リスト
.wh.ファイルC
仮想マシン
ファイルA
ファイルB’
ファイルB
ファイルC
.wh.ファイルC
削除リスト

エミュレーション時に保存しておいたスクリプトを実行
◦ スクリプトは更新ファイルと一緒にVMに送られる
◦ 前処理スクリプト
 設定ファイルの保存やサーバの停止など
 仮想ディスクの更新の前に行う
◦ 後処理スクリプト
 新しい設定ファイルの作成やサーバの再起動など
 仮想ディスクの更新の後で行う
前処理
仮想ディスクの
更新
後処理

OUassisterと従来手法でパッケージのアップデート
時間を比較
◦ nginxウェブサーバのインストール・アンインストール
◦ OpenSSLのバージョンアップ
◦ Ubuntuのパッケージリストの更新

アップデート処理の内訳とアップデート時間の関係を
調査
CPU: Intel Xeon E5630 2.53GHz
メモリ: 6GB
NIC: ギガビットイーサネット
Xen 4.1.3
ドメイン0: 4 CPU、メモリ 5.3GB、Ubuntu 12.04
ドメインU: 1 CPU、メモリ 512MB、Ubuntu 12.04

オンラインでのアップデート時間を11〜57%に短縮
◦ nginxウェブサーバのアップデート: 21秒前後→2.5秒
◦ OpenSSLのバージョンアップ: 10.4秒→5.9秒
◦ パッケージリストの更新: 12.5秒→2.6秒

アップデート時間の合計は長くなる場合もあった
◦ OpenSSLのバージョンアップ、パッケージリストの更新
時間(s)
30
従来手法
20
OUassister(オンライン)
10
0
インストール
バージョンアップ
アンインストール
パッケージ更新
OUassister(オフライン+
オンライン)

OpenSSLのバージョンアップとパッケージリストの更
新では更新ファイルの合計サイズが大きい
◦ オンラインになってからのVMへの転送に時間がかかる
◦ オフラインでの更新ファイルの抽出にも時間がかかる
アップデートの
内容
更新ファイ 削除ファイ
ル数
ル数
更新ファイ
ルサイズ
(MB)
スクリプト数
インストール
149
0
44
9
アンインストール
41
68
40
9
バージョンアップ
203
1
110
2
パッケージリスト
81
1
108
-

停止状態のVMのオフラインアップデート
◦ NetChk Protect [VMware, Inc.]
 オフラインでダウンロードしたアップデータを仮想ディスクに保存
 VMの起動時にアップデータを実行
◦ Nuwa [Zhou et al.’10]
 オフラインでアップデータを実行して仮想ディスクを更新
 アップデータのスクリプトを書き換えてできるだけ実行

サスペンド状態のVMのオフラインアップデート
◦ Offline Virtual Machine Servicing Tool [Microsoft]
 アップデート専用環境でVMをレジュームしてアップデート
 専用環境を構築してメンテナンスする必要がある

サスペンド状態のVMのオフラインアップデートを可能
にするOUassister を提案
◦ オフライン時にアップデータ実行をエミュレーション
 VM ShadowとAufsを用いて更新されたファイルを抽出
 前処理・後処理スクリプトを保存
◦ レジューム後にエミュレーション結果を反映
 スクリプトを実行
 オンライン時のアップデート時間を削減

今後の課題
◦ 可能な範囲でのスクリプトのオフライン実行
◦ Windowsアップデートへの対応