Статья CVE-2026-42826: Azure DevOps уязвимость - разбор вектора и цепочка атаки на CI/CD

Разорванный конверт с восковой печатью на антистатическом мате, из которого высыпаются строки токенов на прозрачном пергаменте. Сломанная печать с надписью выделена глубоким красным в десатурирован...


7 мая 2026 года Microsoft опубликовала бюллетень по CVE-2026-42826 - уязвимости Azure DevOps с максимальной оценкой 10.0 по CVSS 3.1. Десятка. За Information Disclosure. Вендор как CNA поставил максимум, NVD подтвердил. И вот тут начинается интересное: считать ли утечку секретов CI/CD-пайплайна "раскрытием информации" или полной компрометацией инфраструктуры - вопрос не академический. Разбираем вектор, маппим атаку на MITRE ATT&CK и показываем, что эта CVE-шка означает для пентеста Azure DevOps-окружений.

Бизнес-логика атаки: зачем атакующему Azure DevOps pipeline​

Azure DevOps - точка, где сходятся исходный код, секреты (PAT-токены, service connections, переменные пайплайнов), IaC-шаблоны и артефакты сборки. Компрометация такой системы - не чтение чужого кода. Это ключи от облачных подписок Azure, AWS, GCP через service connections, возможность внедрить вредоносный код в pipeline и в конечном счёте - supply chain атака на всех потребителей артефактов.

И это не теория. Компрометация системы сборки SolarWinds (2020) затронула около 18 000 организаций, получивших trojanized-обновление Orion. Утечка из Codecov (2021) привела к эксфильтрации секретов из тысяч пайплайнов. Бэкдор в PHP - результат компрометации системы управления исходным кодом. Каждый инцидент начинался с одного - с доступа к данным CI/CD.

А CVE-2026-42826 даёт этот доступ без аутентификации, без взаимодействия с пользователем, без сложных предусловий.

Технический разбор CVE-2026-42826: Azure DevOps information disclosure​

1784565341560.webp

CVSS-оценка 10.0: почему Information Disclosure получила максимальный балл​

Microsoft как CNA выставила максимальный балл 10.0, NVD подтвердил. Разбираем вектор и смотрим, что получилось бы при альтернативной оценке - если бы NVD учитывал только прямой импакт.

Microsoft (CNA) выставила вектор:

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H - 10.0 CRITICAL

Компоненты: эксплуатация через сеть (AV:N), низкая сложность (AC:L), без привилегий (PR:N), без действий пользователя (UI:N), Scope Changed - затрагивает ресурсы за пределами уязвимого компонента (S:C), полное воздействие на конфиденциальность, целостность и доступность (C:H/I:H/A:H).

Альтернативный расчёт (если учитывать только прямой импакт - чтение данных без влияния на целостность и доступность):

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - 7.5 HIGH (расчётное значение, не официальная оценка NVD)

КомпонентОфициальная оценка (CNA/NVD)Альтернативный расчётЧто означает разница
ScopeChanged (S:C)Unchanged (S:U)Официальная оценка учитывает воздействие на смежные системы
IntegrityHigh (I:H)None (I:N)Альтернативный расчёт учитывает только прямой импакт - чтение данных
AvailabilityHigh (A:H)None (A:N)Альтернативный расчёт не фиксирует влияния на доступность
Итоговый балл10.0 CRITICAL7.5 HIGH (расчётный)Разница в 2.5 балла

И NVD, и MSRC подтверждают 10.0 CRITICAL. MSRC маркирует impact-тип как "Information Disclosure" при severity "Critical" - сочетание, которое встречается редко. В практике MSRC-бюллетеней Critical + Information Disclosure - куда реже, чем Critical + RCE или EoP. Microsoft фактически говорит: утечка информации из Azure DevOps настолько опасна, что эквивалентна полной компрометации.

Для пентестера интерпретация зависит от контекста. Если Azure DevOps-организация содержит service connections с Full Access к продакшен-подписке Azure - 10.0 полностью оправдана. Если это изолированная среда разработки без привилегированных подключений - реальный импакт может быть ниже формального балла. На практике я чаще встречаю первый вариант.

CISA SSVC и EPSS: текущий статус угрозы​

CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) - широкий класс (abstraction: Class, likelihood: High), покрывающий всё от утечки stack trace до полного дампа данных. В контексте Azure DevOps "чувствительная информация" - это API-ключи в переменных пайплайна, токены service connections, содержимое репозиториев, артефакты сборки, конфигурации Kubernetes.

CISA SSVC для CVE-2026-42826:
  • Exploitation: none - активной эксплуатации не зафиксировано
  • Automatable: yes - эксплуатация автоматизируема
  • Technical Impact: total - полное техническое воздействие
  • Decision: Track - мониторить ситуацию
Сочетание "automatable: yes" и "technical impact: total" при отсутствии публичных exploit'ов - тревожный сигнал. Уязвимость готова к автоматизированной эксплуатации, публичного PoC пока нет, но при его появлении массовое сканирование станет вопросом часов.

EPSS: 0.0084 при перцентиле 0.5376 - чуть выше медианы. Вероятность эксплуатации в течение 30 дней невысокая. Но EPSS отражает вероятность массовой эксплуатации - целевые атаки он не моделирует.

Маппинг на MITRE ATT&CK показывает полную kill chain - от information disclosure до supply chain compromise:

Шаг 1: Initial Access - Exploit Public-Facing Application (T1190). Атакующий эксплуатирует CVE-2026-42826 для доступа к данным Azure DevOps. Вектор сетевой, аутентификация не нужна, сложность низкая.

Шаг 2: Credential Access - Credentials In Files (T1552.001). Раскрытая информация содержит секреты: PAT-токены, ключи service connections, переменные окружения. Атакующий собирает credentials из утечки и получает аутентифицированный доступ к Azure DevOps API.

Шаг 3: Collection - Code Repositories (T1213.003). С украденными токенами атакующий получает доступ к Git-репозиториям. Цель: исходный код, дополнительные секреты в истории коммитов (git log - ваш друг и враг одновременно), понимание архитектуры.

Шаг 4: Execution - Poisoned Pipeline Execution (T1677). Используя скомпрометированные credentials, атакующий модифицирует YAML-определения пайплайнов или подменяет скрипты в репозитории, внедряя вредоносные шаги. Каждый последующий запуск пайплайна исполняет произвольный код в контексте сборочного агента.

Шаг 5: Persistence - Cloud Accounts (T1078.004). Через скомпрометированные service connections атакующий создаёт backdoor-аккаунты в Microsoft Entra ID - устойчивый доступ к облачной инфраструктуре.

Шаг 6: Collection - Data from Cloud Storage (T1530). Доступ к артефактам сборки, контейнерным образам в ACR, конфигурациям в Blob Storage - всё, что подключено через service connections.

Шаг 7: Exfiltration - Exfiltration to Code Repository (T1567.001). Эксфильтрация через легитимный канал - push в контролируемый атакующим репозиторий. Красиво и незаметно.

Шаг 8: Supply Chain - Compromise Software Dependencies and Development Tools (T1195.001). Финальный импакт: отравленные артефакты попадают к потребителям через стандартные механизмы доставки.

Вся цепочка от T1190 до T1195.001 - не теоретическая конструкция. Компрометация SolarWinds прошла именно этот путь: атакующие получили доступ к системе сборки, внедрили backdoor в Orion и через штатный механизм обновлений доставили его тысячам клиентов.

Официальное описание MSRC: "Azure DevOps Server Elevation of Privilege Vulnerability". Детали вектора атаки Microsoft публично не раскрывала. Уязвимость затрагивала on-prem версии Azure DevOps Server. Публичных эксплойтов для CVE-2023-36561 в открытых базах (Exploit-DB, GitHub) не обнаружено.

ПараметрCVE-2023-36561CVE-2026-42826
CVSS (CNA)7.3 HIGH10.0 CRITICAL
CWECWE-284 (Improper Access Control)CWE-200 (Information Disclosure)
Затронутый продуктAzure DevOps Server (on-prem)Azure DevOps (облачный сервис)
ВекторEoP, детали не раскрыты MicrosoftЧерез сеть, без аутентификации
ПатчОбновление on-prem + fix для cloudServer-side fix (exclusively hosted)
EPSS (2026-07)0.00850.0084

Эволюция показательна: от локализованных EoP-уязвимостей on-prem продукта к сетевым уязвимостям облачного сервиса, раскрывающим данные без аутентификации. Вектор расширяется, порог входа снижается.

Маппинг на OWASP CI/CD Security Risks​

CVE-2026-42826 затрагивает несколько рисков из OWASP Top 10 CI/CD Security Risks:
  • CICD-SEC-6: Insufficient Credential Hygiene - секреты в Azure DevOps становятся доступны при эксплуатации
  • CICD-SEC-7: Insecure System Configuration - дефолтные настройки часто не ограничивают доступ к чувствительным данным на уровне проекта
  • CICD-SEC-10: Insufficient Logging and Visibility - без настроенного аудита факт эксплуатации может остаться незамеченным
  • CICD-SEC-4: Poisoned Pipeline Execution - downstream-импакт после получения секретов

Ограничения и предусловия эксплуатации​

Облачный сервис. Судя по описанию (affected product: microsoft:azure_devops), CVE-2026-42826 затрагивает облачный сервис Azure DevOps Services. Пользователи не применяют патч самостоятельно - Microsoft исправляет на своей стороне. По данным MSRC, исправление выпущено.

Azure DevOps Server (on-prem) - статус неясен. В verified data affected product указан как microsoft:azure_devops без конкретных версий on-prem (в отличие от CVE-2023-36561, где версии перечислены явно). Если у вас on-prem Azure DevOps Server - проверяйте бюллетени MSRC для конкретной версии.

Публичный PoC отсутствует. CISA SSVC фиксирует exploitation: none. Публичных эксплойтов нет. Это ограничивает практическое воспроизведение, но не снижает значимость для threat modeling.

Что неизвестно:
  • Конкретный HTTP-эндпоинт или API-метод, через который происходит утечка
  • Точный объём данных, доступных через уязвимость
  • Были ли инциденты до публикации бюллетеня

Защита CI/CD от атак: детектирование и митигация утечки данных​

1784565372652.webp

Требования к окружению​

  • Azure CLI с расширением azure-devops (установка: az extension add --name azure-devops)
  • Роль Project Collection Administrator или Organization Owner для доступа к audit logs
  • PAT-токен с scope Audit Log: Read (минимально необходимый для аудита)

Обнаружение аномальной активности​

Основной инструмент для Azure DevOps Services - Audit Logs. Запрос за период до и после патча:
Bash:
az devops audit-log query --org https://dev.azure.com/{org} --start-time 2026-04-15 --end-time 2026-05-15 --output table
На что смотреть в логах:
  • Аномальные запросы к REST API от незнакомых IP-адресов
  • Массовые GET к эндпоинтам переменных пайплайнов и service connections
  • Обращения к _apis/serviceendpoint/endpoints или _apis/distributedtask/variablegroups вне рабочих часов
Для проверки текущего состояния service connections (оценка того, что могло утечь):
Bash:
az devops service-endpoint list --org https://dev.azure.com/{org} --project {project} --output table --query "[].{Name:name, Type:type}"

Митигация​

Немедленные действия (для пользователей Azure DevOps cloud): патч применён Microsoft, дополнительных действий для устранения самой уязвимости не требуется. Но ключевой вопрос другой: были ли скомпрометированы секреты ДО патча?

Стратегические меры (по рекомендациям Azure Security):
  • Перейти на Workload Identity Federation через Microsoft Entra Workload ID - исключает хранение статических секретов, которые могут утечь
  • Включить Approvals and Checks для production-пайплайнов: при компрометации секретов атакующий не запустит deploy без одобрения
  • Ограничить сетевой доступ через Conditional Access Policies: привязка к IP-диапазонам, требование managed device

Чеклист: безопасность DevOps pipeline​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Оценка 10.0 CRITICAL для Information Disclosure - отражение фундаментальной проблемы оценки CI/CD-уязвимостей. Формально это "чтение данных". Но когда "данные" - ключи от продакшен-инфраструктуры, грань между information disclosure и full compromise исчезает. И CNA, и NVD согласились с максимальным баллом - и я с ними.

В реальных проектах встречаются Azure DevOps-организации, где один PAT-токен с Full Access scope открывает все проекты, все репозитории, все пайплайны. В таких средах утечка одного токена - это действительно 10.0, безотносительно формальных расчётов CVSS-вектора. Отрасль движется к secret-less credentials: Workload Identity Federation, managed identities, OIDC-токены вместо статических ключей. Переход медленный - и пока в переменных пайплайнов лежат plaintext-пароли от баз данных и access keys от S3-бакетов, каждая уязвимость класса CWE-200 в CI/CD-платформе - потенциальная supply chain атака.

CVE-2026-42826 опасна не сама по себе, а как индикатор: что именно может утечь из вашего Azure DevOps при следующей подобной уязвимости. Пройдите чеклист выше. Если после аудита и ротации всех секретов ротировать было нечего, потому что секреты не хранились в DevOps - вы уже в порядке. Если ротировать пришлось десятки service connections с полным доступом к продакшену - считайте, что CVE-2026-42826 стал самым дешёвым аудитом CI/CD-безопасности в истории вашей организации.
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab