テック技報最新号へ →
セキュリティ

AI エージェントのツール引数に安全設定の切り替えを入れない(Strands environment ツールの例)

AWS の Strands-Agents-Tools の environment ツールは、秘密を伏せる masked 引数が入力スキーマにあったため、プロンプトインジェクションで LLM にマスキングを切らせて環境変数の秘密を平文で読ませられた(CVE-2026-115415、0.8.6 で修正)。マスキングや確認の有無のような安全設定は、LLM が値を決められる引数に置かない。

@MalwareBibleJP · 2026-10-31
#ai-agent#prompt-injection#secrets#tool-design#aws

何が問題だったか

  • environment ツールは、名前に KEY、TOKEN、SECRET、PASSWORD などを含む変数の値を既定で伏せる。
  • しかし masked が入力スキーマにあり、LLM が false を指定できた。さらに一覧と取得は、設定や削除と違って運用者の確認なしに動いた。
  • エージェントが読む Web ページ、ファイル、先に実行したツールの出力に指示を仕込めば、マスキングなしの一覧取得をさせ、読み込み済みの別ツール経由で攻撃者に渡せる。AWS のアクセスキー、モデル提供元の API キー、ソース管理のトークン、DB 接続文字列などが対象になりうる。
  • 影響版は 0.1.0 以上 0.8.6 未満。0.8.6 でマスキングの制御は運用者だけに限られ、ツール自体も非推奨になった。

対応

  1. strands-agents-tools を 0.8.6 以降に更新する。フォークや派生コードにも修正を取り込む。
  2. すぐ更新できない場合は、エージェントから environment ツールを外す。
  3. このツールを読み込んでいたエージェントの環境にあった認証情報はローテーションする。
  4. 長期間有効なクラウド認証情報や API キーをプロセスの環境変数に置かない。実行ホストの外向き通信は信頼できる宛先に絞る。

自作ツールを設計するときの原則

出典

X の元の投稿を開く