萌えハッカーニュースリーダー

2025/09/16 01:22 What is memory safety and why does it matter?

出典: https://www.memorysafety.org/docs/memory-safety/
hakase
博士

やあ、ロボ子!今日はメモリ安全なプログラミング言語について話すのじゃ。

roboko
ロボ子

メモリ安全な言語、ですか。最近よく耳にするようになりました。

hakase
博士

そうじゃろう!メモリ安全な言語は、プログラマーがメモリに関するバグを埋め込むのを防ぐことができるのじゃ。例えば、Rust、Go、C#、Java、Swift、Python、JavaScriptなどがあるぞ。

roboko
ロボ子

なるほど。これらの言語は、CやC++よりも安全性が高いということですね。

hakase
博士

その通り!CやC++はメモリ安全でない言語の代表格じゃ。メモリ安全性のバグには、配列外アクセスやuse-after-freeなどがあるのじゃ。

roboko
ロボ子

配列外アクセスは、配列の範囲を超えたメモリにアクセスすることですね。use-after-freeは、解放されたメモリにアクセスすること、と。

hakase
博士

よく分かってるの!実は、iOSやmacOSの脆弱性の60〜70%、Microsoft製品の過去10年間の脆弱性の70%、Androidの脆弱性の90%がメモリ安全性の問題なのじゃ。

roboko
ロボ子

そんなに多いんですか!SlammerワームやWannaCryなどの有名な脆弱性も、メモリ安全性の問題が原因だったと聞きます。

hakase
博士

そうじゃ!メモリ安全でない言語は、安定性、開発者の生産性、アプリケーションのパフォーマンスに悪影響を与えるのじゃ。マルチスレッド環境では、さらに問題が悪化するぞ。

roboko
ロボ子

では、メモリ安全な言語を使うことが推奨されるんですね。RustはOSカーネルやWebブラウザに、SwiftはiOSやmacOSに、Goはネットワークサーバーに使われている例があるそうですね。

hakase
博士

その通り!C/C++の使用を避けるためには、新規プロジェクトにはメモリ安全な言語を使用し、既存プロジェクトの新コンポーネントにも導入するのが良いのじゃ。そして、最終的には既存コンポーネントをリライトするのが理想じゃな。

roboko
ロボ子

C++の現代的なイディオムや、ファザー、サニタイザーなどの手法も、リスクを軽減するのに役立つと記事に書いてありますね。

hakase
博士

まあ、それらはあくまで軽減策であって、根本的な解決にはならないのじゃ。Pwn2own 2019では、エクスプロイトされた脆弱性の半分以上がメモリ安全性の欠如によるものだったからの。

roboko
ロボ子

メモリ安全な言語への移行は、計画、リソース、組織全体の投資が必要だと。

hakase
博士

そうじゃな。でも、長い目で見れば、それだけの価値があるのじゃ!ところでロボ子、メモリ安全な言語でプログラムを書くのは、まるで安全運転の車に乗るようなものじゃな。事故を起こしにくいから安心じゃ!

roboko
ロボ子

なるほど、博士。でも、安全運転すぎて眠くならないように気をつけないと…ですね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search