2 ポイント 投稿者 GN⁺ 2025-03-29 | 1件のコメント | WhatsAppで共有
  • 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というツールを使って自動化された方法ですべてのチャンクを収集し、ローカルで復元
    • filestringsbinwalkコマンドを使って分析した結果、内部構造とGoogleの内部パスが露出
  • binwalk分析により、内部Pythonソースコードが含まれたgoogle3ディレクトリを発見
    • assistantディレクトリ内には、GeminiがGoogleサービス(YouTube、Flightsなど)と相互作用するRPC関連コードを含む
    • 特定のスクリプトのダンプ防止用文字列が含まれていたが、該当コードはGoogleセキュリティチームが事前レビュー後に公開可能と判断

サンドボックスのメインロジック分析

  • Googleサービス呼び出しは、Pythonコードで書かれた特定のクラスで実装されている
    • 例: _set_reader_and_writerrun_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.protosecurity/credentials/proto/authenticator.proto など

なぜこのようなファイルがあったのか?

  • Googleセキュリティチームはサンドボックスのバイナリに含まれる内容を事前承認していたが、自動化されたビルドパイプラインが不要なセキュリティprotoファイルを追加していた
  • その結果、高度に機密な内部定義ファイルが外部に露出する状況が発生
  • ハッカーたちは、これらのファイルがGoogleの基準で機密情報として扱われる点を根拠に脆弱性として報告

結論と振り返り

  • AIシステムは多数の要素が相互作用するため、予期しないセキュリティ問題が頻繁に発生する
  • サンドボックス1つを取っても内部ツールと通信し、権限が動的に変わり得るため、精密なテストが必要
  • Googleのセキュリティチームとの協業は有益であり、全体の経験は挑戦的でありながら非常に刺激的な冒険だった

1件のコメント

 
GN⁺ 2025-03-29
Hacker Newsのコメント
  • 私が担当しているシステムです。質問があればいつでもどうぞ。すべての意見は個人的なものであり、雇用主の見解を代表するものではありません
  • 素晴らしい記事です。大きな脆弱性ではありませんが、Googleがこれを重要視している点から、セキュリティ意識の高さがうかがえます
    • 会社の特定のポリシーではこれを非常に機密と見なしていると書かれていたので重要視されているのかもしれませんが、明確な脆弱性というよりは「技術的には脆弱性と見なされる」という感じです
  • ChatGPT Code Interpreterの内部ソースコードをGitHubリポジトリにスクレイピングする、似たような手法を使っています
    • 主に、どのPythonパッケージが利用可能か(そしてそのバージョンが何か)を追跡するのに役立ちます
  • 本当に極秘なら、全部がGitHubに置かれていることはないでしょう
  • ハッキングの定義はますます緩くなっています。サンドボックスは役割を果たしており、機密情報も漏れていません
  • バイナリからいくつかのファイル名を抽出するために組み込みのstringsコマンドを実行するのを、ハッキング/クラッキングと呼ぶのは難しいです
    • 皮肉なことに、Geminiのソースコードを手に入れても、あまり価値はないかもしれません。ただし、モデルが事前学習されたコーパスを見つけたりアクセスしたりしていたなら興味深かったでしょう
  • Googleがかなり安全であることを示している点が興味深いです。ほとんどの企業はそこまでうまくできない気がします
  • 流出を期待していましたが、それでも面白い発見と分析です
    • 最近、LLMに対するプロンプトインジェクションのような問題がどれほど重要かを理解しました
    • 個人的なLLMへの関心が強かったので、こうした問題をあまり重要視していませんでした。でも、OperatorやDeep Researchが登場して理解できるようになりました
    • 個人向けAIエージェントがインターネット上のコンテンツを読んだり画像を見たりするとき、第三者によるプロンプトインジェクションに脆弱になる可能性があります
    • 個人AIがインターネット上の誤情報を読んでハッキングされる未来を想像するのは興味深いです
  • とても興味深い記事です
    • Googleがユーザーデータを分類する内部カテゴリに関するファイルです
    • どんな分類なのか知りたいです。たとえば「自閉症がある」のようなものなのか、それとも「ユーザーの電話番号である」のようなものなのか
  • サンドボックスはハックされましたが、何も流出していません。記事としては面白いです