Entry № 747
メモリリーク
メモリリーク とは何ですか?
メモリリーク不要になったメモリがアロケータへ返却されない欠陥。利用可能メモリを徐々に枯渇させ、性能低下やクラッシュを招く。
メモリリーク(CWE-401)は、プログラムが確保したメモリへの参照を解放せずに失う現象です。時間とともにプロセスのワーキングセットが膨張し、性能が落ち、スワップが酷使され、最終的に OS がプロセスを終了させたり新規受付を停止したりします。多くは信頼性の問題ですが、攻撃者が任意にトリガーできる長時間稼働サービスでは DoS の増幅装置となり得ます。ヒープ以外にもカーネルオブジェクト、ファイルディスクリプタ、ソケット、GPU リソースの未解放も含みます。対策はプロファイリング(Valgrind、ASan/LSan、heaptrack)、所有権規律(RAII、スマートポインタ)、継続的負荷試験、言語レベルの GC などです。暗号文脈で言う "メモリリーク"(メモリ内容の漏えい)は本来「情報漏えい」と呼ぶ方が正確です。
● 例
- 01
リクエスト毎の確保が解放されない長時間稼働 Web サーバ。
- 02
skb バッファを解放し忘れシステムメモリを枯渇させるカーネルモジュール。
● よくある質問
メモリリーク とは何ですか?
不要になったメモリがアロケータへ返却されない欠陥。利用可能メモリを徐々に枯渇させ、性能低下やクラッシュを招く。 サイバーセキュリティの 脆弱性 カテゴリに属します。
メモリリーク とはどういう意味ですか?
不要になったメモリがアロケータへ返却されない欠陥。利用可能メモリを徐々に枯渇させ、性能低下やクラッシュを招く。
メモリリーク からどのように防御しますか?
メモリリーク に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
メモリリーク の別名は何ですか?
一般的な別名: リソースリーク。