メモリー安全性に優れた言語の採用機運が高まる–開発者はどう向き合うべきか
今回は「メモリー安全性に優れた言語の採用機運が高まる–開発者はどう向き合うべきか」についてご紹介します。
関連ワード (セキュリティ等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、ZDNet Japan様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Consumer Reportsの調査レポートによると、政府関係や産業界の開発者らは新たな製品やツールの開発時に、メモリー安全性に優れた言語を使用するよう努め、そうした言語に移行すべき最も重要なライブラリーやパッケージを洗い出すべきだという。
コンシューマー向け製品の評価で知られる非営利の同組織はこのレポートのために、「C」や「C++」ではなく、「Rust」のような「メモリー安全性を備えた」言語の導入を後押しする上で取り得る方法について、さまざまな分野の人たちに問いかけたという。同レポートは、「ユーザーの行動や、さらにはコンシューマーの選択を通じても解決できない業界全体の脅威」に取り組みたいとした上で、そういった問題の1つとして「メモリーの非安全性」に着目したとしている。
「Future of Memory Safety–Challenges and Recommendations」(メモリー安全性の未来–課題と推奨)と題されたこのレポートは、大学でのメモリーセーフな言語の採用に向けた取り組みや、そういった言語に対する不信感、他の言語で記述されたコードベースへのメモリーセーフ言語の導入の他、動機付けや公的なアカウンタビリティーといったさまざまな問題に目を向けている。
CやC++で記述されたコードベースのメモリー安全性を強化するために、Rustを採用しようとするプロジェクトが過去2年間で増えてきている。そういった中には、Metaのイニシアチブや、Googleの「Android Open Source Project」、主にC++で記述されている「Chromium」(限定的な採用にとどまっている)、Linuxカーネルといったプロジェクトが含まれている。
Microsoftは2019年に、過去12年間で対処したセキュリテイバグの70%がメモリー安全性の問題だったことを明らかにした。この割合の高さは、「Windows」の大半がCとC++で記述されていることに起因している。2022年には米国家安全保障局(NSA)が開発者らに対し、C++から「C#」や「Java」「Ruby」、Rust、「Swift」に向けた戦略的移行を推進するよう推奨している。
メモリーセーフな言語(主にRustを指しているが、同言語に限られるわけではない)に向かう流れは、C++を生み出したBjarne Stroustrup氏とそのコミュニティーにさえ「C++の安全性」に関する計画の立案を促すことになった。同言語は、そのパフォーマンスの高さから開発者によって支持されており、組み込みシステムでは依然として大きな勢力を保っている。現時点においてはRustよりも幅広い領域で使用されているが、いずれもシステムプログラミング向けの言語として人気を博している。
Consumer Reportsの調査には、情報セキュリティ分野の数名の著名な専門家に加えて、米政府のサイバーセキュリティ・インフラセキュリティ庁(CISA)、Internet Security Research Group、Google、米国家サイバー長官オフィスなどの代表者の意見も反映されている。
レポートでは、計算機科学分野の大学教員には学生に「危険性を説明するための絶好の機会」があり、例えば、学生に成績を付ける際にメモリー安全性に関するミスを重視するといった方法も取ることも可能だと提案している。ただし、一部の授業でRustを取り扱うことで、本質的ではない部分で授業の複雑さが増してしまう可能性があることや、多くの学生にとってはC言語の方が雇用が得られやすいと考えられている一方で、Rustは学びにくい言語であるという認識があることも指摘されている。