マルチエージェント攻撃ツールはあらゆる手を尽くす

翻訳者:
板倉景子

29 9月 2025 読了目安時間: ~

エグゼクティブサマリー

ARTEX や Cairn といったマルチエージェント型のオフェンシブセキュリティフレームワークは、標的組織への侵入経路を特定する任務を与えられると、あらゆる手を尽くして徹底的に調べ上げます(leave no stone unturned)。

ここ数か月間、Oktaでは、標的に対して受動的および能動的な偵察を実行するエージェントの爆発的な増加を観測しています。攻撃者がエージェントに対し、標的テナントのサインアップ、サインイン、アカウント復旧エンドポイントに対して既知のユーザー名のリストを総当たりで試行させ、ユーザーがどこでどのように認証を行っているかをエージェントに学習させている様子が確認されています。利用可能な場合、エージェントは不正な調査用アカウント(probe accounts)を登録し、これらの認証フローに潜在的な設定不備がないかテストします。エージェントは執拗であり、これらの一連の攻撃において調査されない(unprobed)フローは一つも残されません。

設定ミスは今やはるかに発見されやすくなっています。過剰なスコープが付与されたトークン、ワイルドカードが使われたコールバックURL、強度の低いグラントタイプ(grant types)、署名検証の欠如などを、エージェントは迅速に特定して悪用します。これらのマルチエージェントフレームワークは、脅威アクターがトークン費用を支払い続ける限り稼働し続けることが可能です。ワーカーエージェントがこれらのテストを390時間以上にわたって継続実行した攻撃事例も観測されています。

このような能動的な偵察の急増を受け、すべての組織はエージェントが発見・悪用する前にクライアントの設定ミスを特定し、修復することが求められます。これらを支援するために、後述の通り様々なツールが利用可能です。組織は、アイデンティティ管理に Okta を利用しているサードパーティアプリケーションと、機微な操作に使用されるファーストパーティクライアントアプリケーションの双方を監査する必要があります。Okta Workflows は、管理 API に対する特権操作を実行できる権限およびスコープを持つファーストパーティクライアントアプリケーションであるため、保護の優先順位が非常に高くなります。

Workflows:調査されないフローは一つもない

アイデンティティチームは、オンボーディング、オフボーディング、アクセス申請、通知の自動化や、HR、ITSM、セキュリティツールとの連携のために、Workflows、Auth0 Actions、サードパーティの代替ソリューションといったノーコード/ローコードツールへの依存度をますます高めています。これらの自動化処理は多くの場合、大きな特権を持って実行され、オプションとして HTTP リクエスト経由でアプリケーション境界の外部から呼び出すことも可能です。エージェントがあらゆる可能なフローを探索している現在の脅威環境を踏まえ、防御側は自動化処理が機微な情報の意図しない流出を招く可能性について考慮する必要があります。以下に、Workflows を強固に保護するための主要な検討事項を挙げます。

 

呼び出しURL(Invoke URLs)の厳格な保護

呼び出しURL(Invoke URL)は、Workflows 管理者が「API endpoint」カードを使用して外部クライアント経由でトリガー(「呼び出し」)できるフローを設定した際に生成されます。呼び出しURLは OAuth 2.0 またはクライアントシークレットを使用して保護できますが、管理者はオプションとしてセキュリティレベルに「None (public service)」(なし/パブリックサービス)を選択することも可能です。これが選択されると、呼び出しURLにアクセスできる人物であれば誰でも、認証されていない状態であってもフローを実行し、その出力を閲覧することができてしまいます。Okta は Workflows コンソールにおいて、このオプションのリスクについて次のような警告を表示しています。

「このフローは、URLにアクセスできるあらゆる人物またはサービスによって実行可能です。本番環境のフローには別のセキュリティオプションを使用することを推奨します。」

この警告が表示される理由は、呼び出しURLが外部クライアントからトリガーされるよう設計されているためです。フローのセキュリティは、それを利用するように構成されたクライアントの保護と、そのURLへのアクセス方法の保護の両方に依存します。たとえば、呼び出しURLがチケットやチャット上で共有されたり、クリップボードにコピーされたり、ブラウザの履歴やクライアントアプリケーションのログに記録されたりする可能性があります。

認証を要求しない、パブリックに露出した呼び出しURLにアクセスした攻撃者は、それを利用してフローを呼び出す(「実行する」)ことができます。一部のユースケースでは、フローの呼び出し自体はリスクをもたらさない場合もあります。OAuth 2.0 もクライアントシークレットもサポートしていないツールの Webhook など、リクエストの送信はできても認証が行えないシステムが存在し、パブリックな呼び出しURLがフローへ到達する唯一の手段である場合などです。公開登録フォームも一例であり、アカウントを持たない人を含む誰もが送信できなければならないためです。機微でない読み取り専用のデータのみを返し、意味のある権限を持つコネクションを使用していないフローも、パブリックであってもリスクはほとんどありません。フローの呼び出しが危険になるのは、それがアイデンティティデータを変更する場合や、クライアント出力に機微なデータを返す場合です。したがって管理者は、パブリックな呼び出しURLを持つ各フローが何にアクセスできるのかを注意深く確認する必要があります。

管理者には以下の対応を推奨します。

  • アイデンティティデータにアクセスする、または特権アクションを実行するすべてのフローに対して「Secure with OAuth 2.0」を選択すること。

  • 「None (public service)」は、十分にレビューされ、機微なデータへのアクセスや特権アクションが存在しないことが確認されたフローのみに限定すること。

URLからクライアントトークンを排除する

クライアントトークン(Client Secret 等)をクエリパラメータなどとして URL 自体に含める設定は避けてください。URL は Web サーバーのアクセスログ、プロキシログ、ブラウザ履歴、通信経路上に平文で記録・キャッシュされやすく、漏洩のリスクが跳ね上がります。認証情報は常に HTTP ヘッダー(Authorization ヘッダー等)などのセキュアな伝送経路を介して渡す構成にしてください。

コンソールアクセスに最小権限の原則を適用する

Workflows 管理コンソールへのアクセス権は、必要不可欠な担当者のみに限定して付与してください。不要な特権を持つアカウントが存在すると、アカウント侵害が発生した際の影響範囲が広範囲に及びます。ロールベースアクセス制御(RBAC)を徹底し、管理権限を最小限に絞り込みます。

コネクションに最小権限の原則を適用する

各フローが Okta やサードパーティサービスと通信するために使用する「コネクション(接続)」には、そのタスクの達成に必要な最小限のスコープおよび権限のみを付与してください。広範な管理者権限を持つ汎用コネクションを複数のフローで使い回すことは避け、特定の操作に限定した最小権限のコネクションを設計・適用することが重要です。

入力されるものを検証し、出力されるものを最小限に抑える

外部から入力されるパラメータに対しては厳格なスキーマ検証やバリデーションを実施し、予期しない値や悪意あるペイロードが後続の処理に渡らないようにしてください。また、呼び出し元へのレスポンス(クライアント出力)には必要最小限の情報のみを含め、内部構成情報、デバッグ情報、機微なユーザープロファイル情報などが返却されないよう厳格にフィルタリングしてください。

カード、テーブル、実行履歴からシークレットを排除する

API キー、トークン、パスワードといった機密情報(シークレット)を、フロー内のカード上の静的テキストや、Workflows 内のテーブル、実行履歴ログに直接ハードコードしたり平文で残したりしないでください。資格情報管理ストアやセキュアなコネクション設定を活用し、実行履歴の保持ポリシーやログ出力内容を定期的に点検して、シークレットが痕跡として露出することを防ぐ必要があります。

 

結論

自律型・マルチエージェント型の攻撃ツールが普及した現代においては、「気づかれないだろう」という前提に基づくセキュリティ対策は通用しません。エージェントは昼夜を問わずあらゆるエンドポイントやフローを探索し、設定の不備を突き止めます。自動化ツールや認証フローの設計・運用において最小権限の原則と厳格なアクセス制御を徹底し、攻撃エージェントに先んじて自組織の構成を点検・堅牢化することが不可欠です。

 

領域 / 項目リスク課題推奨される対策ベストプラクティス
呼び出しURL(Invoke URLs)認証なし(None / public service)に設定されている場合、URLを知る攻撃者にフローを勝手に実行されたり、機微な出力を窃取されたりする。
  • アイデンティティデータの変更や特権アクションを伴うフローは、必ず OAuth 2.0 で保護する。
  • 認証不要設定は、機微なデータへのアクセスが一切ない検証済みフローのみに限定する。
URL内のトークン(Client Tokens)クエリパラメータにトークンを含めると、Webサーバーログ、プロキシログ、ブラウザ履歴に平文で記録・漏洩する。
  • トークンやシークレットをURL(クエリ文字列)に埋め込まず、HTTP Authorization ヘッダー などのセキュアな経路で渡す。
コンソールアクセス(Console Access)不要な管理権限を持つユーザーが存在すると、アカウント侵害時の影響が組織全体に拡大する。
  • Workflows 管理コンソールへのアクセスに 最小権限の原則(Least Privilege) を適用し、必要な担当者のみにロールベースで権限を付与する。
コネクション(Connections)フロー内で使用する接続設定に過剰な権限(特権スコープ)が付与されていると、フロー悪用時の被害が甚大になる。
  • 各連携先(Okta APIやサードパーティSaaS)に対する接続には、タスク実行に 真に必要な最小限のスコープ のみを割り当てる。
入力検証と出力制限(Inputs & Outputs)外部からの不正なペイロードの混入や、レスポンスを通じた内部構成情報・機微データの不用意な漏洩。
  • 入力値に対して厳格なスキーマ検証・バリデーションを実施する。  
  • クライアントへ返却する出力データは必要最小限に絞り込み、フィルタリングを徹底する。
シークレット管理(Secrets & Logs)APIキーやパスワードがカード内、テーブル内、実行ログ(Execution History)に平文で残り、露出する。
  • カードやテーブルに直接シークレットをハードコードしない。  
  • 資格情報ストアを使用し、ログの保持ポリシーや出力内容を見直して機密情報の残留を防ぐ。

アイデンティティ施策を推進