メモリ安全性とは【用語集詳細】
メモリ安全性(Memory Safety)は、プログラムやソフトウェアがメモリを管理する際の問題に関する概念です。
コンピュータプログラムがメモリを取り扱う際に、バッファオーバーフローやユーズアフターフリー、レースコンディション、メモリリークなどの様々なバグを引き起こすことがあります。こうしたメモリ管理に起因するバグは、攻撃者による悪用、例えばリモートコード実行などの原因となります。
このため、メモリ安全性は、サイバーセキュリティにとって重要な考慮事項となっています。
プログラミング言語においては、JavaやC#がその構造にメモリ保護機構が含まれているため、メモリ安全である一方、CやC++はそのようなメカニズムなしに直接メモリにアクセスできることから、メモリ不安全であると定義されます。
米国家安全保障局は、ソフトウェアの安全性とサイバーセキュリティの向上のために、可能であればメモリ安全なプログラミング言語を利用し、こういった言語への戦略的な移行を検討することを推奨しています。NSAのガイダンスでは、メモリ安全な言語としてC#、Go、Java、Ruby、Swiftが挙げられています。