Verhindern von Unterdomänenübernahmen in Azure App Service

Unterdomänenübernahmen sind eine häufige Bedrohung für Organisationen, die regelmäßig viele Ressourcen erstellen und löschen. Eine Unterdomänenübernahme kann auftreten, wenn Sie über einen DNS-Eintrag verfügen, der auf eine nicht bereitgestellte Azure-Ressource verweist. Solche DNS-Einträge werden auch als "dangling DNS"-Einträge bezeichnet. Unterdomänenübernahmen ermöglichen böswilligen Akteuren das Umleiten von Datenverkehr, der für die Domäne einer Organisation vorgesehen ist, auf eine Website, die schädliche Aktivitäten ausführt.

Zu den Risiken der Subdomänenübernahme gehören:

  • Verlust der Kontrolle über den Inhalt der Unterdomäne
  • Cookie-Ernte von nichts ahnenden Besuchern
  • Phishingkampagnen
  • Weitere Risiken klassischer Angriffe wie XSS, CSRF oder CORS Bypass

Weitere Informationen zur Übernahme von Unterdomänen finden Sie unter Verhindern von abhängigen DNS-Einträgen und Vermeidung der Übernahme von Unterdomänen.

Azure App Service stellt name reservation, domain verification tokens und secure unique default hostnames bereit, um Unterdomänenübernahmen zu verhindern.

Die effektivste Möglichkeit, Ihre App Service-Ressourcen vor einer Subdomain-Übernahme zu schützen, besteht darin, sichere, eindeutige Standardhostnamen zu verwenden. Dieses Feature ist allgemein für Web-Apps, Funktions-Apps und Logik-Apps (Standard) verfügbar.

Wenn Sie sichere eindeutige Standardhostnamen aktivieren, empfängt Ihre App einen Standardhostnamen, der einen zufälligen Hash und einen Regionsbezeichner enthält, wodurch sie für Ihre Organisation eindeutig ist. Mit diesem Format wird sichergestellt, dass niemand außerhalb Ihrer Organisation eine Ressource mit demselben Standard-Hostname anlegen kann, wodurch das Risiko einer Übernahme von Subdomains durch verwaiste DNS-Einträge ausgeschlossen wird.

So funktioniert es

Herkömmliche App Service-Ressourcen verwenden ein standardmäßiges Hostnamenformat, das global vorhersehbar ist:

Global (Original) Eindeutig (neu)
Standardhostname <AppName>.azurewebsites.net <AppName>-<Hash>.<Region>.azurewebsites.net
SCM-Endpunkt <AppName>.scm.azurewebsites.net <AppName>-<Hash>.scm.<Region>.azurewebsites.net

Eine in Ost-USA bereitgestellte Web-App contoso kann z. B. Folgendes erhalten:

contoso-a6gqaeashthkhkeu.eastus-01.azurewebsites.net

Der 16-stellige Hash ist innerhalb eines konfigurierbaren Bereichs deterministisch, sodass Sie bei Bedarf konsistente Hostnamen in allen Umgebungen sicherstellen können.

Hashbereichsoptionen

Wenn Sie eine Ressource mit einem eindeutigen Standardhostnamen erstellen, wählen Sie einen Bereich aus, der bestimmt, wie der Hash generiert wird:

Geltungsbereich Description
Mandanten-Wiederverwendung Derselbe Hash für denselben App-Namen in allen Abonnements in Ihrem Microsoft Entra Mandanten. Verwenden Sie dieses Verfahren, wenn Sie Ressourcen über Abonnements hinweg innerhalb desselben Mandanten erneut bereitstellen.
Wiederverwendung von Abonnements Derselbe Hash für denselben App-Namen innerhalb desselben Abonnements.
Ressourcengruppenwiederverwendung Derselbe Hash für denselben App-Namen innerhalb derselben Ressourcengruppe.
Keine Wiederverwendung Jedes Mal ein eindeutiger Hash. Maximale Isolation.

Tip

Wenn Sie Ressourcen in umgebungenübergreifend regelmäßig erneut bereitstellen (z. B. von einem Testabonnement zu einem Produktionsabonnement unter demselben Mandanten), verwenden Sie die Mandantenwiederverwendung , um sicherzustellen, dass Ihre Hostnamen über Abonnements hinweg konsistent bleiben.

Bereitstellungsslots

Bereitstellungsslots haben dasselbe Format wie die Produktionssite, aber jeder Slot erhält einen eigenen Hash:

Standardhostname Slot-Hostname
Format <AppName>-<Hash>.<Region>.azurewebsites.net <AppName>-<SlotName>-<Hash>.<Region>.azurewebsites.net

Slots werden immer mit demselben Bereich erstellt wie der Produktionsstandort.

So aktivieren Sie

Sie können sichere, eindeutige Standardhostnamen beim Erstellen einer neuen Ressource über das Azure-Portal, die Azure CLI, ARM-Vorlagen oder die REST-API aktivieren. Das Feature kann nur während der Ressourcenerstellung aktiviert werden – es kann nicht rückwirkend auf vorhandene Ressourcen angewendet werden.

Verwenden Sie den --domain-name-scope Parameter beim Erstellen einer neuen Ressource, um sichere eindeutige Standardhostnamen zu aktivieren.

Ressourcentyp Befehl Referenz
Web-Anwendungen az webapp create --name <AppName> --resource-group <ResourceGroup> --plan <AppServicePlan> --domain-name-scope TenantReuse az webapp create
Function Apps az functionapp create --name <AppName> --resource-group <ResourceGroup> --storage-account <StorageAccount> --consumption-plan-location <Region> --domain-name-scope TenantReuse az functionapp create
Logic Apps (Standard) az logicapp create --name <AppName> --resource-group <ResourceGroup> --storage-account <StorageAccount> --domain-name-scope TenantReuse az logicapp create

Der --domain-name-scope Parameter akzeptiert die folgenden Werte: NoReuse, ResourceGroupReuse, SubscriptionReuse, . TenantReuse

Migrieren vorhandener Ressourcen

Da dieses Feature zur Erstellungszeit nur aktiviert werden kann, haben Sie zwei Optionen für vorhandene Ressourcen:

  • Klonen Sie eine bestehende App in eine neue App bei aktivierten sicheren, eindeutigen Standardhostnamen.
  • Wiederherstellung aus einer Sicherung zu einer neuen App mit aktivierten sicheren und eindeutigen Standard-Hostnames.

Beide Optionen stehen im Azure-Portal zur Verfügung.

Warum dies jetzt angenommen wird

Sichere, eindeutige Standard-Hostnamen bieten Schutz standardmäßig. Im Gegensatz zu anderen Gegenmaßnahmen, die laufende DNS-Hygiene und manuelle Eingriffe erfordern, erstellt dieser Ansatz die Sicherheit direkt in der Hostnamenstruktur. Wenn aktiviert:

  • Kein externer Akteur kann Ihren Standardhostnamen neu erstellen.
  • Dangling-DNS-Einträge können nicht für die Unterdomänenübernahme ausgenutzt werden.
  • Es sind keine zusätzlichen Konfigurationsschritte erforderlich, die über die Aktivierung des Features zur Erstellungszeit hinausgehen.

Wir empfehlen dringend, sichere, eindeutige Standardhostnamen für alle neuen App Service-Bereitstellungen zu aktivieren.

Note

Der Regionsbezeichner im Hostnamen (z. B eastus-01. ) kann für zukünftige Bereitstellungen unterschiedliche Nummernsuffixe verwenden. Verlassen Sie sich nicht fest auf die genaue Kombination aus Region und Nummer.

Wie App Service Unterdomänenübernahmen verhindert

Nach dem Löschen einer App Service App oder App Service-Umgebung (ASE) darf der entsprechende DNS nicht mehr verwendet werden, außer von Abonnements, die zu dem Mandanten des Abonnements gehören, dem der DNS ursprünglich gehörte. Daher hat der Kunde einige Zeit, um entweder Zuordnungen oder Zeiger auf die angegebene DNS zu bereinigen oder die DNS in Azure zurückzufordern, indem er die Ressource mit demselben Namen neu erstellt. Dieses Verhalten ist standardmäßig für Azure App Service für *.azurewebsites.net und *.appserviceenvironment.net Ressourcen aktiviert, sodass keine Kundenkonfiguration erforderlich ist.

Beispielszenario

Abonnement A und Abonnement B sind die einzigen Abonnements, die zu Mandant AB gehören. Abonnement A enthält eine App Service-Web-App test mit dem DNS-Namen test.azurewebsites.net. Beim Löschen der App können nur Abonnements A oder B den DNS-Namen test.azurewebsites.net sofort wiederverwenden, indem eine Web-App namens Test erstellt wird. Es dürfen keine anderen Abonnements direkt nach dem Löschen der Ressource den Namen beanspruchen.

Wie Sie Subdomänenübernahmen verhindern können

Erstellen Sie beim Erstellen von DNS-Einträgen für Azure App Service eine asuid.{ subdomain} TXT-Eintrag mit der Domänenüberprüfungs-ID. Wenn ein solcher TXT-Eintrag vorhanden ist, kann kein anderes Azure-Abonnement die benutzerdefinierte Domäne überprüfen oder übernehmen, es sei denn, sie fügen der DNS-Einträge ihre Tokenüberprüfungs-ID hinzu.

Diese Datensätze verhindern die Erstellung einer anderen App Service-App mit demselben Namen aus Ihrem CNAME-Eintrag. Ohne die Möglichkeit, den Besitz des Domänennamens zu beweisen, können Bedrohungsakteure keinen Datenverkehr empfangen oder den Inhalt steuern.

DNS-Einträge sollten vor dem Löschen der Website aktualisiert werden, um sicherzustellen, dass schlechte Akteure die Domäne zwischen dem Löschzeitraum und der erneuten Erstellung nicht übernehmen können.

Informationen zum Abrufen einer Domänenüberprüfungs-ID finden Sie unter Einrichten einer vorhandenen benutzerdefinierten Domäne in Azure App Service.