CacheShadow フフフフフフフフ: フフフフフフフ VM フフフフフフフフフ フフ フフフ フフフフフフフ () フフ フ フフフフフフ 一( /JST CREST )
Jan 05, 2016
CacheShadow ファイルシステム:仮想ディスクと VM 内キャッシュの統合
土田 賢太朗(九州工業大学)光来 健一(九州工業大学 /JST CREST )
侵入検知システム( IDS)IDS はサーバへの攻撃者の侵入を検知するため
に用いられる例:ディスクを監視してファイルの改竄を検知する
攻撃者はまず IDS を攻撃するようになってきたIDS が侵入を検知できなくなる
攻撃者IDS
監視
攻撃者
検知
VM を用いた IDS オフロードサーバを仮想マシン (VM) で動かし, IDS だけ
を別の仮想マシンで動かす手法オフロードした IDS が仮想ディスクを監視IDS が攻撃の影響を受けにくくなる
サーバ VM では IDS は動いていないIDS VM では不要なサービスを動かさないので侵入されに
くいIDS VM サーバ VM
IDS
仮想ディスク
IDSオフロード
監視
不完全なファイル監視ディスクに書き戻されていないキャッシュ上の
ファイルを監視できないアクセス高速化のためキャッシュが生成される一定時間たつとキャッシュはディスクに書き戻される
メモリをディスクとして使うファイルシステム(tmpfs) を監視できない書き戻されることがない
仮想ディスク
IDS VM
サーバ VM
キャッシュ
IDS監視
キャッシュを利用した攻撃キャッシュからディスクへの書き戻しまでの時
間を長くする例: pdflush の起動間隔を長く設定する( Linux )キャッシュ上にファイルを不正に作成または改竄され
ても検知できない
IDS VM
サーバ VM
キャッシュ
IDS
web サーバ
仮想ディスク
監視
改竄されたweb ページ
webページ
閲覧者改竄されたweb ページ
webページ
CacheShadow ファイルシステム仮想ディスクとキャッシュを統合して監視を行
えるようにするファイルシステムサーバ VM のメモリを解析し、キャッシュ情報を取得3 種類のキャッシュを考慮
CacheShadowファイルシステム 仮想ディスク
キャッシュIDS VMサーバ VM
IDS
ページキャッシュディレクトリキャッシュ
メタデータキャッシュ
ページキャッシュファイル内容をメモリページ単位でキャッシュ
ファイルの更新時にはまずキャッシュを書き換え
考えられる攻撃キャッシュ上でだけ実行ファイルの中身を置き換えキャッシュ上でだけファイルにウィルスを埋め込み
仮想ディスク
ページキャッシュ
ページキャッシュの解析すべてのページの管理情報を解析
ページの用途から消去法でページキャッシュとして使われているページを見つけるダーティなページキャッシュだけを選別
書き換えられたファイルのどの部分がどのページにあるかの対応表を作成
メモリ ・・・page 構造体
ファイルとページの対応表
ページキャッシュの統合ファイルの書き換えられた部分をページキャッ
シュから読み込むread システムコールで統合ページサイズごとにファイルを対応表で調べる
見つかればキャッシュ上のデータを使う見つからなければディスクから読み込む
CacheShadowファイルシステム
仮想ディスク
ページキャッシュ
対応表
ディレクトリキャッシュアクセスしたディレクトリの情報をキャッシュ
追加・削除されたファイルの情報も保持
考えられる攻撃キャッシュ上にだけマルウェアをインストールキャッシュ上でだけ特定のファイルを別のファイルに
置き換え
/bin usr
file1 src
file2
仮想ディスクディレクトリ
キャッシュ/
bin /bin usr
file1
src
file2
ディレクトリキャッシュの解析ルートディレクトリから深さ優先探索
init プロセスからルートの dentry 構造体を取得子の dentry がなくなるまで再帰的に探索
自分の子となる dentry がリンク同じ親の dentry 同士もリンク
ディレクトリキャッシュinit プロセス
の構造体ルートの
dentry 構造体
ディレクトリキャッシュの統合ディレクトリキャッシュ上で追加・削除された
ファイルを反映readdir システムコールで統合ディレクトリキャッシュ上のエントリを取得
削除マークのついているエントリは無視ディスク上のエントリを重複しないように取得
キャッシュで削除マークのついているエントリは無視
CacheShadowファイルシステム
仮想ディスク
file1 file3
ディレクトリキャッシュ
file1 file3
/home/user/
*file2 file1 file2
/home/user/
メタデータキャッシュファイルサイズやアクセス権限のキャッシュ
ディレクトリキャッシュのエントリに対応して作成
考えられる攻撃キャッシュ上でだけ実行属性をつけて実行可能にするキャッシュ上でファイルサイズを小さくし、ファイル
末尾のウィルスの検知を逃れるinode 構造体
更新時刻
アクセス保護
所有者の UID
ファイルサイズ
ディレクトリキャッシュ
仮想ディスク
/bin
filedentry 構造体
メタデータキャッシュの解析・統合キャッシュがあればその情報を返す
ディレクトリキャッシュをたどり dentry を見つける見つかれば dentry から inode 構造体を取得
見つからなければディスク上のファイル情報を返す
仮想ディスク
1024KBrwx------
1124KBrwxrwxrwx
メタデータキャッシュ
CacheShadowファイルシステムディレクトリキャッシュ
サーバ VM のメモリ解析サーバ VM のメモリを解析するにはアドレス変
換が必要サーバ VM の仮想アドレスから物理アドレスサーバ VM 内のページテーブルを引くのに時間がかか
る
アドレス変換のキャッシュを作成一度変換したアドレスは再利用サーバ VMIDS VM
ページテーブル
CacheShadowファイルシステム
アドレス変換のキャッシュ
VM のメモリとディスクのスナップショットをとって解析・統合メモリの解析中や解析した情報を使う前に更新が行わ
れるのを防ぐ現在の実装ではサーバ VM を停止している
VM のスナップショットを対象
IDS VM
サーバ VM のスナップショット サーバ VM
仮想ディスク
メモリ
CacheShadowファイルシステム
実験実験内容
ページキャッシュを利用した攻撃の確認ページキャッシュの解析時間の測定ファイルの読み込み性能の測定
実験環境Xen 4.1.2IDS VM/ サーバ VM のカーネル: Linux 2.6.39CPU : Intel Xeon 3.60GHzメモリ: 16GBHDD : SATA 500GB
キャッシュを利用した攻撃が実際に可能であることを確かめたキャッシュの書き戻しまでの時間を長く設定VM 内でファイルの追加、変更、実行権限の変更
ディスクを見ただけでは検知できず
キャッシュを利用した攻撃の確認
仮想ディスク
IDS VM
サーバ VM
rwx------
rwxrwxrwx
rwx------
ページキャッシュの解析時間 (1/2)様々なサイズのファイルの解析時間を測定
解析時間はファイルサイズの影響を受けないアドレス変換のキャッシュにより解析時間を短縮
同じファイルでは page 構造体からたどる構造体も同じ
0 50 100 150 200 250 300 350 400 4500
5
10
15
20
25
30
ファイルサイズ [MB]
解析時間
[s]
ページキャッシュの解析時間 (2/2)4KB の小さいファイル( 1〜 10万個)の解析
時間を測定解析時間はファイルの個数に比例すべてのファイルについて個別に解析を行うのでアド
レス変換のキャッシュの効果はない
0 30000 60000 90000 1200000
5
10
15
20
25
30
ページキャッシュの数
解析時間
[s]
ファイルの読み込み性能4MB のファイルのハッシュ値の計算時間を測定
CacheShadow ファイルシステムでは従来システムの実行時間の 1.3倍
ページサイズごとに処理を行うことによるオーバーヘッド
従来システム CacheShadow ファイルシステム0
20
40
60
80
100
120
140
89.4
114.6
計算時間
[ms]
関連研究VMwatcher [Jiang et al. ‘07]
既存のアンチウィルスでサーバ VM を外から監視可能サーバ VM の仮想ディスクを参照するのみ
Volatility[Petroni et al. '06]ダンプしたメモリ上の tmpfs をコピーして監視可能仮想ディスクとキャッシュの統合はできない
HyperSpector [Kourai et al. ‘05] OS の仮想化機能を利用した IDS オフロードIDS VM はサーバ VM とキャッシュを共有
まとめCacheShadow ファイルシステムを提案
ファイルシステムキャッシュと仮想ディスクを統合して監視が行える
サーバ VM のメモリを解析してぺージキャッシュ,ディレクトリキャッシュ,メタデータキャッシュを取得
今後の課題実際の IDS を用いた評価読み込みのオーバーヘッドを減らす