首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非排他性(可堆叠的) Linux安全模块可以使用安全漏洞吗?

非排他性(可堆叠的) Linux安全模块可以使用安全漏洞吗?
EN

Stack Overflow用户
提问于 2020-08-20 16:04:45
回答 1查看 164关注 0票数 1

我正在试验Linux安全模块,尝试制作一个模块。

我对它们应该如何工作的主要知识来源是邮件列表归档和现有LSM的源,以及Linux文档中关于它们的几页。

据我所知,有两种LSMs。

  • 像SELinux / AppArmor这样的独占LSM,在它们的LSM定义中设置了LSM_FLAG_EXCLUSIVE标志。
  • 非排他性LSM,如Yama,功能或锁定。

在浏览所有这些LSM的源代码时,我发现非排他性的LSM从不使用安全漏洞。另一方面,排他性的人会大量地利用它们。

例如,请参见AppArmor的LSM定义给亚玛的那个

那么,非排他性LSM可以指定blob大小并使用此功能吗?

为了找到答案,我探索了框架的源代码,看看是否在每个LSM挂钩调用之间切换了安全漏洞,我猜这将允许每个LSM只能访问自己的blobs,而不能访问另一个LSM。

然而,我们可以看到在LSM框架中并不是这样的。

如果我的LSM声明了blob大小,那么如果我的内核也启用了SELinux,我可以使用blob吗?SELinux和mine的结构不是会重叠吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-22 22:43:08

好的,我在LSM框架中找到了相关的代码。

QED:是的,所有LSM都可以使用安全小块,只要模块点燃后使用大小结构作为包含偏移量。

解释

定义LSM时,使用DEFINE_LSM宏,后面跟着各种信息,包括指向struct lsm_blobs_sizes的指针。

在自己的点火过程中,LSM框架(主要是在security/security.c中实现)在几个操作中操作您的结构。

  • 它在自己的结构实例(声明的这里)中存储所有LSM的安全漏洞大小之和。准确地说,查看这个堆栈跟踪:
代码语言:javascript
复制
ordered_lsm_init()
`- prepare_lsm(*lsm)
   `- lsm_set_blob_sizes(lsm->blobs)
      `- lsm_set_blob_size(&needed->lbs_task, &blob_sizes.lbs_task);

lsm_set_blob_size负责实际添加到框架的结构实例。

  • 但是,结合lsm_set_blob_sizes,它有效地将当前准备好的LSM的struct lsm_blob_sizes中的每个大小替换为这个LSM的blob部分所在的偏移量。
  • 然后,框架调用它们的init函数。
  • 稍后,当任何带有安全blob (例如task_struct )的结构被分配时,框架将分配一个blob,为所有安全模块的blob提供足够的空间,这些blob将使用自己的lsm_blobs_sizes中的偏移量在这个较大的blob中找到它们的位置。

安全漏洞的总计大小实际上是要使用init_debug这里来控制的。

因此,这意味着所有LSM都可以定义安全小块大小。该框架负责它们的分配(和脱钩),不同LSM的blobs可以愉快地共存在内存中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63509033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档