米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨
今回は「米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨」についてご紹介します。
関連ワード (セキュリティ等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、ZDNet Japan様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
米国家安全保障局(NSA)は米国時間11月10日、ソフトウェアのメモリー安全性強化に向けたガイダンスを公開した。同機関はその中で開発者らに対して、ハッカーらによるリモートコード実行(RCE)をはじめとするさまざまな攻撃からコードを保護するために、C#やGo、Java、Ruby、Swift、Rustといったメモリー安全性の高い言語に移行するよう推奨している。
これらの言語の中では、Javaが企業向けアプリや「Android」アプリの開発で最も幅広く使用されている一方、Swiftは「iOS」アプリの開発環境に取り込まれている点もあって人気プログラミング言語の上位に入っている。また、RustはシステムプログラミングにおいてCやC++の代替として注目を集めつつある。
同ガイダンスには「可能であれば、メモリー保護機能が言語自体にほとんど、またはまったく内在していないCやC++といった言語から、メモリー安全性の高い言語への移行に向けた戦略的遂行手段を検討することを組織や企業に推奨する。メモリー安全性の高い言語として、C#やGo、Java、Ruby、Swiftなどが挙げられる」と記されている。
NSAはGoogleやMicrosoftにおける最近の調査結果を引用している。それらによると、「Google Chrome」や「Windows」内で発見されたセキュリティ問題の70%はメモリー関連に起因するものであり、その多くはCやC++といった、メモリー関連の脆弱性を作り込んでしまいやすい言語で記述されたために生まれたものだという。
NSAは、「Software Memory Safety」(ソフトウェアのメモリー安全性)と題した「Cyber Security Information Sheet」(サイバーセキュリティ情報シート)に、「これらの脆弱性は、RCEやその他の破壊的効果をもくろむ、悪意を有したサイバーアクターらによって利用される恐れがある。また、こうした攻撃行動はしばしば、デバイスへの侵入や、大規模なネットワーク侵害に向けた第一段階につながる可能性がある」と記している。
「CやC++などのよく使われている言語は、メモリー管理という点で多大な自由度と柔軟性があるものの、メモリー参照関連で必要となるチェックについては、プログラマー側での実行に大きく依存している」
このためNSAは、アプリケーション開発であるかシステムプログラミングであるかを問わず、可能であればメモリー安全性の高い言語を使用するよう推奨している。
同ガイダンスには「可能な場合にはメモリー安全性の高い言語を使用するよう推奨する」と記されている。
情報セキュリティ関連のプロフェッショナルの多くは、メモリー安全性の高い言語に関する議論を何度も見聞きしているはずだが、すべての開発者がそうであるとは限らない。しかし、Javaの親とも言えるJames Gosling氏が、Javaを生み出した理由と手段に関する最近のディスカッションの中で指摘していたように、この問題が数十年前から存在している点を考慮すると、すべての開発者が理解しておくべきものだと言えるだろう。