2025年8月26日 2:35 PM

より安全なドライバーが、デバイスの信頼性を強化する

より安全なドライバーが、デバイスの信頼性を強化する

※本ブログは、米国時間 7 月 24 日に公開された “Safer Drivers, Stronger Devices” の抄訳を基に掲載しています。

Surface はどのようにして Rust Windows ドライバー開発を推進しているのか

デバイスのセキュリティに関して言えば、多くの場合、話題の中心は、ソフトウェア更新、ウイルス対策ツール、クラウドの保護です。しかし、ハードウェアと直接やり取りするコードであるドライバーについてはどうでしょうか? これらの下位コンポーネントは、デバイスのセキュリティの重要な基盤を形成し、パフォーマンスと信頼性において重要な役割を果たします。

Surface では、メモリの安全性を中心に置いて設計されたモダンなプログラミング言語である Rust を導入することで、Surface デバイスとドライバーの安全性と信頼性を向上させ、Windows エコシステム全体のセキュリティ レベルを引き上げています。

前回の更新以降、Surface チームはドライバー開発用のオープンソースの windows-drivers-rs に対する取り組みをさらに進め、Rust で記述した Surface ドライバーの開発と提供に取り組んでいます。ここでは、Surface デバイスのセキュリティ体制を強化するだけでなく、NSA と CISA の最近の共同プレス リリースで強調されているとおり、メモリの安全性を向上させるための業界全体の取り組みや全国的な取り組みもサポートしています。

Rust Windows ドライバー プラットフォームの効果

windows-drivers-rs とは

windows-drivers-rs は、Rust プログラミング言語を使用した Windows ドライバー開発に焦点を当てた、マイクロソフトのオープンソース プロジェクトです。マイクロソフトはエコシステム全体の開発者に、Rust に貢献し、Rust を学び、Windows 上での Rust ドライバー開発の未来を形作るように呼びかけています。このプラットフォームへの主要な貢献を行っているのが、Surface ソフトウェア チームです。

GitHub リポジトリには次のものがあります。

  • Rust クレートRust での Windows ドライバー開発を可能にするクレートのコレクション。
  • ドキュメント、サンプル、ガイド: 開発者が Rust での Windows ドライバー開発を始めるのに役立ちます。
  • コミュニティによるコラボレーション: Windows でのシステムおよびカーネル開発のための Rust の発展に関心を持つ幅広いコミュニティからの貢献、フィードバック、コラボレーションを歓迎しています。
GitHub 上の windows-drivers-rs のオープン リソース リポジトリにアクセスする

GitHub 上の windows-drivers-rs のオープン リソース リポジトリにアクセスする

なぜ Rust で Windows ドライバーを記述するのか

ドライバー開発は、長い間 C と C++ に依存してきました。これらの言語は、パフォーマンスは良いものの、バッファー オーバーフロー、NULL ポインター参照解決、競合状態などのよくある落とし穴に対する保護は貧弱です。Rust で Windows ドライバーを記述すると、これが変わります。

変化の内容は以下のとおりです。

  • メモリの安全性: Rust の所有権モデルと借用チェッカーにより、セキュリティの脆弱性につながることの多いバグのクラス (use-after-free、double-free など) 全体を排除できます。
  • 型と同時実行の安全性: Rust は、既定で厳密な型のチェックを強制し、コンパイル時にデータの競合を捕捉します。これにより、マルチスレッド ドライバー コードはより安全で予測可能なものになります。
  • コンパイル時の抽象化と保証: ゼロコスト抽象化と Rust の強力な静的分析を活用することで、コードが実行される前のコンパイル時に、多くのバグが検出されます。
  • 相互運用性: Rust の FFI (他言語関数インターフェイス) を活用することで、開発者は Rust と既存の C/C++ ドライバー コード間の相互運用性を実現でき、既存のプロジェクトで段階的に Rust を採用しやすくなります。

その結果どうなったでしょうか。ドライバーはより安全になっただけでなく、メンテナンスや進化も容易になりました。

Surface の開発と提供

マイクロソフトは Rust ドライバーを出荷製品に組み込むことで、メモリの安全性を高めて攻撃対象領域を削減し、日々 Surface を利用しているお客様向けに信頼性を向上させています。以下の Surface の Copilot+ PC には、Rust で記述され、windows-drivers-rs プラットフォーム上で構築されたコードを使用するドライバーが含まれており、このような取り組みをお伝えできることを誇りに思います。

今後は?

Surface では、焦点を絞ったいくつかの取り組みを通じて、引き続き Rust ドライバー開発への投資を強化していきます。

  • Rust による Windows ドライバーのプラットフォームを強化して、より幅広い種類のドライバーに対応し、より多くのハードウェア シナリオで利用できるようにします。
  • 機能サポートを強化して、Rust ベースのツールチェーンを既存の Windows Driver Kit (WDK) に近づけ、開発者がより簡単に移行できるようにします。
  • 安全なオープンソースの抽象化の利用可能性を拡大します。現在、Surface デバイスに含まれるすべての Rust ドライバーは、windows-drivers-rs クレート ファミリー (特に wdk-sys クレート) によって提供される FFI 機能の上に積み重ねられた、内部的に開発された安全な抽象化を利用しています。将来的には、パートナーと連携して、これらの抽象化を一般化し、GitHub のパブリック リポジトリで利用できるようにして、より広範なコミュニティでの使用と貢献を可能にする予定です。
  • マイクロソフト全体で連携して、社内での導入を促進し、ツール、ドキュメント、長期的な保守性を向上させていきます。

これらの取り組みはすべて、Surface ドライバーの信頼性と安全性をより高めることを目的としています。これらの取り組みは、長期的には Surface デバイスを向上させるだけでなく、すべてのハードウェア パートナーの Windows エコシステムを強化するのに役立ちます。

この取り組みへの参加

安全なシステムやモダンなツールに関心がある場合、あるいは Windows 上の Rust にただ興味があるだけでも、ともに歩んでいけることを楽しみにしています。

  • Surface チームは、今年 9 月にシアトルで開催される RustConf 2025 に参加しますので、私たちを見つけてご意見をお聞かせいただき、Windows のより安全な基盤の構築にご協力ください。
  • GitHub の Windows Driver Rust プロジェクトをご覧ください。ディスカッションを開始したり、問題を提出したり、プルリクエストを送ったりできます。このプロジェクトについてお問い合わせいただくこともできます。

一緒にメモリの安全性をデフォルトにしていきましょう!!

Join the conversation