Kernel
grsec 導致應用程序的核心轉儲和核心恐慌
我有一個在嵌入式 linux 上執行的自定義應用程序(使用 Buildroot 生成)。核心使用 grsec 修補,然後在 linux-menuconfig 中啟用 GRsecurity。我沒有啟用更多與 Grsec 相關的選項(除了防止程式碼重用)。
一切正常,除了一個應用程序因 coredump 崩潰並導致核心崩潰。
我已經嘗試過相同的應用程序,但沒有在核心中啟用 Grsecurity(但仍在修補核心)並且它工作正常。
該應用程序需要通過一個特殊設備(比如 /dev/mydev)和一個在啟動時載入到 /etc/rc 文件中的模組進行硬體訪問。
我的想法是,儘管 lsmod 或 modinfo 正確顯示了模組,但 grsec 可能會阻止或更改模組的負載。
最令人不安的是,很難獲得有關此的更多資訊,因為核心恐慌會導致設備重新啟動(因此我只能閱讀消息的最後一行)。
這是錯誤消息:
worker_thread+0x58/0x490
process_one_work+0x3b0/0x3b0
kkthread_create_on_node+0x1b0/0x1b0
任何人都知道是否需要在核心中配置某些東西以便可以正確載入任何樹外模組?
我嘗試閱讀官方 wikibook,但其中大部分是關於啟動應用程序時未啟動的 RBAC。
這很棘手,但我找到了問題的根源,即使我仍在努力理解它。
因此,預設情況下啟動的核心配置有一個選項:“防止程式碼重用攻擊”。我停用了它,它工作正常。
我仍然試圖更好地理解它的實際作用,但我猜它改變了共享庫的使用方式(也許)。
無論如何,停用它解決了我的問題。所以我認為我的問題解決了。