AUR 软件包被 Infostealer 和 Rootkit 侵入
泄露的范围和性质
- 大约有 ~400 个 AUR 软件包被接管,主要是通过认领被遗弃的软件包并注入恶意构建步骤。
- 载荷最初在
post_install中使用npm install atomic-lockfile ...;后续变种切换了工具链(例如 bun)来规避简单特征。 - 这次活动一直在持续,新的恶意提交仍在出现;并不局限于单一的事件窗口。
检测和“我中招了吗?”
- 分享了多个脚本 / 单行命令,用于:
- 将已安装的 AUR 软件包与已知受影响的软件包列表交叉比对。
- 区分“安装了但在攻击窗口期间从未更新”与“更新过且很可能已感染”。
- 关键细微差别:仅仅安装了受影响的软件包并不够;通常需要在恶意期间更新过它。
- 还分享了初步恶意软件分析和 rootkit 检查思路的链接;像
rkhunter这样的通用工具对这种特定的 BPF rootkit 是否有效尚不明确。
AUR 的信任模型及其局限
- 再次强烈提醒:AUR 明确属于“用户生成,风险自负”,更像 pastebin,而不是经过审核的仓库。
- 许多人认为你必须:
- 在安装前阅读每一个 PKGBUILD。
- 在每次更新时检查 diff,包括补丁和外部来源。
- 也有人说这在规模化场景下不现实,和指望每个人都完整阅读 EULA 差不多。
遗弃软件包与认领政策
- 核心攻击向量:大规模认领被遗弃的软件包(有成千上万个),然后加入恶意步骤。
- 不少人认为当前认领模型“已经坏掉”,并建议:
- 强制新提交,而不是静默接管。
- 清理旧的 orphan。
- 在维护者变更时提供显著警告。
- 有人建议采用用户名作用域的软件包名,以便让所有权更清晰。
用户实践与缓解措施
- 很多人建议:
- 尽可能坚持使用官方仓库;尽量少用 AUR。
- 避免使用 AUR helper,或者至少只在手动检查 PKGBUILD diff 后再使用。
- 警惕那些自身依赖其他 AUR 软件包、包含大量补丁集,或带有额外网络下载步骤的 AUR 软件包。
- 将高风险软件运行在 VM/容器中,或为不同角色(工作 vs 财务)使用独立的 QEMU VM。
- 像
traur和其他扫描器之类的工具可以标记可疑模式(例如 orphan 接管),但并不能作为保证。
npm 的角色与更广泛的供应链风险
- 恶意代码通过 npm(后续还通过其他 JS 工具链)分发,这强化了人们对 JS 生态经常成为供应链攻击向量的看法。
- 有人指出,这并不是 AUR 独有的问题:PyPI、npm、cargo、浏览器扩展、Flatpak/Flathub 等也都有类似的系统性风险。
Arch 的回应与沟通
- 一些人批评官方消息发布延迟或内容过少,并认为 AUR 本应临时“隔离”并附上明确警告。
- 另一些人则反驳说:
- AUR 一直都明确不经过审核。
- 基础设施由志愿者运营;期待“企业级”的事故响应是不现实的。
- 最终,Arch 的官方新闻条目承认了这一事件;维护者正在处理删除 / orphan 请求。
未来的防护与自动化
- 建议的改进包括:
- 在 helper 中对近期所有者变更、orphan 认领和异常下载(例如新的
npm/curl使用)提供警告。 - 可选的自动扫描(包括基于 LLM 的审查)来标记可疑的 PKGBUILD 变更,同时要认识到提示注入和“安全感假象”的风险。
- 更强的沙箱 / VM 隔离,以及更广泛采用像 SLSA 这样的供应链框架。
- 在 helper 中对近期所有者变更、orphan 认领和异常下载(例如新的
- 有人认为这“实际上标志着当前 AUR 模式的终结”;也有人认为这是一次严重但并不意外的事件,只是重申了长期以来的警示,并没有否定整个 AUR。