Greg Kurtzer 开发了 Ginux,这是一个实现用户空间内核的项目,旨在无需虚拟机全量开销的情况下为用户进程提供隔离。通过将类内核功能转移到用户空间,该项目旨在减轻标准 Linux 内核庞大攻击面中固有的安全风险。

Ginux 项目概述

Greg Kurtzer 的 Ginux 项目被呈现为一个旨在处理特定任务操作的用户空间内核。核心思想是利用间接层来避免替换整个 Linux 内核这一庞大任务,而是为特定工作负载提供专门的接口。

该项目的主要目标是为进程提供更受限的环境。通过在用户空间运行“内核”,系统理论上可以限制进程可以直接交互的宿主机内核代码量。

社区对隔离模型的看法

在 Hacker News 的讨论中,评论者辩论了 Ginux 的技术定位。一位以 stingraycharles 为名的评论者观察到,这种方法处于 cgroups 和虚拟机之间,尽管他们质疑它是否能提供与 Firecracker 等微型虚拟机相同的安全保证。

另一位评论者 weinzierl 认为,标准 Linux 内核是一个拥有现代应用程序不需要的遗留代码的“巨大攻击面”。他们建议,虽然命名空间并未完全解决这个问题,但像 Ginux 这样的用户空间内核可能为 AI 代理等现代需求提供更优越的隔离。

技术问题与权衡

讨论还强调了关于实现的几个技术不确定性。例如,评论者 ajasmin 询问系统如何处理系统调用,以及如何为叶子用户进程管理多个隔离的地址空间。

虽然一些参与者认为该项目是间接层的一个极具前景的应用,但其他人表示谨慎。一位评论者 frevib 指出,虽然此类系统可以使用 AI 辅助开发,但仍需要大量的人工验证才能被认为是为安全环境准备好的“经过实战检验”的系统。

与现有技术的比较

该项目经常与现有的容器技术和虚拟化技术进行比较。虽然类似 Docker 的容器依赖于命名空间,但 Ginux 的用户空间方法旨在提供不同层级的隔离。

权衡涉及在容器的易用性与虚拟机的重度隔离之间寻找平衡。Ginux 试图占据中间地带,尽管其相对于 gVisor 或 Firecracker 等工具的具体性能和安全基准仍是社区关注的焦点。

未解决的实现细节

目前的文档中仍有几个关键技术细节尚未确认。具体而言,目前尚不清楚该系统是使用 eBPF 还是其他机制来捕获来自叶子进程的系统调用。

社区对于这种方法是否是相对于无根命名空间(rootless namespaces)的“正确”路径仍存在分歧,有些人认为无根命名空间已经为许多用例提供了全方位的隔离。