diff -u:内核开发的新内容

作者:Zack Brown

David Drysdale 注意到 FreeBSD 已经支持 Capsicum 后,希望将 Capsicum 安全特性添加到 Linux 中。Capsicum 定义了细粒度的安全权限,类似于文件系统 capabilities。但正如 David 发现的那样,Capsicum 也存在一些争议。

Capsicum 已经存在一段时间了,并在 2010 年的 USENIX 论文中进行了描述:http://www.cl.cam.ac.uk/research/security/capsicum/papers/2010usenix-security-capsicum-website.pdf

部分争议仅仅是因为它与 capabilities 的相似性。正如 Eric Biderman 在讨论中指出的那样,可以实现接近 Capsicum 功能的特性作为 capabilities 的扩展,但是直接实现 Capsicum 将需要在内核中创建一个全新的(且广泛的)抽象层。尽管 David 认为 capabilities 实际上无法扩展到足以匹配 Capsicum 的细粒度安全控制。

Capsicum 在其自身的开发者社区中也存在争议。例如,正如 Eric 所描述的那样,它缺乏关于如何撤销权限的规范。而且,David 指出,这是因为社区无法就如何最好地完成这项工作达成一致。David 引用了 Ben Laurie 在 2011 年发送给 cl-capsicum-discuss 邮件列表的电子邮件,Ben 在邮件中说,“这将需要额外的簿记来查找和撤销未完成的 capabilities,这需要知道如何访问 capabilities,以及它们是否源自正在撤销的 capability。它还需要一个用于撤销的授权模型。前两点意味着在数据结构操作和同步方面需要额外的开销。”

鉴于 Capsicum 开发者社区内部持续存在的争议以及关键特性规范的相应缺失,并且鉴于内核中已经存在执行类似功能的 capabilities 以及 Capsicum 补丁的侵入性,Eric 反对 David 在 Linux 中实现 Capsicum。

但是,鉴于 capabilities 比 Capsicum 的安全特性粗粒度得多,以至于 capabilities 实际上无法扩展到足以模仿 Capsicum 的特性,并且鉴于 FreeBSD 已经在其内核中实现了 Capsicum,表明这是可以做到的,并且可能有人想要它,看来仍然会有很多人有兴趣将 Capsicum 引入 Linux 内核。

有时不清楚是代码中存在错误,还是仅仅是书面规范中存在错误。Henrique de Moraes Holschuh 注意到 Intel 软件开发者手册(第 3A 卷,第 9.11.6 节)明确指出,微码 更新需要 P6 系列 CPU奔腾 4至强 进行 16 字节对齐。但是,内核微码驱动程序中的代码并未强制执行该对齐。

事实上,Henrique 的调查发现,一些 Intel 芯片,例如 Xeon X5550 和第二代 i5 芯片,在实践中只需要 4 字节对齐,而不是 16 字节。但是,为了符合文档规范,他建议修复内核代码以匹配规范。

Borislav Petkov 对此表示反对。他说 Henrique 是在没有问题的地方找问题。他说 Henrique 只是发现了 Intel 文档中的一个错误,因为对齐问题在现实世界中显然不是问题。他建议提醒 Intel 的人注意文档问题并继续前进。正如他所说,“如果处理器接受非 16 字节对齐的更新,你为什么要在意呢?”

但是,正如 H. Peter Anvin 所说,书面规范是 Intel 保证某些行为可以工作的保证。如果内核忽略该规范,则可能会在以后导致细微的错误。而且,Bill Davidsen 说,如果内核忽略了对齐要求,并且“如果该要求在未来的某个版本中强制执行,并且更新随后以某种疯狂的方式失败,那么供应商有理由声称‘我告诉过你’。”

最终结果是 Henrique 提交了一些补丁,使微码驱动程序强制执行 16 字节对齐要求。

Zack Brown 是 Linux JournalLinux Magazine 的科技记者,并且是 “Kernel Traffic” 每周新闻通讯和 “Learn Plover” 速记打字教程的前作者。他于 1993 年首次在他的 386 电脑上安装了 Slackware Linux,配备了 8MB 内存,并被开源社区彻底震撼。他是 Crumble 纯策略棋盘游戏的发明者,您可以用几块纸板自己制作。他还喜欢写小说、尝试动画、改革拉班舞谱、设计和缝制自己的衣服、学习法语以及与朋友和家人共度时光。

加载 Disqus 评论