Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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」としてクローズされました。

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

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 ヘッダーに基づいてリクエストを処理します。

リクエスト操作の例:

root@kitploit:~
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 インスタンスを特定できます。

脆弱な構成のプロパティ

プロパティパス脆弱な値

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

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

root@kitploit:~
Resource Type: Microsoft.ApiManagement/service/identityProviders
Name: basic

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

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

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

Azure Resource Graph クエリ

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

root@kitploit:~
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 プロバイダーを確認するには:

root@kitploit:~
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 コマンド

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

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

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

root@kitploit:~
az apim identity-provider list --resource-group <rg-name> --service-name <apim-name> --query "[].name"

登録設定を確認する:

root@kitploit:~
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' かつ
  • identityProviders/basic リソースが存在する かつ
  • portalsettings/signup.properties.enabled == false

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

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

Google Dorks

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

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

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

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

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

root@kitploit:~
site:developer.azure-api.net inurl:/apis "Subscribe"
root@kitploit:~
site:developer.azure-api.net "API" "Products" "Subscribe"

一般的な検出:

root@kitploit:~
site:*.developer.azure-api.net
root@kitploit:~
inurl:developer.azure-api.net "Developer Portal"

Shodan

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

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

Nuclei マススキャン

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

root@kitploit:~
# 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 (ご自身のサブスクリプション用):

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

自社インスタンスの検証

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

検証スクリプトの使用:

root@kitploit:~
# Check your own instance
python apim_vuln_checker.py https://YOUR-ORG.developer.azure-api.net

# With Azure RM property checks (recommended for internal audits)
python apim_vuln_checker.py --azure -s YOUR-SUB-ID -g YOUR-RG -n YOUR-APIM-NAME

内部セキュリティ監査での Nuclei の使用:

root@kitploit:~
# Scan your organization's APIM instances
nuclei -t azure-apim-signup-bypass.yaml -u https://YOUR-ORG.developer.azure-api.net

脆弱な構成の兆候

自社インスタンスを監査する際は、次の点に注意してください:

  • 開発者ポータルに Email/パスワードフィールド付きの「サインアップ (Sign up)」が表示される (「Microsoft アカウントでサインイン」のみではない)
  • Azure Portal で Basic 認証 ID プロバイダーが構成されている
  • UI で登録が「無効」になっているが、Basic 認証プロバイダーがまだ存在する

脆弱ではない兆候:

  • 「Microsoft アカウントでサインイン」または「Azure AD」オプションのみが表示される
  • Basic 認証 ID プロバイダーが構成されていない
  • 開発者ポータルが完全に無効化されている

許可を得たペネトレーションテスト

セキュリティ専門家として許可を得たテストを実施する場合:

  1. システム所有者から書面による許可を得ていることを確認する
  2. エンゲージメントの範囲と境界を文書化する
  3. 責任ある開示 (responsible disclosure) のプラクティスに従う
  4. 発見内容は組織に報告し、公に悪用しない

責任ある開示

脆弱な第三者機関の APIM インスタンスを発見した場合:

  1. アカウントを作成したり、システムにアクセスしようとしないでください
  2. 組織のセキュリティチームに直接連絡する
  3. このアドバイザリを提供して、修正してもらう
  4. 開示前に、是正のための妥当な時間を確保する

検証スクリプト

APIM インスタンスが脆弱かどうかを確認するための Python スクリプトが提供されています。

インストール

root@kitploit:~
# Basic installation (HTTP probe only)
pip install requests colorama

# Full installation (includes Azure RM property checks)
pip install requests colorama azure-identity

使用方法

スクリプトは 2 つのモードをサポートしています:

  1. HTTP プローブ - 開発者ポータルエンドポイント経由の外部ブラックボックスチェック
  2. Azure RM チェック - Azure Resource Manager API 経由の内部プロパティチェック
root@kitploit:~
# HTTP probe (external check)
python apim_vuln_checker.py https://your-apim.developer.azure-api.net

# Azure RM property check (requires az login)
python apim_vuln_checker.py --azure -s <subscription-id> -g <resource-group> -n <apim-name>

# Combined check (both HTTP probe and Azure RM)
python apim_vuln_checker.py https://your-apim.developer.azure-api.net \
    --azure -s <subscription-id> -g <resource-group> -n <apim-name>

# Verbose output
python apim_vuln_checker.py https://your-apim.developer.azure-api.net -v

# Skip SSL verification
python apim_vuln_checker.py https://your-apim.developer.azure-api.net -k

# JSON output
python apim_vuln_checker.py https://your-apim.developer.azure-api.net --json

Azure RM プロパティチェック

--azure モードを使用すると、スクリプトは Azure Resource Manager API に直接クエリを実行して次を確認します:

プロパティ脆弱な値

Azure RM モードの前提条件:

  1. azure-identity をインストールする: pip install azure-identity
  2. Azure で認証する: az login
  3. APIM リソースへの Reader アクセス権があることを確認する

出力例

root@kitploit:~
   ___                 __              ____      
  / _ )___  __ _____  / /___ ____ __  / __ \__ __
 / _  / _ \/ // / _ \/ __/ // / // / / /_/ / // /
/____/\___/\_,_/_//_/\__/\_, /\_, /  \____/\_, / 
                        /___//___/        /___/  
    
    Author: Mihalis Haatainen, Bountyy Oy - www.bountyy.fi

======================================================================
Azure APIM Vulnerability Checker
Cross-Tenant Signup Bypass Detection
======================================================================

[?] Checking signup endpoint accessibility...
[i] Signup endpoint is accessible
[?] Checking if Basic Auth signup API is accessible...
[!] Basic Auth signup API ACTIVE (captcha validation)
[?] Checking if signup is hidden/disabled in UI...
[i] Signup page returns 404 (hidden in UI)

======================================================================
VULNERABILITY ASSESSMENT RESULTS
======================================================================

Target: https://example.developer.azure-api.net

Risk Level: CRITICAL - VULNERABLE TO SIGNUP BYPASS

Detailed Checks:

  [!] signup_ui: Signup endpoint is accessible
  [!] basic_auth_api: Basic Auth signup API ACTIVE (captcha validation)
  [+] signup_ui_hidden: Signup page returns 404 (hidden in UI)

Recommendations:

CRITICAL: SIGNUP BYPASS VULNERABILITY CONFIRMED

The Basic Auth signup API is accessible even though UI hides signup.
Attackers can register accounts by calling the API directly.

Immediate actions:
  1. DISABLE Basic Authentication in Azure Portal immediately
  2. Audit all developer portal user accounts for unauthorized signups
  3. Review user creation logs - check for API-based registrations
  4. Implement Azure AD authentication only

Nuclei テンプレート

自動スキャン用の Nuclei テンプレートが提供されています。

使用方法

root@kitploit:~
# Single target
nuclei -t azure-apim-signup-bypass.yaml -u https://target.developer.azure-api.net

# Multiple targets from file
nuclei -t azure-apim-signup-bypass.yaml -l targets.txt

# With proxy (for debugging)
nuclei -t azure-apim-signup-bypass.yaml -u https://target.developer.azure-api.net -proxy http://127.0.0.1:8080

# Skip SSL verification
nuclei -t azure-apim-signup-bypass.yaml -u https://target.developer.azure-api.net -insecure

テンプレートの詳細

  • テスト用キャプチャデータを /signup エンドポイントに POST リクエストとして送信する
  • キャプチャ/検証エラーレスポンスを確認して、アクティブな登録 API を検出する
  • CVSS スコア: 6.5 (中高)
  • CWE-284: 不適切なアクセス制御 (Improper Access Control)

緩和策

直ちに実施すべき対応

  1. Azure Portal で Basic 認証 ID プロバイダーを完全に削除する:
  • APIM インスタンスに移動する
  • 開発者ポータル -> ID (Identities) に移動する
  • 「ユーザー名とパスワード」ID プロバイダーを完全に削除する
  • 注: UI で登録を無効化するだけでは不十分です
  1. 既存アカウントを監査する:
  • すべての開発者ポータルのユーザーアカウントを確認する
  • API 経由で作成されたアカウントを探す (作成タイムスタンプとパターンを確認)
  • 不正なアカウントを削除する
  1. Azure AD 認証を有効にする:
  • Azure AD を唯一の ID プロバイダーとして構成する
  • これにより、適切なテナント境界が強制される

長期的な推奨事項

  • Azure AD 認証のみを使用する
  • UI レベルの登録制限に依存しない
  • 開発者ポータルの登録アクティビティを監視する
  • ポータルのユーザーアカウントを定期的に監査する

Microsoft の対応

Microsoft Security Response Center (MSRC) には、この脆弱性について 2 回通知されました。両方のレポートは次の判断でクローズされました:

「仕様 (By design)」

MSRC は、管理者制御のバイパスとクロステナントへの影響にもかかわらず、これをセキュリティ脆弱性とは見なしていません。

ファイル

  • apim_vuln_checker.py - Python 製の脆弱性検証スクリプト
  • azure-apim-signup-bypass.yaml - 自動スキャン用の Nuclei テンプレート
  • README.md - このファイル

著者

Mihalis Haatainen
Bountyy Oy - フィンランドのペネトレーションテストおよびセキュリティリサーチ企業

  • ウェブサイト: www.bountyy.fi

ライセンス

このアドバイザリおよび関連ツールは、防御目的で公開されています。責任を持って使用してください。

MIT ライセンス - 詳細は LICENSE ファイルを参照してください。

参考資料

  • ブログ記事: 「無効」が無効を意味しない場合
  • Azure API Management ドキュメント
  • APIM 開発者ポータル概要
ツールをダウンロード
説明
properties.developerPortalStatusEnabled開発者ポータルにアクセス可能
sku.nameDeveloper、Basic、Standard、PremiumConsumption 以外のレベル (Consumption レベルはポータル機能が制限される)
条件プロパティ/リソース脆弱な値
ポータルが有効properties.developerPortalStatus== 'Enabled'
Consumption 以外の SKUsku.name!= 'Consumption'
Basic 認証が存在identityProviders/basic リソースリソースが存在する
登録が非表示 (バイパス可能)portalsettings/signup.properties.enabled== false (Basic 認証あり)
properties.developerPortalStatus== 'Enabled'
sku.name!= 'Consumption'
identityProviders/basic リソース存在する
portalsettings/signup.properties.enabled== false