内核内存安全:任务完成

主要观点:一年前 Windows 出现“蓝屏死机”事件,提醒操作系统仍易受内存安全漏洞影响。两年前开始思考 Rust 是否能解决内核内存安全问题,由此诞生了 Asterinas 项目(第一个帧内核实现)。经过三年开发,Asterinas 从研究原型发展为成熟系统,证明可在安全 Rust 中构建功能丰富、兼容 Linux 且性能有竞争力的操作系统内核,且实现了内核内存安全无妥协。
关键信息

  • 帧内核结合了单体内核的性能和微内核的安全性,逻辑上分区为特权 OS 框架(少量安全和不安全 Rust 代码混合)和非特权 OS 服务(全用安全 Rust 编写)。
  • Asterinas 的 OS 框架 OSTD 被定位为 Rust 的(非官方)操作系统开发标准库,已发布到 crates.io,用其 API 可在安全 Rust 中编写系统调用循环等。
  • 为实现内存安全,通过定义严格安全不变量、使用硬件强制、严格审查不安全代码、运行 Miri 等方式,且因其 TCB 小,整个 Asterinas 帧内核的内存安全可进行形式验证。
  • 目前 Asterinas 支持多种 Linux 系统调用、CPU 架构、文件系统等,在性能上与 Linux 相当,面临的最大性能挑战是高效 IOMMU 管理。
    重要细节
  • 2024 年 7 月 19 日 Windows 出现全球事件,CrowdStrike outage 由 Windows 驱动的内存安全漏洞引发。
  • 帧内核通过普通函数调用和共享内存保持单体内核速度同时实现微内核安全性。
  • 文中给出了用 OSTD API 在安全 Rust 中编写系统调用的示例及相关安全抽象。
  • Asterinas 的 TCB 约 15000 行代码,相对其他 Rust 操作系统 TCB 比例较小,且支持多种功能。
  • 未来 Asterinas 将添加 Linux namespaces 和 cgroups 支持,开发图形子系统等,目前仍未达到生产就绪状态,欢迎各种贡献者参与。
阅读 8
0 条评论