Microsoftは、Rustプログラミング言語でWindowsのコアライブラリを書き換え、よりメモリセーフなコードが既に開発者に提供されている。
WindowsのOSセキュリティの責任者であるDavid Weston氏は、先月のBlueHat IL 2023でWindowsのカーネルにRustが導入されたことを発表した。
発表の中でWeston氏は、MicrosoftがWindowsカーネルにRustを採用したことについての進捗を説明した。Microsoftがこの言語に興味を持った理由はいくつかあるが、そのうちの1つがRustが提供するメモリの安全性とセキュリティだ。Weston氏は、Windows 11がカーネルにRustを組み込んで起動するようになるのはもうすぐで、本当にすぐかもしれない、と付け加えた。実際、今から数週間以内に実現する可能性がある。
彼は、「今後数週間から数ヶ月のうちに、カーネルにRustを組み込んだWindowsが実際に起動するようになるでしょうね。基本的な目標は、C++の内部データ型のいくつかをRustの同等型に変換することです」と述べた。
Microsoftは、ユーザーの手に渡る前にメモリセーフティバグを見つけて修正するための手段として、数年前からRustに関心を示していた。これらの種類のバグは、2006年以降にWindows製品で修正されたCVE一覧にリストされたセキュリティ脆弱性の約70%の原因だった。
Rustツールチェーンは、攻撃者がソフトウェアの弱点を攻撃する機会を減らすために、攻撃可能なコードがビルドおよび出荷されることを防ぐことを目指している。簡単に言えば、Rustはメモリセーフティと同様の保護に焦点を当てており、結果的に生成されるコード中のバッドバグの数を減らすことが出来る。
Googleなどのライバル企業も、Rustに対する支持を公言し、実際に導入を始めている。
メモリセーフプログラミングへの業界の関心が高まる中、MicrosoftのRustへの取り組みはますます熱心になっている。Microsoft Azure CTOであるMark Russinovich氏は、新しいソフトウェアプロジェクトがC/C++の代わりにRustを使用するように宣言した。
WindowsのRustリファクタリングは、2020年にWindowsのDWriteエンジンを含むWindows App SDKの実装であるDWriteCoreから始まった。DWriteCoreは現在、約152,000行のRustコードと約96,000行のC++コードで構成されている。
そのため、メモリセーフ性の向上に加え、シェーピング(置換)およびOpenType Library Services(OTLS)を使用したグリフのパフォーマンスが5〜15%高速化された。これらの改善はすべて、開発者にすでに提供されている。
Microsoft Windowsグラフィックデバイスインターフェイス(Win32 GDI)もRustに移植され、現在36,000行のRustコードが含まれるとのことだ。
「実際には、Windowsカーネルには今、Rustで実装されたSysCallがあります」とWeston氏は述べている。
しかし、MicrosoftのRustに対する支持にも限界があります。「RustでWindowsを書き換えることは、おそらく近い将来起こることはないでしょう。だから、Rustを愛しているとしても、私たちのネイティブコードをより多く保護することを含む戦略が必要です」とWeston氏は述べている。
しかし、Microsoftからの限定的なサポートでも、コードの貢献によりRustがより能力を発揮し、全体的なオープンソースコミュニティにとってメリットがあると言えます。
オープンソースソフトウェア開発者であり、PythonのFlaskの責任者であり、現在はSentryのセキュリティエンジニアであるArmin Ronacher氏は、The Registerに電子メールで次のように語っている。「特に、Microsoftが既存のコンパイラを再利用することを期待しているので、その結果、より良いPDB [Program Database]サポートになることを願っています。Windowsでは、デベロッパーツールサポートがDWARFベースのプラットフォームと比較して遅れているためです」
PythonとRustを使用する開発者であり、Pydanticの創設者であるSamuel Colvin氏は、The Registerに次のように語っている。「Microsoftがこのように先進的な考えを持っているのに感銘を受けていますが、あまり驚きません。エンジニアたちからRustの採用を求められていると思います。今日アプリケーションを構築する場合、パフォーマンスが重要であるか、低レベルである場合、Rustは当然の選択肢です」。
Colvin氏は、優れたRustエンジニアが普及しているわけではないかもしれないが、優れたC/C++エンジニアよりもRustエンジニアを見つけるのが簡単だと信じているという。
「Rustの経験が豊富な人々は少ないかもしれませんが、学ぼうとするエンジニアは多くいます。安全なコードを書くことがどれだけ困難であるか、Rustで実現することは数倍簡単です。私たちRustを頼りにしている人々にとって、MicrosoftがRustを使用し、そしてそのサポートを期待できることは本当にエキサイティングです」と、Colvin氏は述べている。
Source
コメントを残す