如何确保我的Linux程序不产生核心转储?

如何确保我的Linux程序不产生核心转储?,第1张

概述我有一个程序,将安全敏感信息(如私钥)保留在内存中,因为它在程序的整个生命周期中使用它们.该程序的生产版本将RLIMIT_CORE设置为0,以确保不会生成可能包含此敏感信息的核心转储. 然而,尽管在核心(8)联机页面中没有提到这一点,apport documentation on the Ubuntu wiki则声称, Note that even if ulimit is set to disa 我有一个程序,将安全敏感信息(如私钥)保留在内存中,因为它在程序的整个生命周期中使用它们.该程序的生产版本将RliMIT_CORE设置为0,以确保不会生成可能包含此敏感信息的核心转储.

然而,尽管在核心(8)联机页面中没有提到这一点,apport documentation on the Ubuntu wiki则声称,

Note that even if ulimit is set to Disabled core files (by specyfing a
core file size of zero using ulimit -c 0),apport will still capture
the crash.

我的过程中有没有办法(即不依赖于外部系统的配置),我可以确保从未生成过程的核心转储?

注意:我知道有很多方法(如在下面的评论中提到的方法),具有根或进程所有者权限的用户仍然可以访问敏感数据.我正在瞄准的是通过将敏感数据保存到磁盘,将其发送到Ubuntu的错误跟踪系统或类似的事情来防止意外的暴露. (感谢Basile Starynkevitch做出这一点.)

解决方法 根据 the POSIX spec,核心转储仅在响应其 *** 作是默认动作的信号时发生,其默认 *** 作是“以额外的 *** 作异常终止进程”.

所以,如果您在the description of signal.h中向下滚动到列表,“默认 *** 作”列中的所有“A”都是您需要担心的信号.使用sigaction捕获所有这些,只需在信号处理程序中调用exit(或_exit).

我相信这些是POSIX让您生成核心转储的唯一方式.可以想象,linux可能会为此而设立其他“后门”不幸的是,我不够一个内核专家,以确保…

总结

以上是内存溢出为你收集整理的如何确保我的Linux程序不产生核心转储?全部内容,希望文章能够帮你解决如何确保我的Linux程序不产生核心转储?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存