1600+ 个 AUR 包被植入恶意代码:供应链攻击检测工具详解
📅 2026年06月14日 · 技术
2026 年 6 月,Arch Linux 社区遭遇了一场大规模供应链攻击。超过 1600 个 AUR(Arch User Repository)包被攻击者注入了恶意 npm 包,通过 npm install atomic-lockfile、bun install js-digest 或 lockfile-js 等指令,在用户编译安装软件时悄悄植入信息窃取恶意软件和 eBPF rootkit。目标是开发者的凭证、浏览器数据和 CI/CD 密钥。
攻击是怎么发生的
AUR 是 Arch Linux 的用户软件仓库,任何人都可以提交 PKGBUILD 脚本,用户通过 makepkg 或 AUR 助手(如 yay)从源码编译安装。攻击者利用了这个开放机制,在多个热门 AUR 包的 PKGBUILD 或 install 脚本中插入了恶意 npm/bun 安装命令。
攻击分两个波次:
- 第一波:atomic-lockfile / lockfile-js(npm)—— 使用
krisztinavarga、franziskaweber等账号发布,甚至有一个账号arojas直接冒充了合法的 Arch 维护者 - 第二波:js-digest(bun)—— 使用
custodiatovar、veramagalhaes等账号发布
两波攻击最终都投放了信息窃取器和eBPF rootkit,后者利用 Linux 的 eBPF 子系统实现深度隐藏,传统的杀毒软件很难检测到。
如何检测自己是否中招
社区迅速整合了检测工具,集中在 aur-malware-check 这个仓库中。核心检测脚本 aur_check.sh 提供了多种扫描模式:
./aur_check.sh— 基础检测,检查已安装包中是否有受感染的./aur_check.sh --full— 完整扫描,包含所有可选检查项./aur_check.sh --check-bun-cache— 专门检查 bun 缓存(针对 js-digest / atomic-lockfile)./aur_check-v2.sh— 优化版,日志扫描速度提升约 150 倍,适合大型日志
如果需要快速排查,可以用一行命令对比已安装包列表和感染包列表:
comm -1 -2 <(pacman -Qq | sort) <(curl -s LIST_URL | sort)
工具还支持合并多个恶意包列表进行跨活动扫描(--all-time),以及从官方 Arch Linux HedgeDoc 自动刷新包列表后扫描(--refresh)。
为什么 eBPF rootkit 特别危险
传统的 rootkit 通常修改系统二进制文件或加载内核模块,相对容易检测。但 eBPF rootkit 运行在内核的 BPF 虚拟机中,可以利用 tracepoint、kprobe 等机制拦截系统调用、隐藏文件和网络连接,甚至直接在内核态过滤掉安全工具的查询。这意味着 ls 看不到恶意文件、ps 看不到恶意进程、网络监控看不到恶意连接——一切都是"正常"的。
这类攻击也给所有使用包管理器的开发者敲响了警钟:供应链安全不仅仅是 npm/PyPI 的问题,任何允许社区贡献的软件仓库都可能成为攻击面。