
Proof-of-Concept-Exploit für CVE-2026-50338: Ausstellerübergreifende Authentifizierungsumgehung in Spring Cloud Azure B2C-Ressourcenservern. Demonstriert Token-Fälschung über AAD-App-Registrierung, um auf geschützte B2C-Endpunkte zuzugreifen.
Spring Cloud Azure B2C Resource Server Cross-Issuer Authentifizierungsumgehung
AadB2cResourceServerAutoConfiguration in spring-cloud-azure-autoconfigure
erstellt einen JwtDecoder, der sechs AAD-ähnlichen Ausstellern vertraut
(login.microsoftonline.com, sts.windows.net, sts.chinacloudapi.cn, v1 und
v2 jeweils), die von AadTrustedIssuerRepository über
AadB2cTrustedIssuerRepository.java:30 vererbt werden. Es installiert keinen
tid-Claim-Validator, und das aud-Prädikat verwendet containsAll (bei
leeren Zielgruppen trivialerweise wahr).
Ein Angreifer mit einer AAD-App-Registrierung im selben Mandanten erstellt ein
client_credentials-Token, dessen iss https://sts.windows.net/<tenant>/
und dessen aud mit der Client-ID der B2C-App übereinstimmt. Der B2C-
Ressourcenserver akzeptiert es, weil der AAD-Aussteller in seiner vertrauenswürdigen
Liste enthalten ist und keine weitere Claim-Validierung das systemübergreifende
Token ablehnt.
Dies ist das B2C-Gegenstück zu CVE-2026-33117 (AAD-Ressourcenserver). PR #49033 hat den AAD-Pfad korrigiert; der B2C-Pfad wurde bis PR #49252 (gemergt am 2026-06-02, veröffentlicht im Juli-2026-Sicherheitsupdate) nicht angefasst.
Mit tenant-id=common wird jedes Token aus jedem Entra-Mandanten akzeptiert.
Betroffen: spring-cloud-azure-starter-active-directory-b2c <= 5.19.0.
Behoben im Juli-2026-Sicherheitsupdate
(PR #49252).
pip install msal requests
# Gegen einen anfälligen Spring Boot B2C-Ressourcenserver:
python3 poc.py \
--target http://localhost:8080/profile \
--tenant-id <TENANT_ID> \
--client-id <ATTACKER_APP_CLIENT_ID> \
--client-secret <ATTACKER_APP_SECRET> \
--victim-api <B2C_APP_CLIENT_ID>
# Ohne MSAL (roher HTTP-Token-Abruf):
python3 poc.py \
--target http://localhost:8080/profile \
--tenant-id <TENANT_ID> \
--client-id <ATTACKER_APP_CLIENT_ID> \
--client-secret <ATTACKER_APP_SECRET> \
--victim-api <B2C_APP_CLIENT_ID> \
--no-msal
# Ausführliche Ausgabe (vollständige Token-Claims und Antwort):
python3 poc.py ... -v
Die Angreifer-App-Registrierung benötigt:
msal, requestsspring-cloud-azure-starter-active-directory-b2c
<= 5.19.0 als Ziel verwendet| Datei | Beschreibung |
|---|---|
poc.py | Python-PoC: Erstellt AAD-Token, sendet an B2C-Endpunkt, meldet Umgehung |
README.md | Schwachstellendetails und Verwendung |
LICENSE | GPLv3-Lizenz |
Dieses Projekt wird unter der GNU GPLv3 veröffentlicht.
Es wird für defensive Sicherheitsforschung, Bildung und autorisierte Tests bereitgestellt. Verwenden Sie diesen Code nicht gegen Systeme oder Dienste ohne ausdrückliche Genehmigung des Eigentümers.
Unbefugte Nutzung kann gegen geltendes Recht verstoßen. Die Autoren erteilen keine Erlaubnis zum Testen von Drittsystemen und übernehmen keine Verantwortung für Missbrauch.
Siehe die LICENSE-Datei für Garantie- und Haftungsbedingungen.