一场"领养孤儿包"的供应链攻击,把整个Arch生态搅了个底朝天
一、1600个AUR包沦陷:攻击者是怎么做到的
6月11日前后,Arch Linux用户社区炸了锅。
有人发现AUR(Arch User Repository)里大量包的PKGBUILD被悄悄改了。攻击者没有硬破解什么,用的是一招"领养孤儿包"——找到那些长期没人维护、处于orphan状态的包,假装成新维护者接管过来,然后在构建脚本里塞进恶意代码。
最开始曝光的是400多个包。到了6月12日,Arch社区开发者koraynilay通过git log追踪发现受影响的包已经膨胀到879个。6月13日,安全研究员cyb3rops跟进统计,最终确认有1600+个包在同一窗口期内被注入恶意代码。
恶意代码藏在哪?三种主要载体:
- •
npm install atomic-lockfile— 第一波主力,伪装成npm依赖(具体版本:atomic-lockfile 1.4.2) - •
bun install js-digest— 第二波升级版,用Bun运行时执行(js-digest 4.2.2) - •
lockfile-js— 变种,换个名字继续干(lockfile-js 1.4.2)
安装或更新这些包的时候,恶意代码就会自动执行。执行什么?两样东西:
- 1.Linux rootkit + eBPF隐藏模块— 恶意代码包含一个eBPF内核模块(
scales.bpf.c),hook了getdents64系统调用——这是Linux中列出目录内容的底层接口。通过篡改返回结果,rootkit可以隐藏自身的进程、文件和网络连接,连ls和ps都看不到它。这比传统的LD_PRELOAD型rootkit隐蔽得多。 - 2.Infostealer— 偷SSH密钥、访问令牌、各种凭证,通过Tor C2基础设施回传给攻击者
更恶心的是第二波攻击(6月13日,开发者a821首次报告)。攻击者加了代码混淆,把恶意逻辑拆散到多个函数里,用Bun命令包装,审查难度直接翻倍。安全研究员Nicolas Boichat后来用本地部署的Gemma E2B模型才把这批混淆样本筛出来。
谁受影响?不只是Arch用户:
- •Manjaro、EndeavourOS、Garuda Linux等Arch系发行版受影响
- •Steam Deck的桌面模式支持AUR,掌机也不安全
- •CI/CD流水线如果跑在Arch环境上拉AUR包,构建产物可能已经被污染
- •开发者工作站— 代码签名密钥、Git凭证、开发环境变量都可能泄露
Arch官方的应对措施:暂停AUR新账号注册,同时社区紧急清理恶意包。Sonatype研究人员将这次攻击命名为"Atomic Arch",目前是AUR生态规模最大的一次供应链攻击。
检测工具方面,社区开发者lenucksi发布了aur_check-v2.sh,GitHub仓库地址:https://github.com/lenucksi/aur-malware-check。
工具支持扫描npm缓存里的atomic-lockfile、js-digest、lockfile-js三个恶意包名,并提供了一个包含约1600个受影响包名的package_list.txt。
二、Linux 7.2:AI补丁洪流下的代码大扫除
Arch AUR事件还在发酵的时候,Linux内核上游也在发生一件耐人寻味的事。
6月17日,Jakub Kicinski(netdev子系统维护者)提交了删除AppleTalk协议支持的补丁,数千行代码被移除。苹果在2009年的Mac OS X 10.6里就砍掉了AppleTalk,Linux社区多撑了17年。
这次删代码的理由跟17年前不一样。原因是多重的:协议早没人用了,代码长期没人维护,补丁债越积越多。但直接触发因素更讽刺——最近冒出大量AI生成的AppleTalk修复补丁,用LLM批量生成,质量参差不齐,没人有能力也没动力去审。Kicinski在邮件列表里原话说得很直白:"We recently got a burst of AI generated fixes to this protocol which nobody is reviewing."没人用的代码,没人审的补丁,留着只会增加攻击面。
这已经不是Linux内核第一次被AI补丁搞心态了。上一个周期(Linux 7.1)里,AI补丁洪流同样冲垮了ARCnet、ISDN和业余无线电驱动,那轮清理被称为"LLM-pocalypse",一口气删了约138,000行代码。
AF_ALG加密驱动也没逃过。这个内核里的用户态加密接口被标记为"deprecation approved",主因是维护负担重加上安全风险(Copy Fail CVE-2026-31431),AI扫描器频繁在里面发现问题只是加速了下定决心。
SLAB分配器大改:性能提升35%-72%
内核7.2的另一个重点是SLUB内存分配器的性能优化。来自中兴的开发者Shengming Hu提交了一个改动:把freelist构建延迟到批量分配之后。
效果有多猛?在slub_bulk_bench微基准测试里:
- •
CONFIG_SLAB_FREELIST_RANDOM=n时,每个对象的分配时间下降约35%-72% - •
CONFIG_SLAB_FREELIST_RANDOM=y时,下降幅度略有收窄,但仍在30%以上
这是理想情况的数据。实际工作负载的提升取决于新slab refill路径被触发的频率,不会每次都这么夸张。但SLUB分配器是内核里调用最频繁的路径之一,即使每笔只省一点点,累计下来也不小。
值得一提的是,SLAB_FREELIST_RANDOM不只是性能开关——它是内核防御heap exploitation的关键机制之一,随机化freelist顺序可以增加攻击者预测内存布局的难度。这次优化在不牺牲随机化的前提下提升了性能。
另一个改动是批量拆分和重新附加partial slab,Hao Li的will-it-scale mmap基准测试显示有2%-5%的性能提升。不算炸裂,但mmap是很多应用的核心路径。
三、SteamOS 3.8
Valve在6月中旬放出了SteamOS 3.8正式版,这是Steam Deck发售以来的第9次大版本更新。
主要变化:
- • 内核和Mesa图形驱动都升级了,安全修复和性能提升都有
- • 新增Steam Machine初始支持,硬件规格据传为AMD Radeon RX 7600级别GPU配8GB显存
- • VRR帧同步改善,接显示器体验更好
- • Steam Deck LCD和OLED都拿了新BIOS
- • 蓝牙唤醒在LCD版上重新启用
- • TCL电视WiFi性能问题也修了
SteamOS 3.8基于Arch Linux构建。这次AUR供应链攻击对Valve来说是个提醒——好在SteamOS主要走官方仓库,AUR只存在于桌面模式,但桌面模式的开放性也是Steam Deck吸引第三方应用的原因,完全关掉并不现实。
一句话总结
AUR的"领养孤儿包"攻击揭示了Arch生态信任机制的深层脆弱性。攻击者只需接管一个废弃包,就能将恶意代码注入依赖链。内核社区在AI补丁洪流里选择用删除废弃代码来减少攻击面—— SteamOS 3.8也在继续铺路,但Linux生态的安全韧性,问题不止于1600个包。