

Linux 5.10 终于抛弃了造成了安全隐患的老函数 | Linux 中国
source link: https://zhuanlan.zhihu.com/p/269267380
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

多年来,set_fs() 一直是众所周知的麻烦,现在它终于消失了。
- 来源: https:// linux.cn/article-12762- 1.html
- 作者:Daphne Leprince-ringuet
- 译者:Xingyu.Wang
(本文字数:1572,阅读时长大约:2 分钟)
Linus Torvalds 开启了 Linux 内核的又一个开发周期,宣布 5.10-rc1 发布了,而且这一次还有一个历史性的转折:新内核标志着一个几十年前的函数的落幕,这个函数在被发现会导致安全漏洞后早已成为多余的函数。
随着长达两周的,每一次新的 Linux 内核迭代发布前的合并窗口的关闭,Torvalds 在 Linux 内核邮件列表上分享了他的感想,他认为“事情似乎相当顺利”。
“合并窗口”是 Linux 新内核发布过程中的一个关键部分,在此窗口期间,每天有多达 1000 个由开发者社区提交的补丁被合并到 Torvalds 管理的主线仓库中。而审查过程会确保每个补丁都能实现理想的变化。
这一次,Torvalds 提请大家注意移除了一个叫 set_fs()
的寻址函数,这个函数可以追溯到 Linux 的最初版本。“对我来说,这是最有趣的变化, set_fs()
被移除了,”他写道,“这不是一个巨大的变化,但很有趣,因为 set_fs()
指定用户空间副本是否真正进入用户空间或内核空间的这个模式,几乎可以追溯到 Linux 的最初版本。”
正如 Torvalds 所解释的那样, set_fs()
函数可以通过取消用户空间和内核空间之间的分界来覆盖地址空间。该函数在管理英特尔早期 x86 处理器时被广泛使用,以控制非特权代码可以访问的虚拟地址范围。
然而,2010 年,“常见漏洞和暴露”(CVE)详细披露了 set_fs()
带来的安全问题。通过绕过某些访问限制,证实该函数能够“覆盖任意内核内存位置”和“获得特权” —— 在某些情况下,这可以让用户空间覆盖内核数据。
鉴于该工具的安全缺陷,包括 x86、PowerPC、s390 和 RISC-V 在内的一些架构已经取消了地址空间覆盖功能。但是,正如 Torvalds 写道:“我们仍然留着 set_fs()
,因为并不是每个架构都已经转换为新的世界秩序。”
除了这个久违的历史补救之外,5.10-rc1 版本和大多数内核版本一样,还伴随着无数的变化。Torvalds 统计了近 1700 人的近 1.4 万次提交,改动范围从支持自动驾驶汽车和机器人的 Nvidia SOC 芯片到支持任天堂 Switch 控制器。
统计结果表明。大约新增了 70.4 万行代码和删除了 41.9 万行代码,这使得 5.10-rc1 的大小与 Linux 有史以来最大的内核 5.8 相当。“这看起来是一个比我预期的更大的版本,虽然合并窗口比 5.8 的窗口小,但也小不了多少,”Torvalds 说,“而 5.8 是我们有史以来最大的版本。”
按照 Linux 典型的时间表,5.10-rc1 之后将有几个星期时间来提交修复问题的补丁,在预计 12 月发布稳定内核之前,将发布几个候选版本。
作者: Daphne Leprince-ringuet 译者: wxy 校对: wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK