- GoogleはAIセキュリティ強化のため、事前のred-teaming方式によるbugSWATイベントを開催し、研究者に自社AIシステムを徹底的にテストする機会を提供
- 2023年に$50,000を受賞したチームが、今回もGeminiの新たな脆弱性を発見し、「Most Valuable Hacker(MVH)」のタイトルを受賞
- ハッカーチームはGoogleから新しいGeminiのプレビュー機能へのアクセス権と文書を受け取り、セキュリティの観点から機能をテスト
- 簡単なプロンプトでPythonコードを要求すると、「Run in Sandbox」ボタンが提供された
- Geminiのサンドボックス環境は、GoogleのgVisorとGRTEをベースに設計された安全なPython実行環境
- gVisorはGoogleが開発したユーザー空間カーネルで、システムコールを横取りしてセキュリティを強化する技術
- サンドボックス環境は完全に隔離されており、脱出は非常に難しい
- しかし、サンドボックス内部からデータ流出が可能な場合がある
- サンドボックスが
osライブラリを提供していることを発見し、ファイルシステムを探索できるPythonコードを作成
/usr/bin/entry/entry_point という579MBサイズのバイナリファイルを発見
- バイナリファイルをbase64で直接出力するとサンドボックスが落ちるため、10MB単位に分割して出力
Caidoというツールを使って自動化された方法ですべてのチャンクを収集し、ローカルで復元
file、strings、binwalkコマンドを使って分析した結果、内部構造とGoogleの内部パスが露出
- binwalk分析により、内部Pythonソースコードが含まれた
google3ディレクトリを発見
assistantディレクトリ内には、GeminiがGoogleサービス(YouTube、Flightsなど)と相互作用するRPC関連コードを含む
- 特定のスクリプトのダンプ防止用文字列が含まれていたが、該当コードはGoogleセキュリティチームが事前レビュー後に公開可能と判断
サンドボックスのメインロジック分析
- Googleサービス呼び出しは、Pythonコードで書かれた特定のクラスで実装されている
- 例:
_set_reader_and_writer、run_toolなどはファイルディスクリプタを通じてGoogleサービスと通信する
- バイナリ内部でprotobufスキーマをベースに直接メッセージを構成し、ツール呼び出しが可能
- Googleは
ReAct論文をもとに、Geminiが複雑な問題を解決するために自律的に複数回プロンプトを生成し、計画を立てるよう実装
- 例: ユーザーが「Toronto → New York のフライト時間は?」と尋ねると、Geminiは複数の段階を経てツールを選択し、データを検索
- このロジックを悪用して、より高い権限のサンドボックスを生成させるプロンプトインジェクションを試行
- 一部のサンドボックスはGoogleの拡張機能(RPC APIなど)にアクセス可能
- 拡張機能は常に開いているFDを通じて呼び出され、これを悪用するとより高いレベルのシステムアクセスが可能になる余地がある
- 特定の条件(Geminiが計画を立てる段階など)に応じて、高度なサンドボックスにアクセスできることを確認
機密protoファイルの流出
- Protocol Bufferファイル(proto)はシステム間のデータ定義に使われ、機密性の高いシステム構造情報を含む
strings entry_point > stringsoutput.txt 実行後、「Dogfood」文字列を検索することで多数の機密protoパスが露出
- 例:
privacy/data_governance/attributes/proto/classification.proto → Googleがユーザーデータをどう分類するかを定義するファイル
cat stringsoutput.txt | grep '.proto' | grep 'security' コマンドにより、多数の機密セキュリティ関連protoファイルの一覧が露出
- 例:
security/thinmint/proto/core/thinmint_core.proto、security/credentials/proto/authenticator.proto など
なぜこのようなファイルがあったのか?
- Googleセキュリティチームはサンドボックスのバイナリに含まれる内容を事前承認していたが、自動化されたビルドパイプラインが不要なセキュリティprotoファイルを追加していた
- その結果、高度に機密な内部定義ファイルが外部に露出する状況が発生
- ハッカーたちは、これらのファイルがGoogleの基準で機密情報として扱われる点を根拠に脆弱性として報告
結論と振り返り
- AIシステムは多数の要素が相互作用するため、予期しないセキュリティ問題が頻繁に発生する
- サンドボックス1つを取っても内部ツールと通信し、権限が動的に変わり得るため、精密なテストが必要
- Googleのセキュリティチームとの協業は有益であり、全体の経験は挑戦的でありながら非常に刺激的な冒険だった
1件のコメント
Hacker Newsのコメント
stringsコマンドを実行するのを、ハッキング/クラッキングと呼ぶのは難しいです