当前位置: 首页 > 科技观察

Linux5.10终于放弃了带来安全隐患的旧功能

时间:2023-03-14 14:32:24 科技观察

LinusTorvalds开启了Linux内核的又一个开发周期,宣布发布5.10-rc1,而这一次出现了一个历史性的转折点:新内核标志着一个新内核的落幕落在一个已有数十年历史的功能上,该功能在被发现会导致安全漏洞后早已变得多余。在发布每个新的Linux内核迭代之前,为期两周的合并窗口将关闭,Torvalds在Linux内核邮件列表上分享了他的想法,即“事情似乎进展顺利”。在“合并窗口”(新Linux内核发布过程的关键部分)期间,开发者社区提交的多达1,000个补丁每天被合并到由Torvalds管理的主线存储库中。审核过程确保每个补丁都实现了所需的更改。这一次,Torvalds提请注意删除了一个名为set_fs()的寻址函数,该函数可以追溯到Linux的第一个版本。“对我来说,这是最有趣的变化,set_fs()被删除了,”他写道,“这不是一个巨大的变化,但很有趣,因为set_fs()指定用户空间副本实际上是转到用户空间还是内核空间,几乎与早在Linux的第一个版本。”正如Torvalds解释的那样,set_fs()函数可以通过消除用户空间和内核空间之间的分隔来覆盖地址空间。这个函数在管理Intel早期的x86处理器时被广泛使用,以控制非特权代码可以访问的虚拟地址范围。但是在2010年的CVE中,详细披露了set_fs()带来的安全问题。通过绕过某些访问限制,该函数被证明能够“覆盖任意内核内存位置”和“获得特权”——在某些情况下允许用户空间覆盖内核数据。由于该工具的安全缺陷,某些架构(包括x86、PowerPC、s390和RISC-V)已删除地址空间覆盖功能。但是,正如Torvalds所写:“我们仍然有set_fs(),因为并非每个架构都已过渡到新的世界秩序。“除了这个久违的历史补救措施之外,5.10-rc1版本与大多数内核版本一样,带来了无数的变化。Torvalds统计了近1,700人的近14,000次提交,变化范围从支持自动驾驶汽车和机器人到NvidiaSOC芯片以支持NintendoSwitch控制器。统计数据显示,添加了大约704,000行代码,删除了419,000行代码,这使得5.10-rc1在大小上可以与Linux有史以来最大的内核5.8相媲美。看起来比我预期的版本更大,虽然合并窗口比5.8小,但也小不了多少,”Torvalds说,“5.8是我们有史以来最大的版本。“在典型的Linux计划中,5.10-rc1将有几周时间提交错误修复补丁,在12月预期的稳定内核版本之前有几个候选版本。