8月27日、Ederaが「AI Agent VM Escape: Why Isolation Is a Spectrum」と題した記事を公開した。この記事では、AIエージェントがQEMU/KVM仮想マシンから自律的に脱出した事例を踏まえ、「VMによる隔離」の限界と、分離の強度が一枚岩ではないことについて詳しく紹介されている。
AIエージェントが12時間でVMを3回突破した
Trail of BitsのArtem Dinaburg氏は、GPT 5.6-Cyber(OpenAIがサイバーセキュリティ用途向けに提供している特化モデル)に一つのミッションを与えた。QEMU/KVM仮想マシンからの脱出だ。
結果は1回ではなかった。エージェントは約12時間の自律的な作業の中で、3回脱出に成功した。バックトラッキング、バグハンティング、自製のエクスプロイトオラクル作成、脆弱性の連鎖──ほぼ人の手を借りずにこれをやり遂げた。
- 1回目: 直近で公開されたカーネルのバグを利用
- 2回目: ディストロが未パッチだったlibslirpのネットワーク関連バグ2件をチェーン
- 3回目: QEMU、KVM、ホストカーネルを横断して0-dayを独自に発掘。QEMUのVAPICエミュレーション、KVMのシャドウページング、細工したICMPパケットを組み合わせた3件の0-day+未バックポートの既知修正バグによる新規エクスプロイトチェーンを自力で組み立てた。途中でCUPSの脆弱性パスやQEMUのディスプレイレンダラーのヒープオーバーフローも発見しているが、「確実性が低い」と判断して捨てている。
その後、クラウド業界で「軽量・安全なVMM」として広く採用されているFirecrackerでも試験が行われた。脱出は失敗した。しかしエージェントは、共有仮想化スタック上のカーネルバグを使ってホストをハードロック(完全フリーズ)させることに成功した。
なぜ突破できたのか
QEMUはゲストに対して実際のハードウェアをエミュレートする。ディスク、GPU、virtioデバイス、NIC──それぞれがパーサーであり、そのパーサーはC言語で書かれ、ゲストからの信頼されない入力に直接さらされている。これはQEMU固有の欠陥ではなく、デバイスエミュレーションという仕組みそのものの構造だ。
ソースを読み、ファジャーを書き、12時間連続でメモリ安全性を推論できるAIエージェントは、そのクラスのコードが想定していなかった種類の攻撃者である。
Firecrackerはデバイスモデルの大部分を削ぎ落とすことで攻撃対象領域を縮小している。しかし依然としてホストカーネルの仮想化スタック(KVMインターフェース)をゲストに提供しており、そのスタックは巨大かつ汎用的で、ホスト上の全ゲストが共有している。「デバイスエミュレーションを減らすことで攻撃面を縮小できる」が、「なくすことはできない」──エージェントはQEMUを使わずにDoSを成立させることでそれを証明した。
「分離」は状態ではなくスペクトラムだ
この記事を公開したEderaは、Xenハイパーバイザーをベースに、Rustで実装されたコンテナ分離プラットフォームを開発している企業だ。Xenの上にRustで書かれたセキュリティ層を重ねることで、従来のLinuxカーネルに依存しない分離アーキテクチャを提供している。彼らが一貫して主張してきたのは、「Linuxカーネル全体をトラステッドコンピューティングベース(信頼の基点)にすべきではない」という点だ。
Ederaのセキュリティ責任者Jed Salazar氏は次のように述べている。
「"分離"という言葉は"スポーツ"と同じくらい曖昧だ。ゴルフとボクシングはどちらもスポーツだが、"スポーツだ"と知るだけでは何もわからない。同じく、"隔離されている"と知るだけでは実際のリスクはわからない」
重要なのはVMかコンテナかサンドボックスかというラベルではなく、ゲストに渡している攻撃面がどれだけ小さいかだ。
| 方式 | ゲストに渡す攻撃面 |
|---|---|
| QEMU/KVM | 巨大なCベースのホストカーネル常駐の攻撃面 |
| Firecracker/KVM | 小さいVMM、ただしKVMインターフェースは同じ |
| Edera | デバイスエミュレーションなし。ハイパーコールで直接通信 |
Ederaはデバイスエミュレーションを持たず、ゲストはエミュレートされたPCIバスやCパーサーではなくハイパーコールを通じてハイパーバイザーと通信する。唯一必要だったQEMU機能(ファイル共有の9pfs)は、Rustでゼロから書き直している。C言語で信頼されない入力をパースするコードこそが今回の脱出に使われたバグクラスであり、「パッチ対応で安全」より「構造的にメモリ安全」を優先した判断だ。
また、デフォルト設定が重要であることも指摘されている。Kata ContainersはデフォルトでQEMUを使用するため、「Kataで隔離している」と思っていても実際の分離強度はVMMの選択次第になる。
Trail of BitsとEderaの関係について
なお、本記事はEdera自身が公開したものであり、自社製品の優位性を説明する文脈で書かれている点は念頭に置いておく必要がある。
一方で、今回の研究を実施したTrail of BitsはEderaとも接点がある。Trail of BitsはEderaのセキュリティ評価を過去に実施しており、その監査レポートはリクエストベースで閲覧可能だ(高優先度の脆弱性は検出されなかったとされている)。両者の関係を踏まえた上で、研究内容そのものの技術的な妥当性は独立して評価するのが適切だろう。
コードを読み、エクスプロイトを書き、何時間も自律的に動作するエージェントをKubernetes上で動かしている場合、分離の強度は後回しにできる選択肢ではない。今回の研究は、「サンドボックス」と「実際に封じ込められている」の差を、優秀なエージェントがパッチサイクルより速く見つけられることを示している。
詳細はAI Agent VM Escape: Why Isolation Is a Spectrumを参照していただきたい。