Azure App Service でのサブドメインの乗っ取りの低減

サブドメインの乗っ取りは、多くのリソースを定期的に作成したり削除したりする組織に共通の脅威です。 サブドメインの乗っ取りは、プロビジョニング解除された Azure リソースを参照する DNS レコードがある場合に発生する可能性があります。 このような DNS レコードは、"未解決の DNS" エントリとも呼ばれます。 サブドメインの乗っ取りが発生すると、悪意のあるアクターが悪意のあるアクティビティを実行しているサイトに、組織のドメイン向けのトラフィックをリダイレクトできるようになります。

サブドメインの乗っ取りのリスクには、次のようなものがあります。

  • サブドメインのコンテンツに対する制御の喪失
  • 疑いを持たない訪問者からの Cookie の収集
  • フィッシング キャンペーン
  • XSS、CSRF、CORS バイパスなどの従来の攻撃に対するさらなるリスク

サブドメインの乗っ取りの詳細については、未解決の DNS とサブドメインの乗っ取りに関するページを参照してください。

Azure App Service は、サブドメインの乗っ取りを防ぐために、名前の予約サービスドメイン確認トークンを提供します。

App Service でサブドメインの乗っ取りを防止する方法

App Service アプリまたは App Service Environment (ASE) を削除すると、最初に DNS を所有していたサブスクリプションのテナントに属するサブスクリプションを除き、対応する DNS の即時再利用は禁止されます。 そのため、ユーザーには、その DNS への関連付け/ポインターをクリーンアップする、または同じ名前でリソースを再作成して Azure で DNS を再要求する時間が与えられます。 この動作は、Azure App Service で "*.azurewebsites.net" リソースと "*.appserviceenvironment.net" リソースについて既定で有効になっているため、ユーザーによる構成は必要ありません。

サンプル シナリオ

テナント 'AB' に属するサブスクリプションは、サブスクリプション 'A' とサブスクリプション 'B' のみです。 サブスクリプション 'A' には、DNS 名 'test'.azurewebsites.net' を持つ App Service Web アプリ 'test' が含まれています。 アプリを削除したときに、サブスクリプション 'A' またはサブスクリプション 'B' のみが、'test' という名前の Web アプリを作成することで DNS 名 'test.azurewebsites.net' をすぐに再利用できます。 他のサブスクリプションでは、リソースの削除直後にこの名前を要求することはできません。

サブドメインの乗っ取りを防止する方法

Azure App Service の DNS エントリを作成する場合は、Domain Verification ID を持つ asuid.{subdomain} TXT レコードを作成します。 このような TXT レコードが存在するとき、他の Azure サブスクリプションは、トークンの検証 ID を DNS エントリに追加しない限り、カスタム ドメインの検証、つまり乗っ取りを実行できません。

これらのレコードにより、CNAME エントリから同じ名前を使用して別の App Service アプリが作成されることがなくなります。 ドメイン名の所有権を証明することができない脅威アクターが、トラフィックを受信したりコンテンツを制御したりすることはできません。

削除から再作成までの間に悪意のあるユーザーがドメインを乗っ取ることができないように、サイトの削除前に DNS レコードを更新する必要があります。

ドメイン検証 ID を取得するには、カスタム ドメインのマップに関するチュートリアルを参照してください