可动态加载的Linux安全模块



我在LWN上看过很多关于允许动态加载Linux安全模块(LSM(的文章,但无法找到关于如何实现这一点的具体信息。LSM挂钩(我不知道这是否是正确的术语(不再在内核中导出,但它们的地址可以用kallsyms_lookup_name检索,然后分配给函数声明。

有人提到LSM挂钩不可卸载,但这是真的吗?这到底意味着什么?如果一个Linux可加载内核模块注册了一些钩子,它以后是否无法注销它们?为什么会出现这种情况?是否有一种变通方法或方法来强制它们卸载?

动态可加载LSM的编写方式是否必须与内置LSM不同?或者两者使用相同的约定和接口?

从技术上讲,可以对内核进行热批处理,为任何东西添加挂钩。https://stackoverflow.com/a/6742086/2079814

另一种可能性是利用kpatch注入LSM。

这两种选择都不被视为最佳实践,但在理论上应该有效。我以前从未见过后一种方法(kpatch(。

最新更新