
Sicherheitshinweis: Das Azure APIM Developer Portal ermöglicht die Registrierung von Konten über Mandantengrenzen hinweg, indem UI-Anmeldebeschränkungen umgangen werden. Zweimal an MSRC gemeldet - als „by design“ geschlossen.
Status (01.12.2025): Diese Schwachstelle ist weiterhin aktiv und ausnutzbar. Microsoft hat dieses Problem nicht behoben und betrachtet es als „by design“.
Eine Sicherheitslücke im Azure API Management (APIM)-Entwicklerportal ermöglicht es Angreifern, sich auf jeder APIM-Instanz mit aktivierter Basisauthentifizierung zu registrieren, selbst wenn Administratoren die Benutzerregistrierung in der Portaloberfläche deaktiviert haben.
Dieser Bypass ermöglicht die mandantenübergreifende Erstellung von Konten und kann unbefugten Zugriff auf API-Dokumentation, Abonnementschlüssel und andere über das Entwicklerportal bereitgestellte Ressourcen ermöglichen.
| Date | Action |
|---|---|
| 2025-09-30 | Schwachstelle entdeckt |
| 2025-09-30 | Erster Bericht an MSRC übermittelt |
| 2025-10-30 | MSRC-Antwort: Als „keine Schwachstelle“ geschlossen |
| 2025-11-01 | Zweiter Bericht an MSRC mit zusätzlichen Details |
| 2025-11-20 | MSRC-Antwort: Als „by design“ geschlossen |
| 2025-11-20 | An CERT-FI gemeldet |
| 2025-11-26 | Öffentliche Offenlegung |
| 2025-11-27 | CVE bei MITRE beantragt |
| 2026-07-09 | CVE-2025-66390 von MITRE TL-Root/CNA-LR zugewiesen |
Wenn Azure APIM für das Entwicklerportal mit Basisauthentifizierung konfiguriert ist, können Administratoren die Benutzerregistrierung über die Azure-Portaloberfläche deaktivieren. Dies blendet jedoch lediglich das Registrierungsformular in der Portaloberfläche aus.
Der zugrunde liegende Signup-API-Endpunkt bleibt aktiv und nimmt Registrierungsanfragen direkt entgegen, wodurch die UI-Beschränkung vollständig umgangen wird.
Zwei Probleme zusammen erzeugen diese Schwachstelle:
Der Angriff erfordert zwei APIM-Instanzen:
Schritte:
Host-Header von seiner Instanz auf die ZielinstanzWichtigstes technisches Detail: Der mandantenübergreifende Bypass funktioniert durch Manipulation des Host-Headers in der Signup-POST-Anfrage. Der /signup-Endpunkt verarbeitet Anfragen anhand des Host-Headers, ohne Mandantengrenzen zu validieren.
Beispiel für eine Anfragenmanipulation:
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]",...}}
Das Kernproblem: Das Deaktivieren der Registrierung in der UI deaktiviert die zugrunde liegende API nicht. Der API-Endpunkt akzeptiert mandantenübergreifende Anfragen basierend auf dem Host-Header.
Ihre APIM-Instanz ist verwundbar, wenn:
Ihre APIM-Instanz ist NICHT verwundbar, wenn:
Kernpunkt: Das Deaktivieren der Registrierung in der Azure-Portaloberfläche reicht NICHT aus. Der Identitätsanbieter für die Basisauthentifizierung muss vollständig entfernt werden, um den mandantenübergreifenden Registrierungs-Bypass zu verhindern.
Verwenden Sie diese Eigenschaftswerte, um verwundbare APIM-Instanzen über Azure Resource Graph, ARM-Vorlagen oder Azure Policy zu identifizieren.
| Property Path | Vulnerable Value | Description |
|---|---|---|
properties.developerPortalStatus | Enabled | Entwicklerportal ist erreichbar |
sku.name | Developer, Basic, Standard, Premium | Nicht-Consumption-Tarife (der Consumption-Tarif bietet nur eingeschränkte Portalfunktionen) |
Der Identitätsanbieter für die Basisauthentifizierung ist eine separate Ressource unter der APIM-Instanz:
Resource Type: Microsoft.ApiManagement/service/identityProviders
Name: basic
Verwundbar, wenn vorhanden: Das Vorhandensein einer basic-Identitätsanbieter-Ressource zeigt an, dass die Basisauthentifizierung konfiguriert ist.
Resource Type: Microsoft.ApiManagement/service/portalsettings/signup
Property: properties.enabled
| Property | Value | Meaning |
|---|---|---|
properties.enabled | true | Registrierung in UI sichtbar |
properties.enabled | false | Registrierung in UI ausgeblendet (API funktioniert weiterhin, wenn Basisauthentifizierung vorhanden ist!) |
Verwenden Sie diese Abfrage, um potenziell verwundbare APIM-Instanzen zu finden:
resources
| where type == "microsoft.apimanagement/service"
| where properties.developerPortalStatus == "Enabled"
| where sku.name != "Consumption"
| project name, resourceGroup, subscriptionId, location, sku.name, properties.developerPortalStatus
So prüfen Sie Identitätsanbieter für die Basisauthentifizierung:
resources
| where type == "microsoft.apimanagement/service/identityproviders"
| where name endswith "/basic"
| project apimInstance=tostring(split(id, "/providers/Microsoft.ApiManagement/service/")[1]), resourceGroup, subscriptionId