我有一个自定义应用程序运行在嵌入式linux上(用Buildroot生成)。内核使用grsec进行修补,然后在linux-menuconfig中启用GRsecurity。我没有启用任何与Grsec相关的选项(除了防止代码重用)。
所有操作都很好,除了一个应用程序崩溃并导致内核恐慌之外。
我尝试过相同的应用程序,但没有在内核中启用Grsecurity (但仍在修补内核),而且运行良好。
该应用程序需要通过一个特殊设备(例如/dev/mydev)和/etc/rc文件中的引导时加载的模块访问harware。
我的想法是,也许grsec可以防止或改变模块的负载,即使lsmod或modinfo正确地显示了模块。
最麻烦的是,很难获得更多关于这方面的信息,因为内核恐慌会导致设备重新启动(所以我只能阅读消息的最后一行)。
以下是错误消息:
worker_thread+0x58/0x490
process_one_work+0x3b0/0x3b0
kkthread_create_on_node+0x1b0/0x1b0
有人知道是否需要在内核中配置一些东西,这样就可以正确地加载树外模块了吗?
我试着阅读官方的wikibook,但是大部分是关于RBAC的,当我启动应用程序时,RBAC没有被激活。
发布于 2018-08-31 07:52:46
这很棘手,但我找到了问题的根源,即使我还在努力理解它。
因此,有一个默认激活的内核配置选项:“防止代码重用攻击”。我把它关掉了,效果很好。
我仍然试图更好地理解它的实际作用,但我猜想它改变了共享库的使用方式(可能)。
不管怎么说,关闭它解决了我的问题。所以我认为我的问题解决了。
https://unix.stackexchange.com/questions/465501
复制相似问题