パイプ命令によるメモリリークの防止

パイプ命令によるメモリリークの防止

ファイルを再暗号化(トランスコーディング?再暗号化?)するためのバッチジョブを設定していますが、メモリリークによってプレーンテキストが漏洩する可能性が心配です。欠陥には異なる名前があるかもしれませんが、基本的に懸念されるのは、再暗号化プロセスの途中でプレーンテキストが別のプロセスによってディスクに書き込まれることです。これは、プレーンテキストを含むメモリが解放されたが消去されない場合、他のプロセスがメモリを取得し、そのメモリをディスクに書き込む場合(必要以上のブロックを交換または書き込むなどの方法で)発生する可能性があります。組み込みプログラマとして、私は機密メモリを公開する前にこれを消去するのに慣れています。しかし、コマンドラインで暗号化すると何が起こるのかわかりません。私のバッチプロセスが次のようになるとします。

openssl enc -aes-256-cbc -in input.enc -K $(get key command) -iv $(get iv command) \
| gpg –encrypt -r user@email -o output.gpg

ここには機密情報のソースがいくつかあります。 2つのコアコマンドとIVコマンドがありますが、最も敏感なコマンドはとの間のパイプラインでありopensslgpgこれには復号化されたプレーンテキストデータが含まれます。

opensslパイプで接続されたプレーンテキスト出力を保持するために使用されたメモリが、他のgpgプロセスに提供される前にオペレーティングシステムによってクリアされていることを確認できますか?そうでなければ、強制的にこのようなことが起こるようにする方法はありますか?私は他のプロセスがプレーンテキストデータを含むことができるメモリブロックを取得したくありません。bashbash関連のソリューションがある場合は、通常これを使用します。

ベストアンサー1

おすすめ記事