我有一个运行在嵌入式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的,在我启动该应用程序时未激活它。
这很棘手,但是即使我仍在尝试理解问题,我也找到了问题的根源。
因此,有一个选项是默认激活的内核配置:“防止代码重用攻击”。我停用了它,并且效果很好。
我仍然试图更好地了解它的实际功能,但是我猜想它可能会改变共享库的使用方式(也许)。
无论如何,停用它解决了我的问题。所以我认为我的问题解决了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句