Microsoftのシニアソフトウェアエンジニア、Nate DeisingerがRustによるWindowsドライバー開発の現状を報告した。
現在、WDM、KMDF、UMDFを使用してWindows 11ドライバーを作成するRustクレートが存在する。ただし、これらのドライバーはWindowsオペレーティングシステムとやり取りするためにunsafeブロックを使用する必要がある。
WDFチームは安全なRust抽象化に取り組んでおり、Windowsカーネル自体でのRust使用作業も進行中で、一部はWindows 11 24H2に出荷された。cargo-wdkというcargoエクステンションも開発されており、将来計画にはARM64サポート、依存関係の自動インストール、テストマシンへのドライバー配布が含まれる。
GitHubリポジトリはプロジェクトが初期段階で本格運用には推奨されないと記載している。GitHubのCodeQLツールはバージョン2.22.1からRustをサポートするが、WHCPでの使用が検証されたのは2.21.4である。
Microsoft Researchが2019年にRust使用意図を発表し、Azure CTO Mark Russinovichが2022年にC/C++からRustへの移行を提唱してから4年が経過した。
From: Microsoft shows slow progress on Rust for Windows drivers
【編集部解説】
メモリ安全性という技術的な課題に対して、Microsoftが2019年から継続的に取り組んできた成果が、ようやく具体的な形として現れ始めています。特に注目すべきは、Windows 11 24H2において実際にRustで書かれた新しいGDI領域が搭載された点です。これは単なる実験的試みではなく、プロダクション環境での実証に踏み切ったことを意味します。
現在のドライバー開発では、依然としてunsafeブロックが必要ですが、これは過渡期における必然的な制約です。WDFチームが進める安全なRust抽象化の開発により、将来的にはこうした制約が大幅に軽減される見込みです。この技術進化により、開発者はメモリ関連の脆弱性を根本的に回避できるようになります。
cargo-wdkの登場は、開発者体験の向上において特に重要です。従来のVisual Studioテンプレートと同等の利便性を提供し、ARM64サポートや依存関係の自動インストールなど、モダンな開発環境の構築を可能にしています。これにより、C/C++に慣れ親しんだ開発者でも、比較的スムーズにRustでのドライバー開発に移行できる環境が整いつつあります。
ただし、本格的な実用化に向けては、依然として課題が残存しています。WHCP(Windows Hardware Compatibility Program)での検証プロセスや、CodeQLによる静的解析ツールの対応状況など、企業レベルでの導入には慎重な検討が必要です。GitHubのCodeQLがRustをサポートしたものの、WHCPで検証済みのバージョンとのギャップが存在することは、実務での採用において重要な考慮事項となります。
長期的な視点では、この取り組みがWindowsエコシステム全体のセキュリティ向上に与える影響は計り知れません。サイバー攻撃の70%がメモリ関連の脆弱性に起因するとされる現状において、Rustの導入は根本的な解決策として機能する可能性があります。また、開発者コミュニティにとっても、システムレベルプログラミングにおける新たな選択肢の提供は、イノベーションの促進につながるでしょう。
【用語解説】
Rust
Mozillaが開発したシステムプログラミング言語。メモリ安全性とパフォーマンスを重視し、ガベージコレクションを使用せずにメモリ安全性を保証する独特なアプローチを採用している。
WDM(Windows Driver Model)
Windowsの古い低レベルドライバー開発モデル。カーネルレベルでの直接的なハードウェア制御が可能だが、開発の複雑性が高い。
KMDF(Kernel-Mode Driver Framework)
Windowsドライバー開発において、カーネルモードで動作するドライバー用の高レベル抽象化フレームワーク。WDMより簡単にドライバーを開発できる。
UMDF(User-Mode Driver Framework)
ユーザーモードで動作するドライバー開発用フレームワーク。セキュリティ面でKMDFより安全だが、機能に制限がある。
cargo-wdk
RustでWindowsドライバーを開発するためのCargoエクステンション。テンプレート生成やビルドプロセスの自動化を担う。
WHCP(Windows Hardware Compatibility Program)
Microsoftが提供するハードウェア互換性認証プログラム。商用ドライバーをWindowsで配布するために必要な認証プロセス。
CodeQL
GitHubが開発した静的解析ツール。コードの脆弱性やバグを自動検出する機能を持つ。
unsafeブロック
Rustにおいて、通常の安全性チェックを回避してシステムレベルの操作を行うためのコード領域。メモリ安全性の保証が開発者の責任となる。
【参考リンク】
Rust公式サイト(外部)
Rustプログラミング言語の公式サイト。言語仕様、ドキュメント、学習リソースを提供
Microsoft公式サイト(外部)
Microsoft社の日本語公式サイト。AIとクラウドサービスの総合プラットフォーム
Windows Driver Kit (WDK) – Microsoft Learn(外部)
WindowsドライバーKit公式ダウンロードページ。ドライバー開発に必要なツールを提供
Microsoft Windows-drivers-rs GitHub(外部)
MicrosoftによるRust製Windowsドライバー開発プラットフォーム公式リポジトリ
【参考記事】
Towards Rust in Windows Drivers | Microsoft Community Hub(外部)
Microsoftが公開したRustドライバー開発への取り組みを詳述した公式記事
Rust lands in Windows 11 kernel: A new era for OS security(外部)
Windows 11カーネルでのRust実装がセキュリティに与える影響を解説
Towards Rust in Windows drivers – OSnews(外部)
OSNewsによるRustドライバー開発の技術的側面に焦点を当てた解説記事
Safer Drivers, Stronger Devices | Microsoft Community Hub(外部)
Microsoftが語るより安全なドライバー開発によるデバイス強化戦略
【編集部後記】
今回の話題は、テクノロジーの未来を考えるうえで見逃せない重要な転換点だと感じています。もし、あなたがエンジニアやIT業界の動向に興味をお持ちなら、WindowsやRustが結びつくことでどんな新しい可能性が生まれるのか、一緒に考えてみませんか。
日々進化するテクノロジーの現場では、小さな更新がやがて大きな変化をもたらします。Rustのような新しい技術によって社会の安全や課題がどう変わるか、みなさんはどんなことが気になりますか?デジタルの窓口として、皆さんの「未来を知りたい、触りたい、関わりたい」という気持ちに応えていきたいと思います。ぜひ、ご意見や感想をお聞かせください。