OpenBSD 7.9:安全性、硬件现代化与第 60 个发行版本
OpenBSD 7.9 的发布标志着一个重要的里程碑:该操作系统的第 60 个正式发行版本。OpenBSD 以其在安全性和代码正确性方面毫不妥协的立场而闻名,它在不断完善其生态系统的同时,也在现代硬件支持与“默认安全”的核心哲学之间寻求平衡。
此次发布不仅仅是一个维护更新;它为内核调度器引入了关键的架构变更,扩展了对现代 ARM 和 RISC-V 架构的支持,并为行业标准的 OpenSSH 和 LibreSSL 套件提供了必要的安全补丁。
内核与调度器演进
7.9 中最显著的新增内容之一是管理异构 CPU 核心的新机制。随着现代处理器越来越多地采用“big.LITTLE”架构(混合性能核与能效核),OpenBSD 引入了 hw.blockcpu sysctl 变量。这允许管理员指定哪些类型的核心——SMT、性能核 (P)、能效核 (E) 或迟缓核 (L)——应该从调度器中排除。
除了调度之外,内核还进行了几项内部优化:
- 锁定机制: 内核互斥锁中的
cas自旋锁已被替换为“parking”锁以提高效率。 - 内存管理: 修改了页面守护进程创建空闲内存的策略以更好地进行内存碎片整理,并引入了一种新机制来防止在
swapencrypt路径中进行内存分配。 - 休眠: 实现了一个“延迟休眠”功能,允许挂起的系统在经过可配置的时间后唤醒并进入休眠,从而防止在长时间挂起期间耗尽电池。
硬件与架构支持
OpenBSD 7.9 继续扩大其硬件兼容性,特别关注新兴架构:
RISC-V 与 ARM64
在 riscv64 上,对 SpacemiT K1 SoC 的支持得到了显著扩展,包括用于时钟/复位控制器和 GPIO 的新驱动程序。在 arm64 上,该版本增加了对 RK3588 和 RK3576 SoCs 的支持,以及 Genesys Logic GL9755 SDHC 控制器,这使得 OpenBSD 可以在某些 Apple Silicon 笔记本电脑上运行。
AMD64 与 x86
对于 AMD 用户,该版本为 amdpmc(4) 增加了 SMU 支持,以实现在挂起期间进入更低的功耗状态,并缓解了 Zen/Zen+ 处理器上的浮点状态泄漏问题。此外,最大 CPU 数量 (MAXCPUs) 已增加到 255。
网络与无线
无线网络领域取得了重大飞跃,引入了基础的 802.11ax (WiFi 6) 支持。该版本还增加了对 5 GHz 频段下 160 MHz 信道宽度的支持,并在多个驱动程序 (iwm, iwx, qwx) 中实现了受保护的管理帧 (PMF)。
安全与工具更新
OpenSSH 10.3
OpenSSH 仍然是本次发布的基石。10.3 版本解决了几个安全漏洞,包括 ssh(1) 中的 shell 元字符验证 bug 以及 sshd(8) 中的主体匹配错误。新功能包括支持 IANA 分配的 agent forwarding 码点,以及能够以 PKCS8 格式写入 ED25519 密钥。
LibreSSL 4.3.0
LibreSSL 4.3.0 在 TLS 中引入了对 MLKEM768_X25519 密钥共享的支持,向后量子密码学迈进。它还在方法级别禁用了 TLSv1.1 及更低版本,并移除了几个旧有的 CBC 漏洞缓解方案。
系统加固固化
OpenBSD 继续完善其 pledge(2) 和 unveil(2) 原语。tmppath 承诺已被废弃,取而代之的是更细粒度的 unveil 组合,并且一个新的 __pledge_open(2) 系统调用允许 libc 访问内部文件,而无需向非 libc 代码授予广泛的权限。
社区观点与权衡
该版本因其一致性和对二进制 blob 的“不讲道理”的态度而受到称赞。正如一位社区成员所言:
"他们的安全关注点持续数十年,无与伦比……这里没有‘等做好了再说’。就像时钟一样,每年两次,他们会放慢速度,清理店铺,整理好实验,然后准备好一个发行版本。"
然而,项目对哲学的严格坚持也导致了某些功能的缺失。一些用户指出,持续缺乏日志记录文件系统 (journaled filesystem) 和蓝牙支持是那些希望将 OpenBSD 作为主要桌面操作系统使用的用户面临的重要障碍。
关键组件摘要
| 组件 | 版本/更新 |
|---|---|
| OpenSSH | 10.3 |
| LibreSSL | 4.3.0 |
| Kernel | 新的 hw.blockcpu 调度器控制 |
| Wireless | 基础 802.11ax (WiFi 6) 支持 |
| Virtualization | 支持 Apple Virtualization |
| Ports | amd64 平台上有超过 13,000 个软件包 |