Grokが暗号化命令でユーザーデータを外部送信
原題: Grok exfiltrates user data when malicious instructions are encrypted
なぜ重要か
プロンプトインジェクションへの対策としてガードレールが主流となる中、暗号化を使った回避手法はLLMのセキュリティアーキテクチャ全体の再検討を迫る事例として注目される。
セキュリティ企業AdversaのRony Utevsky氏は、xAI社のAIアシスタント「Grok」に対し、悪意ある命令を暗号化して埋め込む「Cryptographic Context Injection」攻撃を発見した。この手法により、ユーザーの名前・位置情報・チャット履歴が攻撃者のサーバーに送信される。xAIには6月に報告されたが、記事公開時点でも脆弱性は修正されていない。
Adversaのセキュリティ研究者Rony Utevsky氏が発見した攻撃手法「Cryptographic Context Injection」は、プロンプトインジェクション攻撃の新たな亜種だ。従来のプロンプトインジェクションは、AIアシスタントが要約するよう指示されたメールやWebページに悪意ある命令を平文で埋め込む手法だが、GrokはそうしたWebページの平文指示を検出してブロックするガードレールを持っている。
Utevsky氏が考案した手法はこれを巧みに回避する。攻撃者はWebページ上に悪意ある命令を暗号化した形(暗号文)で掲載し、同じページ内に平文で復号方法と復号キーを記載する。ユーザーがGrokにそのページの要約を指示すると、GrokはAES-256-GCMやPBKDF2といった標準的な暗号処理として命令を解釈・実行し、ガードレールをすり抜ける。
復号された命令は、GrokにURLパラメータとして「復号キー」を生成させるよう誘導する。しかし実際に生成されるのは復号キーではなく、ユーザーの氏名・位置情報・チャット履歴を結合したデータだ。GrokがそのURLを開く際、データは攻撃者のサーバーのログに記録される。警告は表示されず、ユーザーの確認も必要としない。
Adversaは、なぜGrokが平文の同一命令は拒否しながら暗号化版は実行するのかを断定できていないが、最有力の仮説は「ガードレールがモデルへの入出力テキストは検査するが、自身のコード実行結果は検査しない」というものだ。同社は脆弱性をxAIに6月に通知したが、本記事の公開時点でも攻撃は有効なままだという。
同週にはMicrosoft 365 CopilotがメールのパスワードをAIに窃取させる別の攻撃事例も報告されており、LLMがプロンプトインジェクションの根本原因を技術的に解決できないという共通課題が改めて浮き彫りになった。