Rustの平和:CおよびC++コードのメモリバグがセキュリティ問題を引き起こすため、Microsoftは再び代替案を検討している

Table of Contents

Rustの平和:CおよびC++コードのメモリバグがセキュリティ問題を引き起こすため、Microsoftは再び代替案を検討している

Microsoft Security Response Center (MSRC) は、C および C++ コーディングに内在するリスクについて熱く語り、「安全でないレガシー言語」を捨て、より現代的で安全な言語に移行する時期が来ていると主張している。

レドモンドに拠点を置く同社は、Windows オペレーティング システムやコア Office アプリケーションなど、同社にとって最も重要なプログラミングに関しては長年 C++ を採用してきた。

しかし、MSRC の主席セキュリティエンジニアリングマネージャーである Gavin Thomas 氏は、次のように述べています。

同氏はさらに、「おそらく、安全でないレガシー言語を廃止し、より安全な現代のシステムプログラミング言語に移行する時期が来ているのだろう」と付け加えた。

Microsoftには、自動メモリ管理のおかげでより安全に使用できるプログラミング言語が他にもあります。C#や.NETファミリー、そしてJavaScriptにコンパイルされるTypeScriptなどがその例です。これらの言語はMicrosoftとその顧客の間で広く使用されていますが、あらゆる用途に適しているわけではありません。

Microsoft が Vista (コード名 Longhorn) での最初の試みとして、C# と Windows Presentation Foundation を多用して Windows シェルを書き直そうとしたとき、その結果は信じられないほど遅くなり、同社は 2004 年にネイティブ コードへの有名な「リセット」を行いました。これが本当に .NET のせいであったかどうかはわかりませんが、記憶は長く、この経験はおそらく Windows チームが Windows Phone で使用されていた Silverlight を採用するのではなく、C++ を使用して Windows 8 のタブレット側用の新しいユーザー インターフェイス レイヤーを作成する要因になったでしょう。

「開発者が.NET C#のような言語のメモリセキュリティ保証とC++の効率性をすべて組み合わせることができればいいのですが。もしかしたら実現できるかもしれません」とトーマス氏は書いている。

彼が念頭に置いている言語は、速度、メモリとスレッドの安全性、その他のセキュリティ機能を重視したシステムプログラミング用に設計された Mozilla の Rust です。

空想のロケットに乗っている人

Rustを信頼する:Braveは広告ブロックエンジンをスーパー言語で書き直し、速度制限を突破

続きを読む

トーマス氏はまた、Microsoftが新たなブログシリーズで、Rustをはじめとする「より安全なシステムプログラミング言語」を探求していくと約束した。それ自体はさほど注目に値するものではない。より興味深いのは、この投稿が示唆するところだ。トーマス氏は次のように書いている。

その役割が、C や C++ を使用しないことの利点について外部に説教するだけにとどまらず、社内の開発チームに「安全でないレガシー言語」から離れるよう説得する領域にまで及ぶ場合、それは企業文化に大きな影響を与えます。

もちろん、C++で安全にコーディングする方法は存在します。例えば、標準テンプレートライブラリ(STL)が提供するスマートポインタやガベージコレクションライブラリなどです。マイクロソフトはこれまで、安全なコーディング手法の推進と問題検出ツールの提供に注力してきました。しかし、トーマス氏が指摘するのは、メモリバグの防止は開発者にとって負担であり、今ではその負担を回避できる可能性があるということです。

とはいえ、Microsoftも、トーマス氏が言及するオープンソースプロジェクトも、容易に方向転換できるわけではありません。既存のコード、開発者のスキル、そしてCとC++をめぐるツールやライブラリの巨大なエコシステムを考えると、たとえそれが正しい選択であるというコンセンサスがあったとしても、より安全な言語への移行は時間と労力を要するプロセスとなります。

それでも、これはマイクロソフトの小さいながらも影響力のある一角からの注目すべき発言であり、広く議論されるとともに、Mozilla の Rust プロジェクトへの注目が集まることになるでしょう。®

Discover More