Amazon Bedrock AgentCoreのエージェント掌握の報告

カテゴリ
AI関連
目次
  1. 報告の内容
    1. 実行ロールの認証情報の取得
    2. アカウント内への広がり
    3. 長期記憶と認証情報の悪用
  2. 時系列
  3. 根拠と範囲
  4. 関係者の対応
  5. 未公表の事項
  6. 注
  7. 出典
  8. 更新記録

Zenity Labsが2026年10月8日に公表した研究「AgentCorruption」によると、Amazon Bedrock AgentCoreで公開されたエージェント1つへの単一のプロンプトから、研究者は同じAWSアカウント・リージョンの全AgentCoreエージェントを掌握した⁠[1]。AWSは報道機関への声明で、研究は想定どおりの文書化された挙動を不正確に脆弱性として描いていると述べた⁠[7、8]。

報告の内容

開発元AWSの文書によると、microVM Metadata Service(MMDS)は、VMの中で動くあらゆるコードに実行ロールの認証情報を渡す⁠[11]。AgentCore Browser、Code Interpreter、Runtimeの実行基盤はMMDSで認証情報を得ており、これは実行のネットワークモードにかかわらない⁠[12]。文書は、VMの中のコードや行為者は誰でもメタデータのエンドポイントからこの認証情報を取れるとして、実行ロールの権限を慎重に設定するよう求めている⁠[11、12]。

実行ロールの認証情報の取得

Zenity Labsは、公開のAgentCoreエージェントにプロンプトを送り、AWSのインスタンスメタデータサービス(IMDS)へのアクセスを指示した⁠[1]。エージェントは、外部への要求を出せる一般的なツールを備えていた⁠[1]。Zenity Labsは概説の記事で、IMDSを、ワークロードに割り当てたIAMロールの一時的な認証情報を返す局所のサービスと説明した⁠[2]。

Zenity Labsの概説の記事では、デプロイしたAgentCoreエージェントはFirecrackerのMicroVMの中で動く⁠[2]。MicroVMは十分なネットワーク分離をしておらず、HTTP要求を出せるツールは要求をインスタンスそのものから送った⁠[2]。Zenityはこれをサーバーサイドリクエストフォージェリ(SSRF)の手段と位置づけ、単純なプロンプトインジェクションで足りたと記した⁠[2]。

Zenity Labsは試験の記事で、AWSのオープンソースのStrands SDKでエージェントを作り、組み込みのツールshellとhttp_requestを有効にしたと説明した⁠[3]。AgentCore Runtimeは実行のたびに使い捨てのmicroVMを起動する⁠[3]。平易な言葉でメタデータのエンドポイントの取得を頼むと成功し、microVMはメタデータサービスへの通信を制限していなかった⁠[3]。

同じ記事では、返った一時的なSTSの認証情報(アクセスキーID、シークレットアクセスキー、セッショントークン)はエージェントの実行ロールのものだった⁠[3]。研究者は、AgentCoreの外の自分の端末でこの認証情報が有効なことを確かめた⁠[3]。Zenity Labsは、分離の欠如はツールでなく基盤の水準の問題だとし、Strandsの組み込みのshellツールなど複数のツールで同じ結果を再現した⁠[3]。

アカウント内への広がり

Zenity Labsは、取得した認証情報が既定のIAMロールのものだったと説明した⁠[1]。その権限は元のエージェントに限られず、同じアカウント・リージョンの全AgentCoreエージェントに及んだ⁠[1]。

Zenity Labsの概説の記事では、既定のAgentCoreのロールは特定のエージェントに範囲を絞っておらず、リージョン内の全AgentCoreリソースに広い権限を持っていた⁠[2]。

表1:Zenity Labsが挙げた既定のロールの権限
権限Zenity Labsが示した使い道資料
DescribeLogGroupsリージョン内の全エージェントとそのIDの発見⁠[2]
bedrock-agentcore:InvokeAgentRuntime同じアカウント・リージョンの任意のAgentCoreエージェントの呼び出し⁠[2]
bedrock-agentcore:ListEventsなど全エージェント・利用者・セッションの非公開の会話の読み取り⁠[2]
BedrockAgentCoreMemoryへのbedrock-agentcore:CreateEvent長期記憶を有効にしたリージョン内の任意のエージェントへの持続的な足場⁠[2]
bedrock-agentcore:CreateEvent特定のセッションにASSISTANTの役割のイベントを差し込み、エージェントに自らの思考として扱わせうる⁠[4]
bedrock-agentcore:DeleteEventツールの結果のイベントを消してエージェントに誤った結論を出させる、痕跡を消す⁠[4]
bedrock-agentcore:GetResourceApiKey、secretsmanager:GetSecretValueAgentCoreがエージェントから遠ざけるはずの全認証情報への接触⁠[2]
ECRのイメージの取得リージョン内の任意のECRイメージの取得(AgentCoreのECRリポジトリ名はエージェントのIDと一致)⁠[2]

長期記憶と認証情報の悪用

Zenity Labsは概説の記事で、IMDSの認証情報でAPIに直接要求を送り、別のエージェント・利用者に新しい記憶を作れたと説明した⁠[2]。この記憶で、以後のセッションでのエージェントの振る舞いと目的を持続的に変えられた⁠[2]。Zenity Labsの発表は、以後の会話を攻撃者の管理する宛先に送らせる悪意のある記憶を、研究者がエージェントに埋め込んだと書いた⁠[1]。

Zenity Labsの記憶の記事では、記憶に埋めた指示で、エージェントは回答の前にHTTPツールで研究者のC2のページを取得した⁠[5]。そのページは、利用者のメッセージとエージェントの応答を研究者の収集先へ送るよう指示した⁠[5]。C2のページの指示を変えれば、新しい記憶を埋めずに以後のやりとりを向け直せた⁠[5]。

Zenity Labsは概説の記事で、AgentCoreが外部ツールの認証情報をAgentCore IdentityとAWS Secrets Managerに保存する形を推奨していると説明した⁠[2]。エージェントが外部ツールを呼ぶときは、AgentCore Gatewayが認証を引き受ける⁠[2]。Zenity Labsは認証情報の記事で、エージェントとAgentCoreのゲートウェイが使う認証情報とAPIキーを集めたと説明した⁠[6]。手段はソースコードの走査、環境変数の読み取り、総当たりの列挙で、その多くは既定の実行ロールにあったSecrets Managerへの直接のアクセスを許す1つの権限によるものだった⁠[6]。

目次へ

時系列

時系列
日付主体内容資料
2025年10月13日AWSAmazon Bedrock AgentCoreの一般提供を始めた⁠[13]
2025年12月25日Zenity LabsIMDSへのアクセスの脆弱性をAWSに報告した〔注1〕⁠[1、2]
2026年1月12日Zenity Labs既定のロールの過大な権限と、それによる影響範囲をAWSに報告した⁠[2]
2026年2月14日AWSAgentCoreをIMDSv2〔注2〕だけを使う形にし、新しくデプロイするエージェントはすべてIMDSv2で起動していた(4月12日の回答による)⁠[2]
2026年2月25日AWS根本の問題に取り組んでいると連絡した(既定のIAMロールは変わらなかった)⁠[2]
2026年4月12日AWS1件目の報告に回答し、AgentCoreのIMDSの挙動を改善したと伝えて「informative」として閉じた⁠[2]
2026年9月29日Zenity Labs公表前の最終確認で、既定の実行ロールの大幅な変更を観測した⁠[2]
2026年10月8日Zenity LabsAgentCorruptionを公表し、トロントのSecTor 2026で発表した⁠[1]
2026年10月8日AWSThe Next Webに声明を送った⁠[7]
2026年10月9日Zenity、AWSTHE DECODERに声明を出した⁠[8]

目次へ

根拠と範囲

Zenityは、脆弱性はAgentCoreに系統的なもので、組み込みのツールを備えたエージェントにAWSアカウントを問わず影響したと説明した⁠[1]。概説の記事は、攻撃者に要るのは公開されたエージェント1つへのチャットのアクセスだけだったと書いた⁠[2]。

Zenity Labsの発表では、研究者は権限の無い社内向けエージェントにアクセスできた⁠[1]。ソースコード、長期記憶、APIキー、OAuthトークンなどAWS Secrets Managerに保存された認証情報にも届いた⁠[1]。

AWSは一般提供の告知で、Amazon Bedrock AgentCoreを東京を含む9つのAWSリージョンで使えるとした⁠[13]。

目次へ

関係者の対応

Zenity Labsの発表によると、開示の後、AWSはAgentCoreのデプロイでIMDSv2を既定にした⁠[1]。Zenity Labsは試験で、既定の実行ロールの権限が縮小されたことを確かめた⁠[1]。外れた権限には、他のエージェントの呼び出し、非公開の会話の読み取り、Secrets Managerのシークレットへのアクセスを許すものが含まれる⁠[1]。Zenityは概説の記事で、記事に書いたセキュリティ上の問題はすべてAWSのセキュリティチームが修正し、根本の問題にも対処したと記した⁠[2]。

AWSは、Zenityの記事に載った声明で、記述された挙動は文書化された想定どおりのものだと説明した⁠[2]。AgentCoreのエージェントは、メタデータサービスを通じて自らの実行ロールの認証情報にアクセスできるとした⁠[2]。別のAWSアカウントのリソースに届くのは、開発者がエージェントの実行ロールと対象のリソースの両方で明示的に権限を与えたときだけだと述べた⁠[2]。実行ロールにはエージェントに要る権限だけを与えるよう、顧客に推奨した⁠[2]。

AWSの開発者ガイドでは、6月30日からエージェントの実行環境はMMDSv2を有効にしなければならない⁠[11]。有効でない実行環境は呼び出せず、ValidationExceptionを返す⁠[11]。AgentCore CLIが作る実行ロールは、既定でアカウント内の全基盤モデルと推論プロファイルの呼び出しを許す⁠[11]。ガイドは、本番では最小権限の実行ロールを作るよう求めている⁠[11]。

ZenityはTHE DECODERへの声明で、脆弱性はアカウントの境界を越えておらず、完全に緩和されたと述べた⁠[8]。AgentCoreのエージェントを脆弱にした設定の誤りと安全でない既定値の修正について、AWSに謝意を示した⁠[8]。

The Next Webは、Zenityの開示にCVE識別子は含まれないと報じた⁠[7]。

目次へ

未公表の事項

  • AWSが既定の実行ロールを改めた日
  • 変更前に作った既存の実行ロールへの変更の適用の有無
  • 変更前の既定のロールで動いていたエージェントと顧客の数
  • AWSから既存の顧客への通知の有無
  • 研究者の試験の外での実際の悪用の有無

注

  • 〔注1〕Zenity Labsの試験の記事は、本文の一文で結果を2025年12月17日にAWSへ報告したと記し、同じ記事の時系列では12月25日としている⁠[3]。
  • 〔注2〕AWSの回答をZenity Labsが伝えた記事は「IMDSv2」と書き、開発元の文書は「MMDSv2」と書く⁠[2、11]。

出典

調査・観測

報道機関

背景資料

更新記録

  • 2026年10月12日:公開した。

目次へ