
Эксплуатирует CVE-2026-42826 для перечисления и извлечения конфиденциальных данных Azure DevOps через неаутентифицированные запросы REST API: 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-запросы при определённых условиях. Удалённый злоумышленник отправляет специально сформированные запросы к REST API Azure DevOps и получает 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, идентификаторы тенантов, идентификаторы кластеров Kubernetes) раскрываются через API.
Значения несекретных переменных видны в пользовательском интерфейсе, возвращаются 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