
Avis de sécurité : le portail développeur Azure APIM permet l'enregistrement de comptes entre locataires en contournant les restrictions d'inscription de l'interface utilisateur. Signalé deux fois à MSRC - fermé comme 'by design'.
Statut (01.12.2025) : Cette vulnérabilité est toujours active et exploitable. Microsoft n'a pas corrigé ce problème et le considère comme « by design ».
Une vulnérabilité de sécurité dans le portail développeur d'Azure API Management (APIM) permet à des attaquants de créer des comptes sur n'importe quelle instance APIM qui a l'authentification de base activée, même lorsque les administrateurs ont désactivé l'inscription des utilisateurs dans l'interface utilisateur du portail.
Ce contournement permet la création de comptes inter-locataires, pouvant potentiellement autoriser un accès non autorisé à la documentation des API, aux clés d'abonnement et à d'autres ressources exposées via le portail développeur.
| Date | Action |
|---|---|
| 2025-09-30 | Vulnérabilité découverte |
| 2025-09-30 | Premier rapport soumis à MSRC |
| 2025-10-30 | Réponse MSRC : Fermé comme « pas une vulnérabilité » |
| 2025-11-01 | Deuxième rapport soumis à MSRC avec détails supplémentaires |
| 2025-11-20 | Réponse MSRC : Fermé comme « by design » |
| 2025-11-20 | Signalé à CERT-FI |
| 2025-11-26 | Divulgation publique |
| 2025-11-27 | CVE demandé auprès de MITRE |
| 2026-07-09 | CVE-2025-66390 attribué par MITRE TL-Root/CNA-LR |
Lorsque Azure APIM est configuré avec l'authentification de base pour le portail développeur, les administrateurs peuvent désactiver l'enregistrement des utilisateurs via l'interface utilisateur du portail Azure. Cependant, cela ne fait que masquer le formulaire d'inscription dans l'interface du portail.
Le point de terminaison API d'inscription sous-jacent reste actif et accepte les demandes d'enregistrement directement, contournant ainsi entièrement la restriction de l'interface utilisateur.
Deux problèmes se combinent pour créer cette vulnérabilité :
L'attaque nécessite deux instances APIM :
Étapes :
Host de son instance vers l'instance cibleDétail technique clé : Le contournement inter-locataire fonctionne en manipulant l'en-tête Host dans la demande POST d'inscription. Le point de terminaison /signup traite les demandes en fonction de l'en-tête Host sans valider les limites du locataire.
Exemple de manipulation de demande :
POST /signup HTTP/1.1
Host: target-apim.developer.azure-api.net <-- Changé depuis l'instance de l'attaquant
Origin: https://attacker-apim.developer.azure-api.net
Content-Type: application/json
{"challenge":{...},"signupData":{"email":"[email protected]",...}}
Le problème principal : désactiver l'inscription dans l'interface utilisateur ne désactive pas l'API sous-jacente. Le point de terminaison API accepte les demandes inter-locataires en fonction de l'en-tête Host.
Votre instance APIM est vulnérable si :
Votre instance APIM n'est PAS vulnérable si :
Point clé : Désactiver l'inscription dans l'interface utilisateur du portail Azure n'est PAS suffisant. Le fournisseur d'identité Authentification de base doit être complètement supprimé pour empêcher le contournement de l'inscription inter-locataire.
Utilisez ces valeurs de propriété pour identifier les instances APIM vulnérables via Azure Resource Graph, les modèles ARM ou Azure Policy.
| Propriété | Valeur vulnérable | Description |
|---|---|---|
properties.developerPortalStatus | Enabled | Le portail développeur est accessible |
sku.name | Developer, Basic, Standard, Premium | Niveaux non-Consommation (le niveau Consommation a des fonctionnalités de portail limitées) |
Le fournisseur d'identité Authentification de base est une ressource distincte sous l'instance APIM :
Resource Type: Microsoft.ApiManagement/service/identityProviders
Name: basic
Vulnérable si existe : La présence d'une ressource de fournisseur d'identité basic indique que l'authentification de base est configurée.
Resource Type: Microsoft.ApiManagement/service/portalsettings/signup
Property: properties.enabled
| Propriété | Valeur | Signification |
|---|---|---|
properties.enabled | true | Inscription visible dans l'interface utilisateur |
properties.enabled | false | Inscription masquée dans l'interface utilisateur (l'API fonctionne toujours si Auth de base existe !) |
Utilisez cette requête pour trouver les instances APIM potentiellement vulnérables :
resources
| where type == "microsoft.apimanagement/service"
| where properties.developerPortalStatus == "Enabled"
| where sku.name != "Consumption"
| project name, resourceGroup, subscriptionId, location, sku.name, properties.developerPortalStatus
Pour vérifier les fournisseurs d'identité Auth de base :