在OpenBSD上:
我想强化OpenBSD安装。对于这个imho:
sysctl -w kern.wxabort=1
会更安全,默认值为0.
W^X violations are no longer permitted by default. A kernel log message
is generated, and mprotect/mmap return ENOTSUP. If the sysctl(8) flag
kern.wxabort is set then a SIGABRT occurs instead, for gdb use or
coredump creation.
这样:
SIGABRT Abnormal termination
ENOTSUP Operation not supported (POSIX.1)
所以对我来说(不是程序员)意味着SIGABRT可能更好,因为它会杀死(?)过程,而不仅仅是信息消息。从安全角度来看,杀死行为不当的过程更加安全。
问题:这是真的吗?使用SIGABRT更安全吗? SIGABRT真的杀了这个过程吗?或者他们(SIGABRT与ENOTSUP)几乎相同并且不会杀死这个过程?
答案 0 :(得分:1)
防止操作是获得安全性的地方。杀死这个过程就是奖励惩罚。我们谈论的是流程而不是人,所以惩罚是没有必要的。
问题是您感兴趣的流程是否能很好地处理错误。如果收到错误代码会导致它们脱轨并做出不良后果,那么您可能需要向它们发送信号。或者,正如文档所说,如果你想要一个coredump或者想要使用调试器,SIGABRT会很有用。
请记住,可以捕获SIGABRT。如果需要,进程可以忽略信号。
最重要的是,启用此选项并没有真正增加的安全性。