Asterinas 0.18.0 发布:迈向安全容器(Kata)与机密容器(CoCo)

星绽(Asterinas)社区高兴地宣布,全新版本 0.18.0 正式发布!

本次发布最大的看点,是星绽已经可以作为基于虚拟机的 Kata Containers 与 Confidential Containers 的客户机 OS ,为这一安全攸关场景提供一个比 Linux 更加安全可靠的内核选项。为此, 0.18.0 新版一口气交付了许多重要特性:命名空间 (新增 IPC 与 cgroup 命名空间,并在 /proc/[pid]/ns 下提供 nsfs)、cgroups (PID 子控制器与部分 CPU 子控制器)、用于与宿主机共享文件系统的 virtio-fs 、为系统引入硬件熵源的 virtio-rng/dev/hwrng),以及一套完全重写的 vsock,用于打通宿主机与客户机之间的通信。

用户态调试也在这一版本中正式登场。我们实现了 ptrace 系统调用,并配齐了它的核心操作------ PTRACE_SETOPTIONSPTRACE_SYSCALL 以及 PTRACE_PEEK/POKE。正是这些能力,让 GDBstrace 等广受欢迎的调试工具得以在 Asterinas 上运行,并配套提供了经过验证的使用文档与 CI 持续保障。

本次发布还对存储栈做了一次重大升级:ext2 文件系统被全面重写 ,块设备层迎来全新的 NVMe 驱动 ,VFS 则新增了 Dentry重校验(revalidate)机制 ,并对页缓存(page cache)进行了重构。几项工作叠加,换来的是一个更可靠、也更有能力的存储栈。

最后,Asterinas NixOS 对真实世界软件的覆盖面大幅扩张------已验证可用的热门软件包超过 100 款 ,其中不乏 CodexQEMUFirefox 这样的重量级选手。为了让这份不断增长的"软件清单"持续可用,我们还集成了一系列新的测试套件,包括 kselftestxfstests ,以及 GoPythonJDK 各自的标准单元测试套件。

以上是本次发布的几条主线。下面,我们按模块梳理这一版本的主要变更,方便希望深入了解的读者按图索骥。

Asterinas NixOS

  • 为 Asterinas NixOS 测试套件搭建框架

  • 补充更多已验证应用的文档

  • 为热门应用添加测试

  • 在 Asterinas NixOS 上运行 Go 标准库测试

  • 在 Asterinas NixOS 上运行 JDK 测试

  • 在 Asterinas NixOS 上运行 Python 回归测试

  • 为虚拟化应用添加 QEMU 测试

  • 支持 ARCH_GET_GS/ARCH_SET_GS 以运行 Firefox

Asterinas 内核

进程管理:

  • 重构 PidFile 并新增 pidfd_getfd 系统调用、新增 pidfd_send_signal 系统调用,以及让 PidFile 语义对齐 POSIX

  • 修复加载损坏 ELF 文件时的错误行为

Ptrace:

  • 新增 ptrace 系统调用

  • 支持基于 ptrace 的调试

  • 新增 PTRACE_SETOPTIONSPTRACE_SYSCALLPTRACE_PEEK/POKE_TEXT/DATA

  • 为 GDB 与 strace 提供(内核侧)补丁、经验证的使用文档与 CI

  • 支持通过 /proc/[pid]/mem 强制写入

  • 新增 Yama ptrace 作用域

信号与 IPC:

  • 修正 sigsuspend 并修复其他多项信号行为

  • 修复 System V 信号量中的大量 bug

内存管理:

  • 尊重 mmap 的地址提示(address hint)

  • 修复多个 MM 系统调用中错误的返回码及其他问题行为

文件系统:

  • VFS

    • 新增伪 Path

    • 重构 Metadata 的字段并修正伪文件系统的设备 ID

    • open/openat 实现 O_TMPFILE 支持

    • 实现 pivot_root 系统调用

    • 重构页缓存实现,并修复一处会将未初始化内存泄露到用户态的页缓存 bug

    • 引入 Dentry 重校验机制

  • virtio-fs

    • 在 Asterinas 中支持 virtio-fs
  • Ext2

    • 重写 ext2 文件系统
  • Procfs

    • 新增 /proc/mounts/proc/[pid]/auxv/proc/[tid]/proc/[pid]/maps 的更多条目 以及 mountstats

套接字与网络:

  • 重写 vsock

  • 新增初步的 IPv6 支持

  • 在缺少 CAP_NET_BIND_SERVICE 时拒绝绑定特权端口

  • 修复若干 UDP 问题

命名空间与 cgroups:

  • 支持 nsfs(/proc/[pid]/ns

  • 支持 IPC 命名空间

  • 支持 cgroup 命名空间

  • 实现 cgroup PID 子控制器

  • 新增部分 cgroup CPU 子控制器,提供 cpu.stat 统计信息 与 占位的 cpu.weight/cpu.max 限制文件

  • 绑定挂载命名空间文件

安全:

  • 实现 capabilities 以及以 root 身份执行程序

  • 实现 capability bounding set 支持

  • 修复凭证相关的系统调用并加以清理

  • 新增初步的 LSM 框架

设备:

  • 块设备与 NVMe

    • 新增 NVMe 驱动
  • PCI

    • 改进 PCI 设备枚举与探测

    • 从 FDT/ACPI 获取 PCI 总线范围,并在 x86 上支持 PCI ECAM

  • TTY 与控制台
    • 支持多 TTY

    • 支持 NS16550A UART 控制台、/dev/ttyS0 以及 console=ttyS0

    • 键盘相关增强

  • VirtIO
    • 支持 virtio-rng 并以 /dev/hwrng 暴露

    • virtqueue 视为不可信,并在 aster-virtio 中使用可失败的内存分配

  • TDX
    • 新增 TSM-MR(测量寄存器)sysfs 支持

测试:

  • 接入 Linux kselftest 测试套件

  • 接入 xfstests 测试套件

其他:

  • 新增通用系统调用表

  • 引入内核参数框架

Asterinas OSTD 与 OSDK

OSTD:

  • 用 OSTD 自有的日志 API 替换 log crate

  • 基于 zerocopy 重构 Pod

  • 重构 DMA API

  • 新增用于类型化内存拷贝的 Memcpy/Memset trait 框架

其他:

  • 新增 ARM(aarch64)上的 Docker 开发环境

Asterinas Book

  • 新增编码规范

  • 新增 OSTD 的健全性(soundness)分析

  • 新增 Kata Containers 相关文档

  • 新增机密容器(CoCo)相关文档

致谢贡献者

本次发布离不开 36 位贡献者的辛勤付出。感谢你们出色的工作!

  • Ruihan Li(191 commits)

  • jiangjianfeng(92 commits)

  • Wang Siyuan(72 commits)

  • Qingsong Chen(64 commits)

  • Chen Chengjun(59 commits)

  • Tate, Hongliang Tian(52 commits)

  • Tao Su(46 commits)

  • Zhang Junyang(36 commits)

  • zjp(26 commits)

  • li041(23 commits)

  • Xinyi Yu(23 commits)

  • Marsman1996(18 commits)

  • wyt8(17 commits)

  • Aaron Chen(9 commits)

  • zzj-5341(9 commits)

  • Chaoqun Zheng(8 commits)

  • Hsy-Intel(7 commits)

  • Cautreoxit(4 commits)

  • Chao Liu(4 commits)

  • Junrui Luo(4 commits)

  • Ray Lee(4 commits)

  • rikosellic(4 commits)

  • TankTechnology(4 commits)

  • Zhenchen Wang(4 commits)

  • Yuke Peng(3 commits)

  • Zhihang Shao(3 commits)

  • yyda(3 commits)

  • Arthur Paulino(1 commit)

  • Jakob Hellermann(1 commit)

  • Linermao(1 commit)

  • lxh(1 commit)

  • Shen Bowen(1 commit)

  • Wei Zhang(1 commit)

  • wrj97(1 commit)

  • YanLien(1 commit)

  • zzjrabbit(1 commit)

Asterinas 是一个用 Rust 编写、兼容 Linux ABI 的框内核(framekernel)操作系统,致力于在保持高性能的同时,提供更强的内存安全与可靠性保障。欢迎访问我们的 GitHub 仓库,给我们点亮一颗 Star,或加入社区一起共建!

项目仓库

Gitub:

https://github.com/asterinas/asterinas

相关推荐
醒醒该学习了!1 小时前
AI中的隐私、安全与合规(理论篇)
人工智能·安全
网安小白的进阶之路1 小时前
B模块 安全通信网络 第二门课IPv6与WLAN 05
网络·安全
超级无敌zhq2 小时前
内网权限维持实战:打造持久化后门与隐蔽通道
网络·windows·安全·网络安全
咖啡星人k2 小时前
MonkeyCode 开源安全审计:第三方依赖风险管理与供应链安全
安全·开源·monkeycode
万能的知了2 小时前
WAF、高防IP、CC防护:安全产品到底怎么选
服务器·网络协议·安全
持敬chijing2 小时前
Web渗透之SQL注入-URL解码注入(URL Decode Injection)
sql·安全·web安全·网络安全·网络攻击模型·安全威胁分析
网络研究院2 小时前
2026 终极攻防变局:深度拆解 MITRE ATT&CK ER8 企业安全评估路线图与微观技术实战
网络·安全·网络研究观
王码码203511 小时前
多台服务器怎么统一看状态?Beszel 轻量监控,搭起来不费事
运维·服务器·后端·安全·阿里云·接口·web
ylscode12 小时前
Anthropic Claude Oceanus意外泄露:Mythos系列AI红队测试遭遇API代理滥用危机
网络·人工智能·安全·web安全·安全威胁分析