「Friendly Fire」セキュリティ研究は、READMEファイルに悪意のある指示を紛れ込ませるだけでAIエージェントを欺くことができ、エージェントは基盤となるコードを一切確認することなくその指示に従ってしまうことを示しました。同様の欠陥は、監視なしの生成フェーズ中に「自動承認(auto-approve)」フラグに依存していた個人のブログ自動化パイプラインでも表面化し、隠れた攻撃対象領域を露呈させました。
「Friendly Fire」研究が暴く隠れた攻撃ベクトル
Friendly Fireの論文の著者らは、最小限ながら強力なエクスプロイトを実証しました。攻撃者は、AIが通常のワークフローの一部として読み取るドキュメントファイル内にコマンドを埋め込みます。エージェントはそのファイルの内容を信頼しているため、隠されたコマンドを正当な指示であるかのように実行してしまいます。この攻撃は、AIモデル自体を侵害する必要はありません。人間が監視していない間に、モデルが処理するデータに影響を与えるだけで十分なのです。
この研究の主な貢献は、ペイロードの新規性ではなく、「自動承認」モード(二次チェックを行わずに、読み取った内容に基づいてAIに行動するよう指示する設定)が、外部データソースとの間に暗黙的な信頼関係を生み出してしまうという事実を明らかにした点にあります。その信頼が盲目的になると、パイプラインは任意のコード実行への入り口となってしまいます。
放置されたブログパイプラインがいかにして崩壊したか
研究の著者は、同じロジックを個人のブログ自動化システムに適用しました。ワークフローは以下の3つのステージで構成されています。
- 生成フェーズ (Generation stretch) – 人間の監視なしにAIが記事を執筆します。
- QAゲート (QA gate) – 自動化された品質スコアチェックがアウトプットを評価します。
- Telegramボタン (Telegram button) – 人間がボタンを押すことで投稿が公開されます。
生成フェーズの間、著者は dangerously-skip-permissions というフラグを有効にしていました。これは、あらゆる入力を承認済みとして扱うようAIに指示するものです。このフラグは、本質的にFriendly Fireの論文で指摘された「自動承認」モードを再現しています。
その後の監査により、広範囲に及ぶ欠陥が判明しました。もし攻撃者がその期間中にAIが読み取るファイルに影響を与えることができれば、パイプライン全体を操作できてしまうのです。著者のシステムでは、設定スクリプトが意図せず別のスクリプトの設定を上書きしてしまったため、6回中5回、サイレントな失敗が発生していました。終了コードやQAスコアのログが記録されていなかったため、この問題は発見されるまで3日間も放置されていました。
この出来事は、安全性とはAIのアウトプットを信頼することから生まれるのではなく、生成フェーズを取り囲む3つの明示的なチェックポイントから生まれるものであることを証明しています。
安全性は実際にどこに存在するのか
この研究とブログ自動化の失敗は、一つの点に集約されます。それは、保護は生成プロセスの外部で行われなければならないということです。AIが自動承認状態で動作しているとき、いかなる挙動も引き出される可能性があります。周囲のコントロール(制御)だけが、望ましくないアクションを検知し、ブロックすることができるのです。
主な観察事項:
- 最終段階での人間による承認が機能するのは、リアルタイムの監視には速すぎ、かつ数が多すぎる中間ステップではなく、最終的なアーティファクトをレビューするためです。
- 生成後、公開前に行われる品質しきい値の適用は、操作された可能性のある信頼性の低いアウトプットを捕捉します。
- すべての終了コード、QAスコア、設定変更の包括的なロギングにより、問題が連鎖する前にサイレントな失敗を可視化できます。
自動承認エージェントを運用するすべての人への教訓
- すべてをログに記録する – 終了コード、QAスコア、設定ファイルのあらゆる変更をキャプチャしてください。見えないものは修正できません。
- 厳格な品質ゲートを強制する – パイプラインが次のステージに進む前に満たさなければならない、譲れないしきい値を設定してください。
- 人間による承認は最終ステップに留める – AIが生成している最中に監視しようとするのは非現実的です。すべてのチェックが終わった後にボタンを一度押す方が、はるかに信頼性が高いです。
- 設定ファイルを保護する – 設定を書き換える可能性のある他のツールから隔離し、書き込み権限を定期的に監査してください。
まとめ
放置されたAIエージェントの安全性は、その周囲にどれだけ隙間を埋められるかにかかっています。「自動承認」フラグは、利便性をサイレントなバックドアへと変えてしまいます。徹底したロギング、厳格な品質ゲート、そして最終的な人間による承認こそが、パイプラインが攻撃ベクトルになるのを防ぐための実用的な防御策なのです。
