Microsoft возилась с безопасностью Windows на протяжении десятилетий. Теперь компания пытается исправить это с помощью ржавчины, и они тоже хотят, чтобы все остальные использовали ее.
Проблема проста: C и C ++ позволяют написать код, который выглядит нормально, но потрясающе сбои или, что еще хуже, взломано. Собственное ядро Microsoft протекает в Privilege Escalation Bugs ежемесячно через Win32k.sys, часть, которая обрабатывает графику и окна.
Во время его основного доклада в Rustconf 2025 на этой неделе под названием «От синих экранов до оранжевых крабов: Rusty Revolution Microsoft», Марк Руссович, Microsoft Azure Decure, описал ситуацию как «подземную нефтяную репозиторий, который протекает нефть в несколько капель одновременно, просто последовательно».
Итак, они начали переписать куски в ржавчине. Не все это; Просто кусочки. Если вы копаетесь в папке Windows System32 прямо сейчас, вы найдете файл с именем win32kbase_rs.sys. Это код ржавчины, работающий в вашем ядре.
Вот что на самом деле имеет значение: когда исследователь безопасности нашел ошибку в новой версии Rust, он разбил систему вместо того, чтобы позволить злоумышленнику вступить во владение, сказал Русснович.
«Это мы рассматриваем как успех», — сказал он. «Этот код, написанный в C ++, эта ошибка фактически привела бы к потенциальному повышению привилегий, в отличие от сбоя синего экрана, который очень детерминированный и не может быть использован».
Microsoft также перезаписывает DirectWrite, визуализатор шрифта, который вызвал бесчисленные проблемы безопасности на протяжении многих лет. Два разработчика Microsoft сделали это за шесть месяцев — 154 000 строк кода. Он работает быстрее, чем старая версия и не имеет таких же ошибок.
Мандат лазурного
Руссович в течение многих лет давил ржавчину, даже до того, как у него была официальная власть, чтобы поручить ее.
«На самом деле я бы даже до этого твита сказал нашим командам, что мы должны остановить новые проекты в C и C ++ и начать с Rust, если мы не сможем терпеть, собранный мусора»,-сказал он во время своего основного доклада Rustconf.
Теперь, как заместитель CISO of Azure (в дополнение к техническому директору), он может сделать его официальным: «Слишком большой риск в принятии или создании нового C ++, вы этого не сделаете».
Результаты повсюду в Azure. Например, корень доверия Caliptra был написан полностью в ржавчине с самого начала.
«Если вы посмотрите на ПЗУ Калипре, это все открытый исходный код», — сказал Русснович. «Если вы посмотрите на прошивку Caliptra, если вы посмотрите на эмулятор Caliptra, все они написаны в ржавчине».
Azure Boost, система, которая управляет серверами и обрабатывает разгрузку сети, предписывает ржавчину за все, что касается ненадежных данных, сказал он.
«Каждое место, где у нас не доверяет обработка ввода, мандат переписывает его в ржавчине, и любые новые агенты написаны в ржавчине».
Даже Hyper-V, гипервизор Microsoft и «один из самых безопасных частей программного обеспечения, который когда-либо создавал Microsoft»,-это обработка ржавчины. Поддержка эмуляции ARM64 теперь поставляется в ржавчине, отмечая начало постепенного перехода для этого критического компонента.
Microsoft официально отправляет ржавчину в рамках Hyper-V, и это всего лишь одно место, где вы увидите постоянный рост ржавчины в этом компоненте, сказал Русснович.
«И если говорить о гипервизорах, есть сам гипервизор, и есть менеджер виртуальных машин (VMM). Мы начали этот проект в Rust с самого начала, OpenVMM», — сказал он.
На самом деле, в Windows есть основная группа людей в Windows, которые являются энтузиастами ржавчины, которые сказали, что Microsoft нуждается в открытом менеджере виртуальных машин, которая расположена под виртуальной машиной (виртуальной машиной) на Azure через хосты и разговаривает с Azure Boost, добавил он.
«Именно здесь мы запускаем, например, эмулированные сетевые адаптеры, которые подключаются к сетевому адаптеру Azure Boost. Таким образом, чтобы обеспечить совместимость с существующими операционными системами, эта система является системой Linux», — сказал Россинович. «Эта система работает на открытом диспетчере виртуальных машин, который написан в Rust. OpenVMM демонстрирует обязательство Microsoft не только открытым исходным кодам и ржавчине, но и для кроссплатформенной переносимости. Таким образом, Open VMM совместим не только с Hyper V, а не только с Windows, а также с Linux, а также с KVM. [Kernel-based Virtual Machine]и это полностью открытый исходный код ».
Russinovich также упомянул проект Hyperlight, библиотеку Rust с открытым исходным кодом, которую вы можете использовать для выполнения небольших встроенных функций с использованием защиты на основе гипервизора для каждого вызова функции в масштабе.
Кроме того, Microsoft выпустила Azure SDK для Rust в начале этого года.
Марк Русснович в Rustconf.
Офис идет все в
Тем временем у офиса была другая проблема. Его семантическая система поиска, Diskann, отлично работала для сотен узлов Bing, но не могла справиться с миллионами документов Office.
«Офис хотел миллионы узлов на графике. Они поняли, что реализация Diskann и C просто не даст им той масштаб и производительность, которые они хотели», — сказал Русснович.
Итак, они переписали его в ржавчине. Результаты были драматичными: лучшая производительность на одних и тех же уровнях точности и снижение использования памяти.
«Мы видели огромные победы», — отметил Русснович. Подразделение офисных развлекательных устройств стало настолько убежденным, что они пошли «All In on Rust», предпочитая его даже из-за безопасных памяти языков, таких как C# для его обработки параллелистики.
Azure Data Explorer показывает, как выглядит крупномасштабная миграция. Один разработчик потратил год, переносив уровень хранения данных в ржавчину, затем за этим последовал двигатель запросов. В настоящее время система обрабатывает «буквально сотни петабайт данных» с 350 000 линий ржавчины наряду с 2,3 миллионами линий C# и сокращенными количествами C ++, сказал он.
Открытие шлюзов для партнеров
Теперь Microsoft хочет, чтобы аппаратные компании и разработчики водителей писали свои собственные драйверы ржавчины. Согласно сообщению в блоге Нейта Деисингера из команды Microsoft’s Windows, они создали целую структуру под названием Windows-Drivers-R, которая в основном переводится между Rust и Kit The Windows Driver (WDK).
«Строив потрясающие усилия команды Surface, мы начинаем наше путешествие, чтобы сделать Rust первым языком для разработчиков водителей по всему миру»,-написал Дейзингер в посте за день до того, как Русснович выступил в Rustconf.
Куски просты: груз Wdk-Build Crows в систему сборки Windows, WDK-Sys обеспечивает необработанный доступ к API драйвера Windows.
Вы можете сделать драйверы драйвера для драйверов в режиме ядра (KMDF), драйвера драйвера пользователя (UMDF) или модели драйвера Windows (WDM), которые фактически загружаются и запускаются в Windows 11. Уловка-вам все еще нужно написать много небезопасного кода ржавчины, потому что API Windows Kernel не предназначены для безопасности памяти.
Microsoft также работает над этим. Как объясняет Дейзингер в блоге, они хотят создать безопасные обертки, поэтому «большинство кода драйвера можно писать в безопасной ржавчине». У них есть экспериментальные версии, работающие внутри, но они еще не готовы к общественному пользу.
Что на самом деле думают разработчики
Microsoft опросила своих людей о ржавчине. Отзывы были в подавляющем большинстве положительных, когда разработчики преодолели первоначальный шок.
«Мы видим разработчиков, если они особенно из C ++, это шок для них. Это похоже на:« Вау, это совершенно другой способ », — объяснил Русснович.
Но через несколько месяцев что -то щелкнет. «Через пару месяцев они фактически изменили свой разум, а теперь стали единым целым, как протестирование ржавного заимствования думает и работает и действительно наслаждается этим», — сказал он.
Разработчики любят прирост производительности.
«Это довольно последовательно. Всякий раз, когда мы берем код C ++ и переносите ее в ржавчину, мы обычно видим улучшение производительности», — сказал Русснович. «Разработчики любят полностью устранять уроки ошибок, и им нравится писать код один раз и не отлаживать его в течение нескольких дней», — добавил он.
Чего им не нравится: смешивание с существующим кодом C ++ и C# — это болезненное. Асинхронная отладка отстой. Динамическое связывание имеет проблемы. Но «разработчики, у которых даже есть эти жалобы, не хотят отказаться от ржавчины на данный момент», — отметил он.
Секретное оружие: ИИ перевод
Microsoft создает что-то потенциально изменяющее игру-инструменты AI, которые могут автоматически перевести целые кодовые базы с C ++ на ржавчину. Используя свою технологию GraphRAG, они могут создавать семантические представления о крупных кодовых базах, которые языковые модели могут рассуждать о и порт по частям.
Руссович продемонстрировал это вживую, показывая игру на Python, переведенную в ржавчину, сохраняя при этом оригинальную структуру и функциональность проекта.
«Вы увидите гораздо больше такого рода ускорения с помощью LLMS [large language models] кода из существующих языков, c, c ++, особенно для ржавчины с течением времени ».
Это может решить самый большой барьер для внедрения ржавчины — огромные усилия, необходимые для переноса существующих кодовых баз.
Большая ставка
Ржавоватая толчка Microsoft выходит далеко за рамки модного. Руссович качает это как необходимое для будущего.
«Мы считаем, что безопасные для памяти языки, такие как Rust, представляют будущее безопасной разработки программного обеспечения»,-сказал он. «Сегодняшний ландшафт безопасности требует надежности и гарантий безопасности на каждой поверхности от края до облака».
Они не одиноки. Агентство национальной безопасности (АНБ) одобрило переход на безопасные для памяти языки вскоре после того, как знаменитый твит 2022 года в 2022 году превозносил ржавчину. Linux добавил поддержку ржавчины, отметил он. Промышленность импульс строит.
Структура драйвера представляет Microsoft, расширяющую эту философию за пределами своего собственного кода. Если поставщики оборудования начинают писать драйверы ржавчины, Windows становится более безопасной, если Microsoft выполняет всю работу.
Но развитие водителя консервативна. Люди придерживаются того, что работает. Microsoft делает ставку на то, что очевидных улучшений безопасности плюс комплексного инструмента будет достаточно, чтобы преодолеть десятилетия инерции.
Ранние результаты являются многообещающими. Microsoft показала, что код ржавчины в безопасном порядке не удается там, где C ++ создает уязвимости. Они развернули его в своих самых важных системах: ядра, гипервизоры, криптографические библиотеки. Теперь они хотят, чтобы вся экосистема следовала.
Как сказал Русснович: «Ржавчина проникает в основную инфраструктуру Microsoft на данный момент, и она просто будет продолжать ускоряться». Структура драйвера — это лишь последняя часть этого большего преобразования.
Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Дэррил К. Тафт охватывает DevOps, инструменты разработки программного обеспечения и проблемы, связанные с разработчиком из своего офиса в районе Балтимора. Он имеет более чем 25 -летний опыт работы в бизнесе и всегда ищет следующий совок. Он работал … читайте больше от Дэррила К. Тафта