Microsoft объявила о значительном шаге вперед в области киберзащиты на основе искусственного интеллекта
Microsoft объявила о значительном шаге вперед в области киберзащиты на основе искусственного интеллекта
Microsoft объявила о значительном шаге вперед в области киберзащиты на основе ИИ: новая агентная система безопасности помогла исследователям обнаружить 16 новых уязвимостей в сетевом стеке и стеке аутентификации Windows, включая четыре критических уязвимости удаленного выполнения кода в таких компонентах, как стек TCP/IP ядра Windows и служба IKEv2. Они использовали новый многомодельный агентный сканер Microsoft Security ( кодовое название MDASH ) , разработанный командой Microsoft Autonomous Code Security. В отличие от одномодельных подходов, этот инструмент координирует работу более 100 специализированных агентов ИИ в рамках ансамбля перспективных и упрощенных моделей для обнаружения, анализа и доказательства эксплуатируемых ошибок от начала до конца.
Результаты говорят сами за себя: 21 из 21 обнаруженной уязвимости с нулевым количеством ложных срабатываний на частном тестовом драйвере; 96% полнота обнаружения по результатам пяти лет подтвержденных случаев Центра реагирования на инциденты безопасности Microsoft (MSRC) в clfs.sys и 100% в tcpip.sys; и лидирующий в отрасли показатель 88,45% в общедоступном бенчмарке CyberGym, охватывающем 1507 реальных уязвимостей — лучший результат в таблице лидеров, примерно на пять пунктов опережающий следующий показатель.
Стратегический вывод очевиден: обнаружение уязвимостей в ИИ перешло из разряда исследовательских любопытств в категорию производственной защиты корпоративного уровня, и устойчивое преимущество заключается в агентной системе, окружающей модель, а не в какой-либо отдельной модели. Кодовое имя MDASH используется командами разработчиков безопасности Microsoft и тестируется небольшой группой клиентов в рамках ограниченного частного предварительного тестирования.
В этом посте объясняется, как работает кодовое имя MDASH, что мы выпустили сегодня, чему научились в процессе работы и как вы можете зарегистрироваться для участия в закрытом предварительном просмотре.
Обнаружение уязвимостей с помощью ИИ в гипермасштабе
Команда Microsoft Autonomous Code Security (ACS) была создана для того, чтобы превратить исследования уязвимостей с использованием ИИ из простого научного интереса в разработку производственных решений корпоративного масштаба. Несколько членов этой команды пришли в Microsoft из команды Team Atlanta, которая выиграла конкурс DARPA AI Cyber Challenge с призом в 29,5 миллионов долларов, создав автономную систему киберлогического анализа, которая находила и исправляла реальные ошибки в сложных проектах с открытым исходным кодом. Уроки, извлеченные из этой работы, особенно уровень инженерных решений, необходимых для того, чтобы передовые языковые модели выполняли профессиональный аудит безопасности, легли в основу нашей новой многомодельной системы агентного сканирования (кодовое название MDASH).
Кодовая база Microsoft представляет собой сложную задачу для аудита безопасности по нескольким причинам:
Огромная проприетарная поверхность. Windows, Hyper-V, Azure, а также экосистемы драйверов устройств и служб вокруг них — это частные кодовые базы Microsoft, не входящие в обучающий корпус какой-либо стандартной языковой модели, и с ними действительно сложно работать: соглашения о вызове ядра, инварианты IRP и блокировок, границы доверия IPC и идиомы внутри компонентов не поддаются сопоставлению с образцом. На этой поверхности модели приходится действительно рассуждать.
DevSecOps в масштабе. У каждой обнаруженной проблемы есть реальный ответственный, процесс сортировки и план внедрения исправлений по вторникам. Нет «тихого ящика» для предположений; если инструмент выдает шум, то этот шум становится проблемой для всех.
Ценные цели. Windows, Hyper-V, Xbox и Azure обслуживают миллиарды пользователей. Выгода от обнаружения одной-единственной серьезной ошибки необычайно высока — как и стоимость ложного срабатывания в компоненте первого уровня.
Результаты, представленные в этом посте , являются следствием тесного сотрудничества между ACS, Microsoft Offensive Research & Security Engineering (MORSE) и Microsoft Windows Attack Research and Protection (WARP) . WARP и MORSE отвечают за глубокое и сложное исследование угроз Windows; ACS предоставляет конвейер обнаружения и проверки на основе искусственного интеллекта. Вместе команды разработали зрелую систему инструментов.
Кодовое название: MDASH — новая многомодельная система агентного сканирования от Microsoft Security.
По своей сути, Codename MDASH — это система обнаружения и устранения уязвимостей, управляемая агентом . Модель — это один из входных параметров. Система — это продукт.
Полезной мысленной моделью является представление этого процесса как структурированного конвейера, который принимает кодовую базу и выдает проверенные, подтвержденные результаты:
Этап подготовки : обрабатывает исходный код целевого объекта, создает индексы с учетом языка программирования, а затем строит модель поверхности атаки и угроз на основе анализа предыдущих коммитов.
Этап сканирования : Запускает специализированных агентов-аудиторов по потенциальным путям выполнения кода, выдавая результаты с гипотезами и доказательствами.
Этап проверки : Запускается вторая группа участников — дебатеров , — которые приводят аргументы за и против достижимости и возможности использования каждого из полученных результатов.
Этап дедупликации : объединяет семантически эквивалентные результаты (например, группировку на основе фрагментов).
Этап доказательства : Формирует и выполняет входные параметры, запускающие ошибку, если класс ошибки это допускает. На этапе доказательства динамически проверяется предварительное условие и формулируются входные параметры, запускающие ошибку, для подтверждения существования уязвимости (например, ASan в C/C++).
На практике это работает благодаря трем свойствам:
Ансамбль разнообразных моделей, эффективно управляемых с помощью кодового названия MDASH . Ни одна модель не является лучшей на каждом этапе. Многомодельная агентная система сканирования использует настраиваемую панель моделей. Она включает в себя модели SOTA в качестве основного средства логического вывода, упрощенные модели в качестве экономичного средства для обсуждения большого объема вопросов, а также вторую отдельную модель SOTA в качестве независимого контраргумента. Разногласия между моделями сами по себе являются сигналом: когда аудитор отмечает что-то как подозрительное, а участник обсуждения не может это опровергнуть, последующая достоверность этого вывода повышается.
Специализированные агенты . Аудитор рассуждает не так, как спорщик, а спорщик — не так, как доказывающий. Каждый этап конвейера имеет свою роль, режим подсказок, инструменты и критерии остановки. Мы не ожидаем, что одна подсказка сделает всё; мы не ожидаем, что один агент сможет распознать, подтвердить и использовать ошибку за один проход. В Codename MDASH работает более 100 специализированных агентов, созданных на основе глубокого исследования прошлых распространенных уязвимостей и угроз (CVE) и их исправлений, которые работают независимо друг от друга для обнаружения ошибок, а результаты их аудита будут объединены в единый отчет.
Сквозной конвейер с расширяемыми плагинами. Конвейер имеет свои особенности, но он не замкнут. Плагины позволяют экспертам в предметной области добавлять контекст, который базовые модели не могут увидеть самостоятельно — соглашения о вызове ядра, правила IRP, инварианты блокировок, границы доверия IPC, конечные автоматы кодеков. Плагин для доказательства CLFS, который мы описываем ниже, является одним из таких примеров: плагин для предметной области, который знает, как создать файл журнала, запускающий процесс, на основе потенциального результата. Например, можно использовать расширенные возможности логирования команды Windows с помощью пользовательской базы данных анализа кода или базы данных CodeQL.
Преимуществом такой архитектуры является переносимость между поколениями моделей . Этапы таргетинга, валидации, дедупликации и проверки в конвейере по своей конструкции не зависят от модели, что позволяет использовать лучшие возможности любой модели. Когда появляется новая модель, A/B-тестирование по сравнению с текущей панелью осуществляется всего лишь одним изменением конфигурации. При улучшении модели предыдущие инвестиции клиента — файлы области видимости, плагины, конфигурации, калибровки — сохраняются, позволяя клиентам использовать весь потенциал безопасности.
Использование кодового имени MDASH в исследованиях в области безопасности.
Для оценки возможностей многомодельного агентного сканирования по поиску ошибок необходимо сначала изучить код, который никогда ранее не использовался моделью. Это исключает возможность того, что модель «усвоила ответы на тест». Мы просканировали StorageDrive, пример драйвера устройства, используемый в интервью Microsoft для исследователей в области наступательной безопасности. Драйвер содержит 21 преднамеренно внедренную уязвимость, включая ошибки использования памяти после освобождения (UAF) в ядре, проблемы обработки целых чисел, пробелы в проверке IOCTL и ошибки блокировки. Поскольку StorageDrive — это закрытый код, который никогда не публиковался, мы можем с уверенностью предположить, что он не был включен в обучающие данные современных языковых моделей.
Мы запустили тестовый стенд на StorageDrive, используя его конфигурацию по умолчанию. Результаты оказались поразительными: все 21 эталонная уязвимость были правильно идентифицированы, при этом в этом запуске не было ни одного ложного срабатывания.
Этот простой тест показывает, что возможности алгоритма MDASH по рассуждениям и обнаружению уязвимостей могут быть сопоставимы с возможностями профессиональных исследователей в области наступательных операций.
Затем мы используем это оборудование для проведения аудита безопасности наиболее важной для системы Windows части, а именно, сетевого стека TCP/IP.
Два глубоких погружения
Два приведенных ниже примера характерны для возможностей нового конвейера многомодельного генетического сканирования Microsoft Security, недоступных при использовании одной модели . Первый пример — это состояние гонки ядра , связанное с использованием освобожденной памяти после освобождения, требующее анализа времени жизни объекта в рамках нетривиального потока управления и трех независимых параллельных путей освобождения памяти. Второй пример — это двойное освобождение памяти, связанное с псевдонимами, которое охватывает шесть исходных файлов и проявляется только на фоне корректно обработанного участка в той же кодовой базе.
CVE-2026-33827 — Удалённый неаутентифицированный UAF в tcpip.sys через SSRR
Уязвимость возникает в пути приема IPv4 в Windows из-за некорректного управления временем жизни объекта Path с подсчетом ссылок внутри функции Ipv4pReceiveRoutingHeader. После вызова поиска маршрута функция удаляет свою единственную принадлежащую ей ссылку на Path посредством операции разыменования, но позже повторно использует тот же указатель при обработке строгой маршрутизации источника и записи (SSRR). Поскольку счетчик ссылок объекта может достичь нуля на более раннем этапе освобождения памяти, базовая память может быть возвращена в распределитель памяти, привязанный к конкретному процессору, и впоследствии повторно использована, превращая последующий доступ в классическое использование памяти после освобождения в контексте ядра.
Это происходит на сетевом пути, обрабатывающем контролируемые злоумышленником метаданные пакетов, что делает его доступным на повышенном уровне IRQL в сетевом стеке. Основная проблема усугубляется моделью параллельного доступа к кэшу пути и связанными с ним процедурами очистки. После того, как вызывающая сторона отказывается от права собственности, жизнеспособность объекта Path полностью зависит от внешних ссылок, хранящихся в общих структурах данных. Несколько независимых подсистем, включая сборщик кэша пути, явные процедуры очистки и сборку мусора, управляемую состоянием интерфейса, могут одновременно удалять объект и отбрасывать последнюю ссылку. Эти операции не синхронизированы с окном выполнения на стороне приема в этой функции, и блокировка для сериализации доступа не удерживается. В результате в системах SMP освобожденный объект может быть возвращен и перезаписан до последующего разыменования, превращая простую ошибку порядка выполнения в ситуацию гонки использования после освобождения с реальной возможностью выполнения.
С точки зрения эксплуатации, уязвимость доступна удаленному неаутентифицированному злоумышленнику через специально сформированные пакеты IPv4, содержащие опцию SSRR, которые проходят стандартные проверки. Разыменование устаревшего указателя может запустить цепочку доступа через освобожденную память, потенциально приводя к контролируемому чтению и более сильному примитиву повреждения, если освобожденное пространство выделено под влиянием злоумышленника. Хотя для эксплуатации требуется выиграть узкое временное окно и повлиять на повторное использование распределителя памяти, сочетание удаленной доступности, контекста выполнения ядра и потенциальной возможности контролируемого манипулирования памятью повышает уровень серьезности проблемы до критического.
Почему в системах с одной моделью этот баг был упущен ?
В одном экземпляре модели эта ошибка часто остается незамеченной, поскольку нарушение времени жизни не видно локально даже в пределах одной и той же функции. Освобождение ссылки на Path и ее последующее повторное использование разделены нетривиальным потоком управления — альтернативной ветвью, множественными проверками валидации и несколькими условиями раннего удаления, — что нарушает простую схему «освобождение-затем-использование», на которую полагаются большинство детекторов. Без отслеживания владения ссылкой на этих промежуточных состояниях модель видит две независимые операции, а не временную зависимость. В результате разыменование не выглядит подозрительным само по себе, даже несмотря на то, что семантика подсчета ссылок гарантирует, что указатель может быть уже недействительным.
Решающий сигнал также находится вне непосредственного контекста. Та же логическая операция появляется и в другом месте в правильном порядке; все необходимые данные извлекаются из объекта до того, как будет отброшена ссылка. Это делает данный момент вызова не очевидным злоупотреблением, а не противоречием.
Для обнаружения этого требуется межфайловый анализ: выявление аналогичных шаблонов, сопоставление их намерений и обнаружение отклонений. Кроме того, достижимость зависит от сочетания нескольких условий — входных данных, устанавливающих флаг SSRR, конфигурации по умолчанию, разрешающей путь, и параллельных подсистем, которые могут освободить объект в течение периода доступности. Одноэтапный анализ объединяет эти шаги и теряет взаимодействие между ними, тогда как поэтапный подход может связать нарушение прав собственности, модель параллельного доступа и внешне управляемый триггер в согласованный путь эксплуатации.
Уведомление . Уязвимость CVE-2026-33827 исправлена в апрельском обновлении Patch Tuesday.
CVE-2026-33824: Неаутентифицированный IKEv2 SA_INIT + фрагментация → двойное освобождение памяти → локальное удаленное выполнение кода
Уязвимость находилась в службе IKEEXT, компоненте Windows, отвечающем за генерацию ключей IKE и AuthIP для IPsec, и была доступна удаленному неаутентифицированному злоумышленнику по протоколу UDP/500 на любом хосте, настроенном как ответчик IKEv2 (RRAS VPN, DirectAccess, инфраструктура Always-On VPN или любая машина с правилом безопасности входящего соединения). Отправив специально сформированный IKE_SA_INIT, содержащий полезную нагрузку «IPsec Security Realm Id» поставщика Microsoft, за которой следует единственный фрагмент IKEv2 (RFC 7383 SKF), который немедленно собирается заново, злоумышленник мог инициировать детерминированное двойное освобождение 16-байтового выделения памяти в куче внутри службы.
Поскольку IKEEXT работает от имени LocalSystem внутри svchost.exe, это представляет собой путь удаленного выполнения кода до аутентификации в одном из контекстов с наивысшими привилегиями в системе. Первопричина — это типичная ошибка владения. Когда IKEEXT повторно внедряет собранный фрагмент через свой конвейер приема, он дублирует контекст приема пакета с помощью плоского копирования памяти (memcpy). Это поверхностное копирование: оно клонирует байты структуры, но не выделенные в куче области памяти, на которые она указывает. Одна из этих областей — это предоставленный злоумышленником идентификатор области безопасности, и после копирования как контекст в очереди, так и активный SA в основном режиме содержат один и тот же указатель, и оба считают, что владеют им.
При завершении работы каждый из них освобождает память, что приводит к двойному освобождению. Последовательность запуска — два UDP-пакета, без состояния гонки и без специальных временных параметров. Служба IKEEXT работает от имени LocalSystem svchost.exe. Двойное освобождение фрагмента кучи фиксированного размера — хорошо известный примитив повреждения в современных Windows; мы не публикуем дальнейшие подробности эксплуатации. Для обеспечения доступности требуется, чтобы хост имел политику ответа IKEv2, которая принимает предлагаемые преобразования — уязвимость доступна в правилах безопасности соединений RRAS VPN, DirectAccess, Always-On VPN и IPsec в их типичных конфигурациях, но хост Start-Service IKEEXTбез политики ответа не уязвим. Служба IKEEXT DEMAND_STARTпо умолчанию запущена; если существует политика ответа, BFE запустит её при первом входящем пакете IKE, поэтому злоумышленнику не нужно, чтобы IKEEXT уже работал.
Почему системы с одной моделью не выявили эту ошибку
Ошибка представляет собой ошибку жизненного цикла псевдонимов, затрагивающую шесть файлов: ike_A.c(неправильное копирование памяти), ike_B.c(источник псевдонима и первое локальное копирование в стек), ike_C.c(неправильное освобождение памяти), ike_D.c(как правильный шаблон, так и второе освобождение памяти), ike_E.c(место удаленного заполнения буфера) и ike_F.c(диспетчер IKEv2 и место чтения UAF, предшествующее второму освобождению памяти). Анализ одного файла её не обнаруживает. Самым убедительным доказательством существования ошибки является правильная версия того же шаблона в той же кодовой базе, расположенная ike_D.cсразу после memcpyселектора. Для обнаружения этой ошибки аудитор должен распознать отсутствующий шаг в одном месте, ссылаясь на существующий шаг в другом. Наши специализированные аудиторы предназначены для выявления именно таких сравнений; этап обсуждения заставляет их выстоять под перекрестным допросом.
Уведомление. Уязвимость CVE-2026-33824 исправлена в апрельском обновлении Patch Tuesday.
Насколько функционален кодовый бренд MDASH?
Обновления по вторникам и StorageDrive — это сигналы, указывающие на будущее. Два ретроспективных теста показывают, как система работает по сравнению с реальными, хорошо проверенными версиями кода.
Вспомним исторические случаи с MSRC. Мы повторно запустили проверку с кодовым именем MDASH на предпатч-снимках двух тщательно проверенных компонентов Windows и измерили, были бы (повторно) обнаружены исторически подтвержденные MSRC ошибки:
clfs.sys: 96% отзыва по 28 случаям MSRC за пять лет.
tcpip.sys: 100% отзыв продукции по 7 случаям MSRC за пять лет.
Это самые убедительные внутренние данные, которые мы публикуем, и они имеют особое значение: база данных инцидентов MSRC — это истина о том, что действительно использовали злоумышленники, что потребовало обновления во вторник и на что пришлось реагировать защитникам. Система, которая восстанавливает 96% уязвимостей из пятилетнего списка MSRC в тщательно проверенном компоненте ядра, обнаруживает не теоретические слабые места, а действительно важные ошибки.
Мы тщательно продумываем, что эти цифры говорят, а что нет. Это ретроспективные показатели обнаружения ошибок во внутреннем коде с ограниченным количеством случаев. Они показывают, что система была бы полезна, если бы существовала в то время. Сами по себе они не предсказывают, что следующие 38 ошибок в CLFS будут обнаружены с той же скоростью. Прогнозный сигнал — это сама группа обновлений Patch Tuesday.
Расширение для проверки CLFS как наглядный пример . Показатель полноты обнаружения CLFS в 96% частично объясняется этапом проверки. Многие результаты проверки CLFS выглядят интересными, пока вы не попытаетесь создать файл журнала, запускающий процесс; обнаружение потенциальной ошибки без доказательства на практике — это запись в списке задач для сортировки. Разработанный нами плагин для проверки CLFS знает, как создавать файлы журналов, запускающие процесс, на основе потенциальной ошибки: он достаточно хорошо понимает структуру контейнера на диске, последовательность проверки блоков и конечный автомат в памяти, чтобы направить путь к его целевому объекту. Именно для этого и предназначена расширяемость плагинов: базовые модели не должны и не должны учитывать специфические для Microsoft инварианты файловой системы. Плагин внедряет их, модель использует их, и в результате получаются ошибки, которые остаются проверенными, а не ошибки, которые регистрируются и забываются.
CyberGym . На общедоступном бенчмарке CyberGym — корпусе из 1507 реальных задач воспроизведения уязвимостей, взятых из 188 проектов OSS-Fuzz — многомодельная агентная система сканирования Microsoft Security достигает показателя успешности 88,45%, что является наивысшим результатом в опубликованной таблице лидеров CyberGym на момент написания статьи и примерно на пять пунктов выше, чем у следующей по популярности системы, 83,1%. Этот результат был получен с использованием общедоступных моделей. Убедительные результаты свидетельствуют о том, что окружающая агентная система вносит существенный вклад в сквозную производительность, выходя за рамки возможностей самой модели. Для оценки мы использовали конфигурацию CyberGym по умолчанию (уровень 1), которая предоставляет уязвимый исходный код и высокоуровневое описание уязвимости. Для взаимодействия с протоколом оценки CyberGym мы расширили этап проверки системы, чтобы она могла автономно отправлять входные данные для подтверждения концепции (PoC) и получать флаги.
Анализ ошибок, выявленных в оставшихся примерно 12%, показывает две заметные структурные закономерности: среди ошибок, направленных на неправильный участок кода, 82% были связаны с задачами с расплывчатыми описаниями, в которых также отсутствовали идентификаторы функций или файлов, что говорит о том, что качество описания является важным фактором точности сканирования. Мы также обнаружили случаи, когда агент создавал входные данные в стиле libFuzzer, но для эталонной задачи фактически требовались входные данные в формате honggfuzz, что приводило к сбоям в воспроизведении корректных результатов из-за несоответствия формата тестового набора данных.
Что всё это значит
В настоящее время в отрасли обнаружение уязвимостей с помощью ИИ перестаёт быть спекулятивной задачей и начинает превращаться в инженерную проблему. Результаты, представленные в этом «Вторнике обновлений», и ретроспективный анализ пятилетних случаев CLFS MSRC свидетельствуют о том, что обнаружение уязвимостей с помощью ИИ может масштабироваться.
Как мы поняли, создавая MDASH и используя его в Microsoft, он обладает большей портативностью: всю работу выполняет модуль, а модель является одним из входных параметров
Это имеет значение в трех конкретных аспектах.
Во-первых, для обнаружения требуется композиция, которую невозможно реализовать с помощью одного запроса . Ошибки, описанные в этом посте — tcpip.sysгонка, ikeext.dllцепочка псевдонимов — не видны модели, которой передана одна функция. Они видны системе, которая может последовательно сравнивать шаблоны между файлами, проводить многошаговый анализ достижимости, обсуждать вопросы между специализированными агентами и строить доказательства от начала до конца. Использование одной модели недооценивает возможности моделей; чрезмерно доверяемые отдельные агенты превосходят возможности моделей в плане надежности. Искусство заключается в создании системы вокруг модели, а система — это большая часть инженерной работы.
Во-вторых, валидация — это разница между обнаруженной проблемой и исправленной . Сканер, который отмечает потенциальные ошибки, — это сканер, который формирует список задач для сортировки. Программа Patch Tuesday стала такой, какая она есть, потому что система, которая её создала, не останавливается на потенциальных ошибках — она обсуждает их, удаляет дубликаты и доказывает их наличие. Валидация — это не просто галочка; это отдельный конвейер агентов и плагинов, и именно здесь в конечном итоге сосредоточена большая часть повседневной работы инженеров.
Во-третьих, система поглощает улучшения моделей , что и делает её долговечной. Когда появляется новая модель, этапы таргетинга, обсуждения, удаления дубликатов и проверки не нужно переписывать; мы меняем конфигурацию и повторно запускаем A/B-тестирование. Инвестиции клиента — контекст проекта, плагины сканирования, агенты проверки — сохраняются. Это архитектурное свойство имеет наибольшее значение с течением времени, потому что лотерея моделей будет продолжаться, и любая система, ценность которой зависит от конкретной модели, — это система, которую необходимо перестраивать каждые шесть месяцев.
Для специалистов по защите — независимо от масштаба и типа кода — вывод один и тот же. Правильный вопрос, который следует задать инструменту обнаружения уязвимостей в ИИ, заключается не в том, какую модель он использует, а в том, что он делает с этой моделью и что остается после появления следующей модели?
