Microsoft、安全で高効率のプログラミング言語として「Rust」を高く評価:メモリ破壊バグを避けるには
Microsoft Security Response Center(MSRC)は、ソフトウェアのセキュリティ確保と効率性の両方の要件を満たす最も有望なシステムプログラミング言語の一つとして、「Rust」を高く評価した。メモリ破壊バグをそもそも作り込まないことでセキュリティを確保できるという。
Microsoft Security Response Center(MSRC)は2019年7月16日(米国時間)、ソフトウェアのセキュリティを確保しつつ、効率性も保ちたい場合、利用可能なシステムプログラミング言語として、「Rust」を高く評価した。
MSRCによれば、「CVE(共通脆弱性識別子)」を割り当てられ、Microsoftが修正してきた同社ソフトウェアのセキュリティ脆弱(ぜいじゃく)性の大部分は1つの要因から起こっている。開発者がC/C++コードにうっかりメモリ破壊バグを作り込んでしまったことだ。
近年、Microsoftのコードベースはますます増加している。同社はオープンソースソフトウェアの利用を拡大しているが、メモリ破壊バグは依然として減っていない。MSRCは、このような脆弱性は、Microsoftだけに限られた問題ではないとも述べている。
解決策はこれまでもあったが……
開発者が安全なコードを作成できるよう支援するツールは多い。学習に1〜2カ月は必要となるような複雑な静的分析ツールや、クラッシュした場合の優先順位を決めることが可能な大規模なファジング、テイント解析、制約ソルバーなどだ。
開発者が安全なプラクティスを採用するためのガイダンスもある。セキュアな開発ライフサイクルや、コーディングガイドライン、何時間ものコードレビュー、トレーニング、脅威モデリングのガイダンスなどだ。
Microsoftによる改善もある。「Visual Studio」は潜在的な欠陥を強調する表示を出力する。同社はコンパイラを改善し、メモリ破壊を起こすようなエラーから開発者を守ろうとしてきた。
そもそもプログラミング言語がマズいのでは?
それにもかかわらず、メモリ破壊バグは一向に減っていない。これは開発者に非があるのだろうか。
開発者の本分は、セキュリティを心配することではなく、必要な機能を実装することだ。メモリに安全性の問題が残るコードを、そもそも開発者が作成できないような開発言語を使うことができれば、開発者はもちろん、セキュリティエンジニアにも、顧客にも恩恵があると、MSRCは述べている。
MSRCによると、メモリ破壊の脆弱性を発生させないと考えられる言語は、「C#」など幾つかある。
それでも、C++を使い続ける開発者が多いのは、C++にはさまざまな長所があるからだ。例えば、非常に高速なコードを記述でき、メモリやディスクの要件が低く、完成度が高いコードを記述でき、実行したときに何が起きるのか予測しやすく、対応プラットフォームが多く、追加コンポーネントをインストールしなくても使える、といった長所だ。
C#とC++のメリットを兼ね備えるのは
C#のような言語が提供するメモリ関連のセキュリティと、C++の効率性を兼ね備えた言語があれば、開発者にとって理想的だ。MSRCは、両方の要件を満たす最も有望なシステムプログラミング言語として、Mozillaの公式プロジェクトとして進化してきた「Rust」を挙げている。
さらにMSRCは、業界として真のセキュリティ対策を進めるには、脆弱性に対処するためのツールやガイダンスを提供するよりもむしろ、「開発者にそもそも脆弱性を発生させないための取り組みを行わなければならない」との見解を示した。
MSRCは、安全性の低いレガシー言語から、モダンで安全なシステムプログラミング言語への移行を促進するという観点から、Rustをはじめとする安全なシステムプログラミング言語の活用に向けて、Microsoftが行ってきた取り組みを今後も紹介していくという。
【訂正:2019年7月19日午後6時30分】本記事の初出時、「Microsoftが『CVE(共通脆弱性識別子)』を割り当て、修正してきた」としていた箇所は、正しくは「『CVE(共通脆弱性識別子)』を割り当てられ、Microsoftが修正してきた」でした。お詫びして訂正いたします。該当箇所は既に修正済みです(編集部)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 世界の開発者の実態は? Stack Overflowが2019年版の調査結果を公開
開発者向けQ&Aサイト「Stack Overflow」は、開発者に対する「世界で最も大規模かつ包括的な」年次調査結果を発表した。最も愛されている言語はRust、次いでPythonとTypeScript。最も高給取りだったのはサイト信頼性エンジニアとDevOpsの専門家だった。開発職に希望を感じている国は西欧諸国ではなく、中国や東欧諸国だった。 - サービスメッシュについては、何が議論されているか
KubeCon + CloudNativeCon 2018に関する連載の第3回は、IstioやEnvoyなど、サービスメッシュに関する話題をお届けする。 - AWS、サーバレスの進化とクラウドネイティブアプリケーションの広がり
AWS re:Invent 2018におけるAWS Step Functionsの新機能は、AWSにおけるクラウドネイティブアプリケーション開発へのメッセージを強化する役割を果たす。