7月16日、Steef-Jan Wiggersが「AI Agents with Cloud Credentials Are Outrunning Billing Guardrails Built for Human-Speed Mistakes」と題した記事を公開した。この記事では、クラウド認証情報を持つAIエージェントが、人間のスピードを前提に設計された課金ガードレールを突き破り、数時間で数万ドルの請求を発生させる事例について詳しく紹介されている。
月15ドルの請求が1日で1.4万ドルに
月々の AWS 請求が10〜15ドル程度だった3人規模のエージェンシーが、ある日突然1万4,000ドルの請求を受けた。静的なアクセスキーが漏洩し、Amazon Bedrock 上でClaudeモデルの呼び出しが大量に実行されたのが原因だ。
AWSコンサルタントのTobias Schmidtが LinkedIn で詳細を公開している。被害を拡大させた要因は2つあった。まず、漏洩したキーに Bedrock Full Access の権限が付与されていたこと。そして、AWS が2025年にモデルアクセスのトグルを廃止し、すべてのモデルがデフォルトで有効になっていたことだ。本来このアプリはHaikuモデルのみを使う設計で、想定請求額は100ドル未満だった。
ポートスキャンに m8g.12xlarge を5台投入したエージェント
より詳細に記録されているのが、2025年5月の「DN42インシデント」だ。ネットワークエンジニアのLan Tianが記事にまとめている。
DN42とは、ホビイストが BGP(Border Gateway Protocol)を学ぶための仮想的なネットワークコミュニティで、参加ノードの多くは月5ドル程度の小さな VPS で動いている。あるオペレーターがこのネットワークへのポートスキャンを自律型エージェントに依頼した際、フルの AWS アクセス権と期限だけを渡した。
エージェントが下した判断は、48 vCPU・22.5 Gbps の帯域を持つ m8g.12xlarge インスタンスを5台、さらにロードバランサーとLambdaを追加して「20Gbpsの冗長スキャン環境」を構築するというものだった。さらにCloudFormationテンプレートを繰り返し適用し、スタックを重複展開し続けた。
オペレーターが気づいたのは1日後、クレジットカードに6,531.30ドルの請求が届いた時だ。AWSとの交渉で最終的に1,894ドルまで減額されたが、コミュニティの試算では月5ドルのVPS1台で足りる作業だった。
検知が「請求書」でしか来ない構造的問題
両事例に共通するのは、異常の検知がクレジットカードからしか来なかったという点だ。
AWS の Cost Explorer は請求データを最大24時間遅延して反映する。AWS Budgets もその遅延データを評価するため、予算アラートが発火するのは金が使われた後になる。元 AWS 社員のクラウドアーキテクト Magnus Eriksson はSchmidtの投稿のコメントでこう述べている。
残念ながら、AWS のバジェットコントロールは請求が24時間遅れるため、あまり機能しない。真のカスタマーオブセッションなら、AWS は課金を少なくともセミリアルタイムにすべきだ。
Regula のソリューションアーキテクト Igor Zhdanko は、生成 AI の認証情報が従来のクラウドリソースと異なる脅威クラスだと指摘する。
暗号マイニングに盗んだキーを使う場合、攻撃者はインスタンスを立て、検知を回避し、数日かけてコンピュートを換金する必要がある。しかし Bedrock へのアクセス権があれば、盗んだキーがそのままAPIスピードで転売可能なモデル呼び出しに変換できる。インフラも不要、遅延もない。
ここで浮き彫りになるのが、AIエージェント固有の問題だ。人間がオペレーションミスを犯す場合、気づいて手を止めるまでに自然な時間的余裕が生まれる。しかしエージェントはAPIを介して秒単位・分単位でリソースをプロビジョニングし続ける。「人間速度を前提にしたガードレール」とは、この時間的余裕があることを前提に設計された仕組みだ。24時間遅延の請求アラートは人間のオペレーションであれば十分機能するが、エージェントが自律的にループし続ける状況では、アラートが届く頃にはすでに被害が確定している。コストの発生速度がガードレールの応答速度を根本的に上回っている点が、従来のクラウドセキュリティ設計では想定されていなかった。
「自律性より先にガードレール」
Schmidtが示す対策は、既存のコントロールをエージェントに権限を与える前に適用するという原則に集約される。
- SCP(サービスコントロールポリシー) でメンバーアカウントから高コストなインスタンスファミリーをブロック
- CloudTrail で
RunInstances・InvokeModel・CreateStackのイベントアラートを設定(請求ベースではなくアクション時点で検知できる) - Bedrock のアクセス権限をアプリが実際に使うモデルのみに絞る(デフォルトのFull Accessを受け入れない)
- IAM ロールまたは短命トークンを使い、静的な長期アクセスキーは使わない
- エージェントのワークロードを専用のメンバーアカウントで動かし、SCPの適用範囲を分離する
重要な指摘は、CloudTrailはAPIコールを数分以内に記録するが、そのコストが課金データに現れるのは1日後という非対称性だ。プロビジョニングイベントでアラートを張れば「アクション時点」で検知できる。課金データでアラートを張れば「請求書が来た時点」にしか気づけない。ループするエージェントにとって、この差は請求額まるごとに相当する。
DN42 コミュニティはその後、エージェントをBANし「実在の人間だけが参加できる」というルールを設けた。
詳細はAI Agents with Cloud Credentials Are Outrunning Billing Guardrails Built for Human-Speed Mistakesを参照していただきたい。