基础设施 5.0 · 必读 2026-09-24 · 文章

Package Manager Sandboxing

Andrew Nesbitt 9 月 24 日把过去四个月包管理器沙箱化进展盘成一张纵览:Homebrew 7.0.0(9 月 13 日)把fetch 阶段联网写 cache;install 阶段离线只读 cache做成一等公民,cask 的 LaunchServices 逃逸被堵,formula post_install 这种任意 Ruby 钩子被换成 signed *_steps,deadline 2027 年 12 月Homebrew 6.0 起的迁移路径是 Linux 先上 Bubblewrap 7 月换 Landlock 8 月删 Bubblewrap跨生态对照一长串:opam 2.0(2018)把 build/install 全部塞 bubblewrap + 断网...

打开原文回到归档

Package Manager Sandboxing

原文链接: https://nesbitt.io/2026/09/24/package-manager-sandboxing.html
作者: Andrew Nesbitt
发布时间: 2026-09-24
来源笔记: OpenClaw定时任务/AK-RSS-Digest(89源精选)/2026-09-24

摘要(AAIF 提取)

Andrew Nesbitt 把过去四个月包管理器沙箱化进展盘成一张纵览。Homebrew 7.0.0(9 月 13 日)把「fetch 阶段联网、写 cache;install 阶段离线、只读 cache」做成一等公民,cask 的 LaunchServices 逃逸被堵,formula post_install 这种任意 Ruby 钩子被换成 signed *_steps,deadline 2027 年 12 月。Homebrew 6.0 起的迁移路径:Linux 先上 Bubblewrap → 7 月换 Landlock → 8 月删 Bubblewrap。跨生态对照一长串:opam 2.0(2018)把 build/install 全部塞 bubblewrap + 断网,SwiftPM 的 Seatbelt 把 Package.swift 关进沙箱编译,pacman 7.0(2024)把下载跑在 Landlock + seccomp 下。包管理器攻击面的回应不是一招:gating(allowlist 控制谁跑)、confinement(沙箱控制能摸到哪)、removal(把钩子改成可解释的数据,Homebrew 的 *_steps、Composer 2021 把 plugin 丢进 allowlist)——三条路各砍一刀。CI 里的实际缺口:self-hosted runner 持久并被多 job 共用,install 脚本的 reach 跟 workflow 同级,Harden-Runner 是当下唯一可用的 sidecar。整篇把「包管理器 ↔ agent vendor ↔ CI runner」三向闭环拍成一句话:沙箱化 build 写出的 manifest / cache / step list 仍要被一个全权限的包管理器消费,验证这一段输出才是剩下的真问题。

为什么值得关注

把过去 4 个月 25+ 个 manager / agent / proposal 的沙箱化进度压成一张表,关键结论:沙箱构建的产物仍要被全权限的包管理器消费,CI runner 是当下唯一还在的开口。

主要事实

  • Homebrew 7.0.0 已 GA(2026-09-13),fetch-online / install-offline 一等公民。
  • Homebrew 6.0 → 7.0:Linux Bubblewrap → Landlock(7 月) → 删 Bubblewrap(8 月);macOS sandbox-exec 跑了十年后升成 stated security programme。
  • opam 2.0 (2018) build/install 全 bubblewrap + 断网,Windows 不沙箱化,9 月已开 issue 调研 Landlock 替代 bubblewrap(Docker 兼容性原因)。
  • SwiftPM 的 Seatbelt 把 Package.swift 关进沙箱编译,Linux 是 no-op(tracker 已 flag)。
  • Nix (Linux) 2019 起 namespaces 默认开,但官方文档明说「不是主要安全机制,是 reproducibility」;2025 年一对 CVE 让本地用户通过 build user 提权。
  • Bazel 同类:Linux namespace + macOS sandbox-exec,限定 declared inputs。
  • pacman 7.0(2024)下载跑 Landlock + seccomp;7.1 进一步压 syscall。
  • pnpm 8 月的 proposal 直接把 stack 列为 bubblewrap / Landlock(Linux)+ Seatbelt(macOS),issue body 备注「written by an agent」。
  • Deno 7 月的 hardening proposal 列出 Landlock + seccomp + Seatbelt 作为后续。
  • 应对路线分三叉:gating(allowlist 控制谁跑)、confinement(沙箱控制能摸到哪)、removal(把钩子改成可解释的数据;Homebrew *_steps、Go / Elm 从一开始就没钩子、Composer 2021 把 plugin 丢进 allowlist)。
  • 上一轮 incident 链条:Shai-Hulud worm(npm 2025-09)靠 postinstall 扩散并把 hook 写进 Claude Code 的 settings 文件以缓存清理后仍能活下来;上一个月 nx 妥协发 postinstall payload 试图用本地 AI 工具扫凭证;Mandiant 已报告劫持 coding assistant session 通过被投毒的包推荐把 Shai-Hulud 散到 ~100 个内部仓库。
  • self-hosted CI runner 仍是当下唯一敞口,Harden-Runner 是唯一可用的成品 sidecar。

来源信号