AIエージェントに潜む重大な引数インジェクションの脆弱性:リモートコード実行の脅威

はじめに – AIエージェントの普及と新たな脅威

AIを活用したエージェントは、コード分析、ファイル管理、ワークフローの自動化といったタスクの実行にますます利用されています。しかし、新たに浮上した「引数インジェクション」の脆弱性は、特定の安全対策が講じられている場合でも、攻撃者がこれらの機能を利用してリモートコード実行(RCE)を達成できることを示しています。

この脆弱性は、CLIエージェントにおけるコマンドインジェクションとして、CVE-2025-54795として識別されています。

AIエージェントが危険になる仕組み – 引数インジェクションのメカニズム

AIエージェントは、効率性と信頼性のために、findgrepgitなどの事前承認されたシステムツールを頻繁に使用します。これらのツールは「安全」と見なされ、最小限の監視で実行できます。開発者は車輪の再発明を避け、十分にテストされたユーティリティを活用することでパフォーマンスと安定性を得ています。

しかし、この設計には重大なリスク、すなわち引数インジェクションが潜んでいます。ユーザーが制御する入力が、完全な検証なしにコマンド引数として直接渡されると、攻撃者は悪意のあるフラグやオプションを挿入し、「安全な」コマンドを悪用するための手段に変えることができます。

実際の悪用事例

いくつかの本番エージェントシステムに対するレビューでは、攻撃者が巧妙なプロンプトインジェクションを通じてRCEを達成した事例が報告されています。

  • Go Test悪用: 攻撃者はgo test -execフラグを使用して、エージェントにcurlbashを起動させました。これらのプログラムは「安全な」コマンドではなかったにもかかわらず、go testが許可されていたため、その機能が引数として使用されることで制限が完全に回避されました。
  • 複雑な連鎖: 別のシステムではgit showripgrep (rg)が許可されていました。攻撃者はこれらのツールを連鎖させ、git showでペイロードファイルをドロップさせ、その後rg --pre bashを使用して実行しました。これらすべてが単一のプロンプトで行われました。
  • ファサードパターンバイパス: 一部のエージェントは実行前に検証を行うファサードハンドラーを使用しますが、これらのファサードが厳密な区切り文字なしに生のユーザー入力を追加すると、攻撃者は例えばfd -x=python3のように実行可能なコードを挿入できます。

これらの攻撃は、リスクの高いコマンドに対して人間の承認を要求するような洗練された安全モデルでさえ、引数インジェクションが厳密に制御されていない場合には不十分であることを示しています。この脆弱性は、たった一つの巧妙に設計されたプロンプトでRCEを達成できるため、特に危険です。

対策と推奨事項

専門家は、AIエージェントの操作をメインシステムからサンドボックス(コンテナ、WebAssembly、プラットフォーム固有のサンドボックスツールなど)を使用して隔離することを推奨しています。これにより、エージェントが侵害された場合のシステムからの脱出を防ぐことができます。

サンドボックス化が不可能な場合、開発者は以下の対策を講じるべきです。

  • ユーザー入力を常に--で区切るファサードを実装し、フラグをブロックする(例: [cmd = "rg", "--", user_input])。
  • shell=Falseを介してシェル実行を恒久的に無効にする
  • 可能な限り厳格な許可リストを維持し、GTFOBINSやLOLBINSのようなリソースと照合して潜在的な悪用がないか確認する。
  • コマンド実行パスを監査し、引数インジェクションの機会がないか確認する。
  • すべての実行をログに記録し、疑わしいシーケンスにフラグを立ててレビューする。

ユーザーは、特に機密データのある環境で、AIエージェントに広範なシステムアクセスを許可することに注意する必要があります。ローカルマシンであっても、コンテナやサンドボックスを使用することで、攻撃が成功した場合の被害を限定できます。

結論: 現代における古典的なバグ

セキュリティエンジニアは、エージェントのコマンドリストを調査し、コードをレビューし、予期せぬフラグ処理がないかファジングを行うことで、これらの欠陥を探すことが推奨されます。AIエージェントがより高性能になるにつれて、そのコマンド実行機能を保護することは極めて重要です。引数インジェクションは、現代の文脈における古典的なバグであり、次世代テクノロジーにおいても入力検証と隔離の基本がいかに重要であるかを示しています。


元記事: https://gbhackers.com/critical-argument-injection-flaw-in-ai-agents/