2016-10-02 53 views
0

在OpenBSD:SIGABRT與ENOTSUP

我想硬化OpenBSD的安裝。對於這個恕我直言:

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)幾乎相同,不會殺死這個過程?

回答

1

防止操作是您獲得安全性的地方。殺死這個過程是獎懲。不過,我們正在談論流程而不是人,所以懲罰是沒有必要的。

問題是你感興趣的進程是否處理錯誤。如果得到錯誤代碼會導致它們出軌並做不好的事情,那麼您可能需要向它們發送信號。或者,正如文檔所述,如果你想要一個coredump或者想用一個調試器加入,SIGABRT會很有用。

請記住,SIGABRT可以被捕獲。進程可以忽略信號,如果他們想要的話。

底線,啓用此選項沒有真正的附加安全性。