CyberGlossary

脆弱性

メモリリーク

別称: リソースリーク

定義

不要になったメモリがアロケータへ返却されない欠陥。利用可能メモリを徐々に枯渇させ、性能低下やクラッシュを招く。

メモリリーク(CWE-401)は、プログラムが確保したメモリへの参照を解放せずに失う現象です。時間とともにプロセスのワーキングセットが膨張し、性能が落ち、スワップが酷使され、最終的に OS がプロセスを終了させたり新規受付を停止したりします。多くは信頼性の問題ですが、攻撃者が任意にトリガーできる長時間稼働サービスでは DoS の増幅装置となり得ます。ヒープ以外にもカーネルオブジェクト、ファイルディスクリプタ、ソケット、GPU リソースの未解放も含みます。対策はプロファイリング(Valgrind、ASan/LSan、heaptrack)、所有権規律(RAII、スマートポインタ)、継続的負荷試験、言語レベルの GC などです。暗号文脈で言う "メモリリーク"(メモリ内容の漏えい)は本来「情報漏えい」と呼ぶ方が正確です。

  • リクエスト毎の確保が解放されない長時間稼働 Web サーバ。
  • skb バッファを解放し忘れシステムメモリを枯渇させるカーネルモジュール。

関連用語