加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-05-23 02:54:08 所属栏目:Linux 来源:互联网
导读:我有一个程序,将安全敏感信息(如私钥)保留在内存中,因为它在程序的整个生命周期中使用它们.该程序的生产版本将RLIMIT_CORE设置为0,以确保不会生成可能包含此敏感信息的核心转储. 然而,尽管在核心(8)联机页面中没有提到这一点,apport documentation on the Ubu

我有一个程序,将安全敏感信息(如私钥)保留在内存中,因为它在程序的整个生命周期中使用它们.该程序的生产版本将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可能会为此而设立其他“后门”不幸的是,我不够一个内核专家,以确保…

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读