特定のアプリケーションの寿命が終わった後、またはより良い方法では、一部のメモリを解放するたびに特定のアプリケーションのメモリをランダム化または破砕することは可能ですか?
次のコマンドラインユーティリティは完璧です。
シュレッドメモリ[オプション] [{アプリケーションパラメータ...}]
ベストアンサー1
Linux(私が望むすべての最新のマルチプロセスOSと同様)は、メモリ割り当て時にページが0としてのみ処理されるようにします。したがって、あるプロセスは、以前に別のプロセスで使用されていたメモリを読み取ることができません。
Linuxでは、ページが解放されるのではなく、ページが割り当てられたときにゼロ化が発生します。これにより、プロセスで以前に使用されていたメモリを読み取る2つの方法が残ります。
- カーネルバグの悪用
- RAMまたはスワップのコンテンツダンプ(ルートまたは物理アクセスが必要)
誰かがページが解放されるとすぐにページをゼロにできるLinuxカーネルパッチを提案しました(sanitize_mem
エピソード1、sanitize_mem
エピソード2)しかし、私が知っている限り、それは受け入れられません。
実際、最大の攻撃ウィンドウはスワップスペース(長い間データを保持するスペース)であり、これも攻撃者にとってはマイナーな問題ではありません(ディスクを盗んで乱雑なページを整理する必要があります)。最も解決しやすい方法でもあります。暗号化されたスワップスペースを使用してくださいdm-crypt
。