防止管道命令的内存泄露泄漏

防止管道命令的内存泄露泄漏

我正在设置一个批处理作业重新加密(转码?转加密?)文件,并且我担心内存泄露泄漏明文的可能性。该缺陷可能有其他名称,但基本上令人担忧的是,来自重新加密过程中间阶段的明文最终可能会被另一个进程写入磁盘。当具有明文的内存被释放但未清除,并且某些其他进程获取内存并将该内存写入磁盘(通过交换或写入大于所需的块等)时,可能会发生这种情况。作为嵌入式程序员,我习惯在释放敏感内存之前先清除它。但是,当从命令行进行加密时,我不确定会发生什么。假设我的批处理过程是这样的:

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

这里有多个敏感信息来源。关键命令、IV命令有两个,但最敏感的是 和 之间的管道opensslgpg其中将包含解密后的明文数据。

我能否确定用于保存通过openssl管道传输的明文输出的内存gpg在提供给另一个进程之前会被操作系统清除?如果没有,我可以做些什么来强制这种情况发生吗?我不希望另一个进程获得可能包含明文数据的内存块。bash如果有特定于 bash 的解决方案,我通常会使用。

相关内容