Microsoft выпустила ноябрьское обновление безопасности для инструментов разработки и закрыла почти пятьдесят уязвимостей. Самая опасная ошибка, CVE-2026-109467 с оценкой 9,9 по CVSS, позволяет выполнить произвольный код на сервере Azure DevOps. Затронуты Visual Studio Code, Visual Studio, среды выполнения .NET, ASP Core, .NET Aspire и Azure DevOps Server. Нидерландский центр кибербезопасности NCSC собрал исправления в сводном уведомлении NCSC-2026-0473 с уровнем приоритета «нормальный».
Что вошло в ноябрьское обновление
Уведомление объединяет исправления Microsoft, опубликованные 10 ноября. Отдельного бюллетеня на весь набор вендор не выпускал. Данные собраны из записей CVE и общего портала Microsoft Security Response Center.
Ошибки разнородны по характеру и последствиям. Есть удалённое выполнение кода, повышение привилегий, обход защитных механизмов, раскрытие информации и отказы в обслуживании. Классы тоже разные: внедрение команд, межсайтовый скриптинг, некорректная авторизация, переполнения буфера, состояния гонки и SSRF. SSRF означает, что сервер можно заставить отправить запрос по адресу, который выбрал атакующий.
Самое опасное: Azure DevOps Server
CVE-2026-109467 получила 9,9 по CVSS. Это удалённое выполнение кода через сеть. Ошибка относится к классу CWE-287, некорректная аутентификация. По вектору атакующему нужна учётная запись с низкими правами, а участие пользователя не требуется. То есть достаточно легитимного, но малопривилегированного аккаунта, чтобы получить контроль над сервером.
Исправление вышло в Azure DevOps Server 2025 Patch 9. Облачная версия Azure DevOps получила исправление в рамках спринта. Рядом стоят ещё две ошибки. CVE-2026-85923 с оценкой 8,8 позволяет обойти авторизацию через подконтрольный пользователю ключ и повысить привилегии. CVE-2026-112745 с оценкой 6,5 даёт SSRF и раскрытие информации. Для них нужны патчи 10 и 8 соответственно.
Visual Studio Code: восемнадцать уязвимостей
В самом редакторе закрыли 17 ошибок, ещё одна касается расширения GitHub Pull Requests and Issues. Все сборки ниже 1.145.3 уязвимы.
Самая тяжёлая, CVE-2026-120779, оценена в 9,6. Это внедрение кода (CWE-94) с выполнением по сети. Атакующему нужна помощь пользователя. Две другие ошибки дают выполнение кода через межсайтовый скриптинг: CVE-2026-119975 с оценкой 8,8 и CVE-2026-121664 с оценкой 8,3. Локальное выполнение кода обеспечивает CVE-2026-121662 с оценкой 8,6 и внедрением команд. Отдельно стоит CVE-2026-70094 с оценкой 8,8: ненадёжный путь поиска (untrusted search path) позволяет подменить загружаемый компонент.
Остальные записи описывают обход защитных механизмов и раскрытие информации. В их числе неполные списки запрещённых входных данных (CWE-184), нарушение границы доверия (CWE-501) и SSRF в CVE-2026-119983. Есть и локальное повышение прав через отсутствующую аутентификацию критичной функции, CVE-2026-119981 с оценкой 7,0.
.NET и ASP.NET Core
Критическая ошибка здесь одна: CVE-2026-114146 с оценкой 9,0. Это некорректная авторизация в ASP.NET Core, которая позволяет повысить привилегии по сети. Атакующему нужны низкие привилегии и действие пользователя.
Большая часть остальных записей относится к отказам в обслуживании с оценкой 7,5. Причины разные: неэффективная алгоритмическая сложность, неконтролируемый расход ресурсов, утечка памяти после завершения работы с объектом. Для публичных веб-приложений это практичная угроза: поток запросов может уронить процесс без всякой аутентификации. Похожие проблемы есть в отдельных пакетах, включая Microsoft.AspNetCore.WebUtilities, Microsoft.AspNetCore.Server.HttpSys и System.Formats.Cbor.
Локальные повышения привилегий в .NET и ASP.NET Core требуют учётной записи и, как правило, участия пользователя. Среди них состояние гонки TOCTOU (CVE-2026-114155), обход через отказ в безопасную сторону, или «failing open» (CVE-2026-118746), и ошибки в шаблонах проекта dotnet scaffold (CVE-2026-118741, 8,1).
Visual Studio и .NET Aspire
Пять ошибок Visual Studio с оценкой 8,8 ведут к выполнению кода. Вектор сетевой, но нужно, чтобы пользователь открыл специально подготовленный файл. Причины разные: десериализация недоверенных данных (CVE-2026-114151), переполнение стека (CVE-2026-114152) и три переполнения кучи (CVE-2026-114158, CVE-2026-114159, CVE-2026-118745). Ошибки затрагивают не только саму среду, но и установленные рядом среды выполнения .NET 8, 9, 10 и 11.
В .NET Aspire закрыли CVE-2026-120778 с оценкой 7,3. Инструмент командной строки создаёт временный файл в каталоге с небезопасными правами, и локальный атакующий может повысить привилегии. Исправленная версия Aspire.Cli: 13.6.5.
Условия атаки
Картина неоднородна, и это важно для приоритизации. Часть ошибок эксплуатируется по сети без учётной записи, но с участием пользователя. Так устроено почти всё в Visual Studio Code и Visual Studio. Другая часть требует низких привилегий и работает по сети без участия пользователя, как критическая ошибка в Azure DevOps Server. Третья группа локальная: нужен доступ к системе и иногда действие пользователя.
Отказы в обслуживании в ASP.NET Core стоят особняком. Контроль над системой они не дают, но позволяют вывести из строя публичный сервис повторяемыми запросами.
Сведений об эксплуатации в реальных атаках в уведомлении нет. Microsoft и NCSC не приводят данных о публичном эксплойте или PoC. В источнике нет и упоминаний о включении этих записей в каталог CISA KEV. Значит, на момент публикации речь идёт о подтверждённых вендором ошибках, а не о наблюдаемых атаках.
Затронутые версии и что исправляет патч
Visual Studio Code нужно обновить до 1.145.3 или выше. Visual Studio 2022 версии 17.14 исправлена сборкой 17.14.45, Visual Studio 2026 версии 18.11 - сборкой 18.11.4. Для ветки 18.12 исправленная сборка в записях не указана. Azure DevOps Server 2025 закрывается патчами 8, 9 и 10 в зависимости от CVE. Среды выполнения .NET: 8.0.34, 9.0.23, 10.0.15 и 11.0.0. Отдельно обновляются сборки, затронутые повышением привилегий: 8.0.428, 9.0.321, 10.0.404 и 11.0.100. ASP.NET Core: 8.0.34, 9.0.23, 10.0.15.
Обходных мер Microsoft в записях не приводит. Установка обновления остаётся основным способом закрыть ошибки.
Если обновиться нельзя
Временных обходных путей вендор не описал, поэтому снижайте поверхность атаки организационно. Ограничьте установку расширений Visual Studio Code из недоверенных источников и включите режим ограниченного доверия для рабочих пространств. Отключите удалённые функции там, где они не нужны. Для Azure DevOps Server ограничьте доступ к веб-интерфейсу и проверьте права сервисных учётных записей.
Для ASP.NET Core без патча помогут лимиты на размер запросов, ограничение частоты на периметре и контроль памяти процесса. Ошибку это не устраняет, но снижает эффект от отказов в обслуживании. Планируйте обновление сред выполнения .NET в те же окна, что и обновление приложений.
Отдельно проверьте сборочные агенты. Там ошибки вроде переполнения буфера и ненадёжного пути поиска дают максимальный эффект: агент часто работает с повышенными правами и обрабатывает чужие артефакты.