
استغلال إثبات المفهوم لثغرة CVE-2026-50338: تجاوز المصادقة عبر المصدر في خوادم الموارد Spring Cloud Azure B2C. يُظهر تزوير الرمز المميز عبر تسجيل تطبيق AAD للوصول إلى نقاط نهاية B2C المحمية.
Spring Cloud Azure B2C Resource Server تجاوز التحقق من المصادقة عبر المصدر
يقوم AadB2cResourceServerAutoConfiguration في spring-cloud-azure-autoconfigure ببناء JwtDecoder يثق بستة موثّقين من خط AAD (login.microsoftonline.com، sts.windows.net، sts.chinacloudapi.cn، كل من v1 و v2) موروثة من AadTrustedIssuerRepository عبر AadB2cTrustedIssuerRepository.java:30. لا يقوم بتثبيت مدقق لمطالبة tid، ويستخدم المسند aud containsAll (صحيح بشكل فارغ على الجماهير الفارغة).
يمكن لمهاجم لديه تسجيل تطبيق AAD في نفس المستأجر (tenant) إنشاء رمز client_credentials بحيث يكون iss هو https://sts.windows.net/<tenant>/ و aud يطابق client-id لتطبيق B2C. يقبل خادم موارد B2C هذا الرمز لأن موثّق AAD موجود في مجموعته الموثوقة ولا يوجد مزيد من التحقق من المطالبات يرفض الرمز عبر نظام الهوية المختلف.
هذا هو التوأم B2C لـ CVE-2026-33117 (خادم موارد AAD). قام PR #49033 بإصلاح مسار AAD؛ لم يتم لمس مسار B2C حتى PR #49252 (تم الدمج في 2026-06-02، وتم إصداره في تحديث أمان يوليو 2026).
مع tenant-id=common، يتم قبول أي رمز من أي مستأجر Entra.
المتأثر: spring-cloud-azure-starter-active-directory-b2c <= 5.19.0. تم الإصلاح في تحديث أمان يوليو 2026
(PR #49252).
pip install msal requests
# Against a vulnerable Spring Boot B2C resource server:
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>
# Without MSAL (raw HTTP token request):
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
# Verbose output (full token claims and response):
python3 poc.py ... -v
يحتاج تسجيل تطبيق المهاجم إلى:
msal، requestsspring-cloud-azure-starter-active-directory-b2c <= 5.19.0 كهدف| الملف | الوصف |
|---|---|
poc.py | بايثون PoC: إنشاء رمز AAD، إرساله إلى نقطة نهاية B2C، الإبلاغ عن التجاوز |
README.md | تفاصيل الثغرة وكيفية الاستخدام |
LICENSE | رخصة GPLv3 |
تم إصدار هذا المشروع تحت رخصة GNU GPLv3.
يتم توفيره لأغراض البحث الأمني الدفاعي والتعليم والاختبار المصرح به. لا تستخدم هذا الكود ضد أنظمة أو خدمات دون إذن صريح من المالك.
الاستخدام غير المصرح به قد ينتهك القانون المعمول به. لا يمنح المؤلفون الإذن لاختبار أنظمة الطرف الثالث وليسوا مسؤولين عن سوء الاستخدام.
راجع ملف LICENSE لشروط الضمان والمسؤولية.