Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Azure-APIM-Cross-Tenant-Signup-Bypass — セキュリティアドバイザリ: Azure APIM Developer Portal は、UI のサインアップ制限をバイパスすることで、クロステナントのアカウント登録を許可します。MSRC に2回報告されましたが、「by design」としてクローズされました。 | Kitploit
ツール/GitHubGitHub/bountyyfi/azure-apim-cross-tenant-signup-bypass
偵察脆弱性分析ウェブアプリケーション悪用情報収集クラウドセキュリティ設定ミスAPIセキュリティ
GitHubbountyyfi/azure-apim-cross-tenant-signup-bypass

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Azure-APIM-Cross-Tenant-Signup-Bypass

セキュリティアドバイザリ: Azure APIM Developer Portal は、UI のサインアップ制限をバイパスすることで、クロステナントのアカウント登録を許可します。MSRC に2回報告されましたが、「by design」としてクローズされました。

リポジトリを見る
16323ヶ月前未レビュー

Azure APIM クロステナント登録バイパス

ステータス (2025年12月1日): この脆弱性は現在も有効であり、悪用可能です。Microsoft はこの問題を修正しておらず、「仕様 (by design)」と見なしています。

セキュリティアドバイザリ

GHSA-vcwf-73jp-r7mv

CVE-2025-66390

概要

Azure API Management (APIM) Developer Portal のセキュリティ脆弱性により、管理者がポータル UI でユーザー登録を無効にしている場合でも、Basic 認証が有効になっている任意の APIM インスタンスに攻撃者がアカウントを登録できます。

このバイパスによりクロステナントでのアカウント作成が可能になり、開発者ポータルを通じて公開されている API ドキュメント、サブスクリプションキー、その他のリソースへの不正アクセスにつながる可能性があります。

開示のタイムライン

日付対応
2025-09-30脆弱性を発見
2025-09-30MSRC に初回レポートを提出
2025-10-30MSRC の応答:「脆弱性ではない」としてクローズ
2025-11-01追加情報を添えて MSRC に 2 回目のレポートを提出
2025-11-20MSRC の応答:「仕様 (by design)」としてクローズ
2025-11-20CERT-FI に報告
2025-11-26公開開示
2025-11-27MITRE に CVE を申請
2026-07-09MITRE TL-Root/CNA-LR により CVE-2025-66390 が割り当て

脆弱性の詳細

問題

Azure APIM が開発者ポータル用に Basic 認証で構成されている場合、管理者は Azure Portal UI からユーザー登録を無効化できます。しかし、これはポータルインターフェースで登録フォームを非表示にしているだけです。

基盤となる登録 API エンドポイントはアクティブなまま残り、登録リクエストを直接受け付けるため、UI の制限を完全にバイパスします。

根本原因

次の 2 つの問題が組み合わさってこの脆弱性が生じます。

  1. UI のみの制限: 登録を無効化しても、ポータル UI のフォームが非表示になるだけです。バックエンドの登録 API はアクティブなままアクセス可能です。
  2. テナント検証の欠如: 登録 API は、リクエストが同一テナントのポータルから発信されているかを検証しません。任意の送信元からリクエストを細工して、脆弱なインスタンスに登録できます。

攻撃ベクトル

この攻撃には 2 つの APIM インスタンスが必要です。

  1. 攻撃者のインスタンス: 登録が有効な任意の APIM 開発者ポータル (または攻撃者自身の APIM インスタンス)
  2. 対象インスタンス: UI では登録が「無効」だが Basic 認証が構成されたままの被害者の APIM 開発者ポータル

手順:

  1. 攻撃者は自身の APIM 開発者ポータルの登録ページ (登録が有効なページ) にアクセスします
  2. 攻撃者は登録フォームに入力し、(Burp Suite などを使用して) リクエストを傍受します
  3. 攻撃者は Host ヘッダーを自身のインスタンスから対象インスタンスに変更します
  4. 攻撃者は変更したリクエストを送信します
  5. 管理者コンソールで登録が「無効」になっているにもかかわらず、対象インスタンスにアカウントが作成されます
  6. 攻撃者は登録ユーザーとして対象の開発者ポータルにアクセスできるようになります

主要な技術的詳細: クロステナントバイパスは、登録 POST リクエストの Host ヘッダーを操作することで機能します。/signup エンドポイントはテナント境界を検証せず、Host ヘッダーに基づいてリクエストを処理します。

リクエスト操作の例:

POST /signup HTTP/1.1
Host: target-apim.developer.azure-api.net   <-- Changed from attacker's instance
Origin: https://attacker-apim.developer.azure-api.net
Content-Type: application/json

{"challenge":{...},"signupData":{"email":"[email protected]",...}}

核心的な問題: UI で登録を無効化しても、基盤となる API は無効化されません。API エンドポイントは Host ヘッダーに基づいてクロステナントのリクエストを受け入れます。

影響

  • クロステナントでのアカウント作成 - Basic 認証が有効な任意の APIM インスタンスに登録できる
  • 管理者制御のバイパス - 登録制限が効果を発揮しない
  • API ドキュメントへのアクセス - 機密性の高い内部情報を含む可能性がある
  • API サブスクリプションキーの要求が可能 - ポータルの構成によって異なる
  • 内部ポータルの露出 - 外部の攻撃者が「内部」ポータルに登録できる

影響を受ける構成

次の場合、APIM インスタンスは脆弱です:

  • Basic 認証 ID プロバイダーが構成されている (UI で登録が「無効」の場合でも)
  • 開発者ポータルがデプロイされておりアクセス可能である

次の場合、APIM インスタンスは脆弱ではありません:

  • Basic 認証 ID プロバイダーが完全に削除されている (登録の無効化だけでは不十分)
  • Azure AD / OAuth 認証のみが構成されている
  • 開発者ポータルがデプロイされていない、または無効化されている

重要なポイント: Azure Portal UI で登録を無効化するだけでは不十分です。クロステナント登録バイパスを防ぐには、Basic 認証 ID プロバイダーを完全に削除する必要があります。

Azure リソースプロパティ

これらのプロパティ値を使用して、Azure Resource Graph、ARM テンプレート、または Azure Policy で脆弱な APIM インスタンスを特定できます。

脆弱な構成のプロパティ

プロパティパス脆弱な値説明
properties.developerPortalStatusEnabled開発者ポータルにアクセス可能
sku.nameDeveloper、Basic、Standard、PremiumConsumption 以外のレベル (Consumption レベルはポータル機能が制限される)

ID プロバイダーの確認 (サブリソース)

Basic 認証 ID プロバイダーは、APIM インスタンス配下の独立したリソースです:

Resource Type: Microsoft.ApiManagement/service/identityProviders
Name: basic

存在する場合は脆弱: basic ID プロバイダーリソースが存在することは、Basic 認証が構成されていることを示します。

ポータル登録設定 (サブリソース)

Resource Type: Microsoft.ApiManagement/service/portalsettings/signup
Property: properties.enabled
プロパティ値意味
properties.enabledtrueUI で登録が表示される
properties.enabledfalseUI で登録が非表示 (Basic 認証が存在する場合、API は引き続き動作します!)

Azure Resource Graph クエリ

このクエリを使用して、脆弱な可能性のある APIM インスタンスを検索します:

resources
| where type == "microsoft.apimanagement/service"
| where properties.developerPortalStatus == "Enabled"
| where sku.name != "Consumption"
| project name, resourceGroup, subscriptionId, location, sku.name, properties.developerPortalStatus

Basic 認証 ID プロバイダーを確認するには:

resources
| where type == "microsoft.apimanagement/service/identityproviders"
| where name endswith "/basic"
| project apimInstance=tostring(split(id, "/providers/Microsoft.ApiManagement/service/")[1]), resourceGroup, subscriptionId

Azure CLI コマンド

開発者ポータルのステータスを確認する:

az apim show --name <apim-name> --resource-group <rg-name> --query "{name:name, portalStatus:developerPortalStatus, sku:sku.name}"

ID プロバイダーの一覧を取得する ('basic' を確認):

az apim identity-provider list --resource-group <rg-name> --service-name <apim-name> --query "[].name"

登録設定を確認する:

az rest --method get --url "https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.ApiManagement/service/<apim-name>/portalsettings/signup?api-version=2022-08-01" --query "properties.enabled"

サマリーテーブル

条件プロパティ/リソース脆弱な値
ポータルが有効properties.developerPortalStatus== 'Enabled'
Consumption 以外の SKUsku.name!= 'Consumption'
Basic 認証が存在identityProviders/basic リソースリソースが存在する
登録が非表示 (バイパス可能)portalsettings/signup.properties.enabled== false (Basic 認証あり)

重大な組み合わせ: 次の場合、インスタンスは登録バイパスに対して脆弱です:

  • properties.developerPortalStatus == 'Enabled' かつ
  • identityProviders/basic リソースが存在する かつ
  • portalsettings/signup.properties.enabled == false

組織の APIM インスタンスの特定

法的免責事項: 以下の情報は、ご自身の組織の Azure APIM インスタンスを特定し保護する目的のみで提供されます。コンピューターシステムへの不正アクセスは違法です。所有しているシステム、または明示的な書面によるテスト許可を得たシステムのみをテストしてください。

Google Dorks

Basic 認証の登録があるポータルを検索 (脆弱性の可能性が最も高い):

site:developer.azure-api.net "Sign up" "Email" "Password"
site:developer.azure-api.net "Create account" "Username"
site:developer.azure-api.net inurl:/signup "register"

サインインページがあるポータルを検索 (Basic 認証が構成されている可能性を示す):

site:developer.azure-api.net "Sign in" "Email" "Password" -"Azure AD" -"Microsoft account"
site:developer.azure-api.net inurl:/signin "password"

API ドキュメントが公開されている開発者ポータルを検索:

site:developer.azure-api.net inurl:/apis "Subscribe"
site:developer.azure-api.net "API" "Products" "Subscribe"

一般的な検出:

site:*.developer.azure-api.net
inurl:developer.azure-api.net "Developer Portal"

Shodan

APIM 開発者ポータルを検索:

http.title:"Developer Portal" http.html:"azure-api.net"
ssl.cert.subject.cn:"*.developer.azure-api.net"
http.html:"developerPortal" http.html:"azure"

Nuclei マススキャン

ターゲットを発見したら、Nuclei でスキャンします:

# Save targets to file
echo "https://target1.developer.azure-api.net" > targets.txt
echo "https://target2.developer.azure-api.net" >> targets.txt

# Mass scan
nuclei -t azure-apim-signup-bypass.yaml -l targets.txt -o vulnerable.txt

組織の資産 (アセット) の検出

組織が Azure APIM を使用している場合、次の方法で自社のインスタンスを特定できます:

Azure Portal:

  • Azure Portal → すべてのリソース → 「API Management」でフィルターに移動する
  • または、前のセクションのクエリを Azure Resource Graph Explorer で使用する

Azure CLI (ご自身のサブスクリプション用):

# List all APIM instances in your subscriptions
az apim list --query "[].{name:name, resourceGroup:resourceGroup, url:developerPortalUrl}"

自社インスタンスの検証

次の方法を使用して、ご自身の組織の APIM インスタンスが脆弱かどうかを確認します:

検証スクリプトの使用:

# Check your own instance
python apim_vuln_checker.py https://YOUR-ORG.developer.azure-api.net
ツールをダウンロード