我有一个程序将安全敏感信息(例如私钥)保存在内存中,因为它在程序的整个生命周期中都会使用它们。该程序的生产版本将 RLIMIT_CORE 设置为 0,以确保永远不会生成可能包含此敏感信息的核心转储。
core(8)
然而,虽然手册页中没有提到这一点,但 Ubuntu wiki 上的 apport 文档声称,
请注意,即使 ulimit 设置为禁用核心文件(通过使用 ulimit -c 0 将核心文件大小指定为零),apport 仍将捕获崩溃。
在我的进程中是否有办法(即,不依赖于它外部的系统配置)可以确保永远不会生成我的进程的核心转储?
注意:我知道有很多方法(例如下面评论中提到的方法),具有 root 或进程所有者权限的用户仍然可以访问敏感数据。我的目标是通过将敏感数据保存到磁盘、发送到 Ubuntu 错误跟踪系统或类似的方式来防止无意暴露敏感数据。(感谢Basile Starynkevitch明确表示。)