4. IaaS型クラウドコンピューティングセキュリティ概観
Internet
Authentication man in the middle attack
Cross VM Cross Site Scripting
phishing
・VM Isolation
Client
•Key management
App1 App2 App3 login, data, application
User’s •personal Identification
Responsibility •Software vulnerability
OS1 OS2 OS3
•Component Integrity
Verified Boot by “ChromeOS”
Formal Verification
In the future Mem Mem Mem VM Internal
Vunerability
CPU CPU CPU & Attack
Software Vulnerability
・Hypervisor Virtual Machine Monitor Provider’s
・Manage OS Responsibility
Memory
・System Configuration
CPU
Security Guideline
• CSA (Cloud Security Alliance)
• Open Cloud Manifesto
Auditing Standard
• SAS70
• HIPAA
Data Management Auditing
•Lost (消去) provider’s matter •Digital Forensic
•Leak (漏えい) •Log
•Erasure (削除) provider’s matter
5. 仮想化への流れ
分散化:Distributed
Computing Web CGI DB
2000年初頭
Linux Windows BSD
•マシンは安価で追加が容易
(‘99 Pentimum IIIで1GHz) メモリ メモリ メモリ
•サーバ毎に機能分割 CPU CPU CPU レガシーシステム
•メモリもCPUも固定
仮想化: Virtualization Web CGI DB
2006年以降
Intel-VT/AMD-SVMの出現 (‘06) Linux Windows BSD
OpenVZ(‘05-), Xen (‘03-)
KVM (‘06-,Feb’07にLinux6.20統合) メモリ メモリ メモリ
•仮想マシンにより複数サーバを1台の •プロビジョニングにより仮想化したメ
CPU CPU CPU モリ、CPUに物理能力を動的に分配
物理マシンに集約
仮想マシンモニタ •仮想化した総メモリサイズが物理メ
メモリ モリを超えるメモリオーバーコミット機
CPU 能により柔軟に管理
自動化: Autonomics System
2008年以降
•ライブマイグレーションにより負荷分散、障害時の移動が仮想マシン単位で可能 ・VMI (Virtual Machine Image)
•仮想マシンの複製も容易 移動 複製 によりOSのインストールをせず
にコピーのみでインスタンスが増
やせる
Web CGI Web CGI DB DB DB
Linux Windows Linux Windows BSD BSD BSD
仮想マシンモニタ 仮想マシンモニタ 仮想マシンモニタ
6. 仮想マシン導入のガイドライン
• NIST Guideline, “Guide to
Security for Full Virtualization
Technologies”, Karen Scarfone,
Murugiah Souppaya, Pual Hoffman
– ガイドラインであり、技術的な問題点の指摘が
少ない。 NIST近くのレストランで2010/08撮影
• 仮想化の技術的問題点を中心に話します
12. メモリエラーが引き金になる脆弱性 (VM Internal 3-1)
• クラウドコンピューティングでは数万台を超える大規模なサーバ群から構成され
るため、各デバイスの障害も半端でない
• ” DRAM Errors in the Wild: A Large-Scale Field Study” [SIGMETICS09]に
おいてGoogleのサーバ群におけるメモリのエラーレートを報告
– 通常考えられている以上に物理的なメモリエラーが起こる
– クラウドコンピューティングではメモリ上の処理が多い
• メモリエラーを狙った攻撃
– “Using Memory Errors to Attack a Virtual Machine”, [IEEE Symposium on
Security and Privacy’03]
• 悪意のあるコードにジャンプする仕組みをメモリ内に敷き詰め(スプレー攻撃)、メモリエラーを待つ
• この論文自体はJavaVMを想定しているが、仮想マシンでも同じ
13. メモリエラーが引き金になる脆弱性 (VM Internal 3-2)
通常の動作 スプレイ攻撃
0x0804000 0x0804000
障害があり、制
Program Program 御がどこに行く
か不明
Jump to M
Jump to M
通常はOSがこのメモリ Jump to M
空間をプロテクト どこに飛んでも
M Malware Malwareに行く
ようにJumpを
Jump to M 敷き詰める
• 対処
– AMD のNXビットやIntel CPUのDXビットのようなデータ領域のコードを実行できな
い機能(DEP: Data Execution Prevention)を有効にする
14. ランダムにならない乱数 (VM Internal 4)
• 仮想マシンモニタは仮想マシンの実行途中を保存するスナッ
プショット機能を提供
• スナップショットイメージを複数回使うと前の疑似乱数生成を
繰り返すことになる
• 更に問題なのは、疑似乱数のシードは時計などの物理的要
因から取られるが、スナップショット再開後に外部の時計と同
期せずに時間が繰り返される仮想マシンがある
– When Good Randomness Goes Bad [NDSS10]
• 対処
– Hedged cryptography
– 暗号化レベルで仮想マシンの乱数生成の問題を意識して回避する
16. 物理キャッシュによるサイドチャネル攻撃
(CrossVM-1-1)
• “Hey, You, Get Off of My Cloud”[CCS’09]
• セットアソシアティブキャッシュを共有している「悪意のあるVM」が連続して
キャッシュを叩く。キャッシュの反応が遅れると他のVMでアクセスしている
ことが判る
– 限定した環境だが鍵漏洩の恐れがある
• 2005に話題になった Hyper Threading の脆弱性と同じ
– http://journal.mycom.co.jp/articles/2005/05/17/ht/index.html
• 対策はVMのIsolation、排他制御 Log of Cache delay
Normal Attacker
VM VM
仮想マシンモニタ
Core1 Core2
Cache Line
64 byte
Set Associative 2 way
Cache
Main Memory
17. 物理キャッシュによるサイドチャネル攻撃
の対処“VM排他制御 ”(CrossVM-1-2)
• 利害の異なるVMは同時に実行させない、他のサーバに割当て排他制御が必要
– XenはXSM(Xen Security Module)のACM(Access Control Module)では可能
• [XenSummit07]
• これにより実行時デバイス共有によるCross VM Attackは防げる…
ポリシー
利害関係有り
Time
slot
22. Live Migration (CrossVM-4-1)
• OSを起動させたまま、VMの他のサーバ移動
– サービスを継続しつつ、ハードウェアを停止するた
めに必要
• スケールアウトには必須
“Exploiting live virtual machine migration” [BlackHat DC 2008]
23. LiveMigration時のRootKit混入
(CrossVM-4-2)
• VM移動中にRootkitを仕込まれてしまう
– Virtual Machine Based Rootkits
• “Exploiting live virtual machine migration”, [BlackHat DC 2008]
• VMイメージの完全性を検証することでRootkit混入は防げるが、
• 完全性のみでは覗き見による鍵漏洩は防げない。暗号化によ
る秘匿性も必要
Live Migration
アプリ アプリ
アプリ
OS OS
OS VMBR
VMBR
メモリ メモリ
CPU Attached CPU
仮想マシンモニタ By Attacker 仮想マシンモニタ
メモリ メモリ
CPU CPU
30. 実習結果(覗き見) Average (us) zero Random Apache2
Apache2 ELF file 365,308B (89*4KB) Before invocation 6.45 0.37 0.53
After invocation 6.24 0.40 7.56
Before invocation After invocation
Average (us) zero random sshd
sshd ELF file 438,852B (107*4KB) Before invocation 6.60 0.55 0.45
After invocation 6.51 0.42 7.50
Before invocation After invocation