← 文章 / AI技术
Hacker News 8小时前 · 2026-08-31 01:11:31 · 3 阅读

Omarchy:任意用户进程可提权至 Root

Omarchy 默认的 Docker 配置存在安全漏洞,这意味着桌面会话中运行的几乎所有程序都能无需密码、`sudo` 或权限提示即可提权至 root。 如果你使用 Omarchy,最关键的要点很简单:**升级到 4.0.1**。 我已通过项目的负责任披露流程私下报告了该问题。底层配置已修复,因此我现在发布细节以说明问题所在,并提醒用户更新系统。

问题所在

Omarchy 将默认用户配置为 Linux `docker` 组的成员。 这允许用户在无需输入 `sudo` 的情况下运行如下命令: ```bash docker run ... ``` 在 Arch 系统上,Docker 守护进程以 root 身份运行,并监听: ```bash /var/run/docker.sock ``` `docker` 组成员可以与该套接字通信。Docker 本身明确警告过,`docker` 组会赋予用户 root 级别的权限。 拥有 Docker 套接字访问权限的进程可以请求 root 拥有的 Docker 守护进程以 root 身份启动容器,将主机文件系统的任意部分挂载进去,以 root 身份操作这些文件,并运行 root 权限代码。 在受影响的 Omarchy 系统上,这意味着默认用户及其在该会话中启动的所有进程都拥有 root 访问权限。

概念验证

在全新的受影响 Omarchy 安装上尝试读取 `/etc/shadow`: ```bash $ cat /etc/shadow cat: /etc/shadow: Permission denied ``` 现在查看你的用户组成员身份: ```bash $ id uid=1000(tester) gid=1000(tester) groups=1000(tester),967(docker),992(input),998(wheel) ``` 现在通过以 root 身份运行的 docker 读取受保护的文件: ```bash $ docker run --rm -v /:/hostroot alpine cat /hostroot/etc/shadow root:$6$... bin:!*:... daemon:!*:... ... ``` 该命令由普通用户进程启动,但实际的文件系统访问是通过以 root 身份运行的守护进程执行的。

影响范围

Linux 附加组会被子进程继承,因此这会影响整个用户会话。 遍历用户 systemd --user 实例下的进程树,发现 Docker 组几乎存在于会话中所有普通进程里。 这意味着几乎所有可能运行不受信任代码的进程都能获取 root 权限,包括:
  • AI 编码代理和代理框架
  • 网页浏览器
  • 编辑器和 IDE
  • npm 脚本
  • 随机的开发工具
  • 后台进程
换句话说,**普通用户应用的漏洞可能直接导致整台机器沦陷。**

安全默认设置

这种配置还有另一个重要方面。它是“默认加入”而非“默认退出”。用户无需实际使用 Docker,安全权衡就已经替他们做好了,并应用于默认账户,而且系统并未向用户解释这一权衡。 安全敏感的默认设置之所以重要,正是因为许多用户合理地认为操作系统默认是安全的,并且会提示他们加入不安全的设置。

误导性文档

Omarchy 的开发工具文档中确实提到了 Docker 组:

Omarchy 安装了运行 [docker] 所需的一切。这包括 [...] 将用户组更改为允许您以普通用户而非 root 身份运行 Docker 的设置。

其安全影响几乎与普通读者从“非 root”推断出的结论截然相反。读到这段描述的用户可能会合理地得出结论,认为 Omarchy 已将 Docker 配置为某种无 root 模式。但实际上并非如此。

受影响版本

这会影响 4.0.1 之前的所有版本。我在最新的 3.x 镜像(3.8.4)上进行了测试,同样受影响。

时间线

从引入此问题到解决该问题的提交时间线:

背景

随着 AI 针对核心基础设施生成的高危 CVE 数量激增,安全已成为所有开发者,尤其是面向开发者的发行版作者的首要任务。近期,开发者机器被入侵、其访问权限被用于污染软件供应链或攻击生产系统的报告层出不穷。开发者之所以成为高价值目标,是因为他们通常拥有极高的访问权限。开发者机器通常为了方便而关闭安全限制、将凭据存储在明文配置文件中,并累积了对各种系统的访问权限。这种现状必须改变

我确信 DHH 仅仅是因为不知道添加 Docker 组的后果而疏忽了。在安全问题上,没有任何发行版能做出完美的决策。我对该问题被报告后迅速响应的速度感到惊讶,这是一个积极的信号。

话虽如此,这并非我第一次在 Omarchy 中遇到安全问题。坦率地说,我不信任其现有的决策流程,无法确保发行版能提供我所期望的安全水平。我希望这种情况能有所改变,因为 Omarchy 有很多值得称道的地方。

Podman

如果你在 Linux 上使用 Docker,且不想为了运行容器而被迫授予 root(即使是使用 sudo)权限,我强烈推荐你尝试 Podman。Podman 是无守护进程的。你的容器作为普通子进程在其自己的用户命名空间中运行,不需要任何 root 访问权限。我已经使用 Podman 多个月了,它完全取代了我所有的 Docker 工作流。我强烈建议你试一试。

参考

原始来源: Hacker News

评论 (0)