你以为是代码被黑,其实是标签被改;你以为是仓库出事,其实是日志裸奔。2025年3月那场23,000仓库中招的GitHub Action劫持事件,暴露了一个反直觉的事实:最危险的攻击往往发生在最不起眼的环节。
安全工程师用两年画了张图,把供应链攻击拆成六个"表面"。每个表面有各自的 flagship 工具配色——Git橙、npm红、Actions蓝、Kubernetes蓝——颜色即位置,一眼定位攻击发生在哪一环。
![]()
标签即入口:23,000仓库的15小时
2025年3月14日,tj-actions/changed-files 被劫持。CVE-2025-30066。影响范围:23,000个仓库,持续15小时。
攻击手法出奇简单。GitHub Action 的 workflow 里写 uses: tj-actions/changed-files@v44,那个 v44 是个标签(tag)。标签只是指向某个提交哈希(commit SHA)的便利贴,而 git 上的标签是可以重写的。
拿到维护者的 GitHub Token 后,攻击者把 v1 到 v45 的所有标签全部重指向同一个恶意提交。任何用了 @v44 的 CI,下次运行时就自动执行了恶意 Action——受害方自己的代码完全没动。
恶意 Action 做什么?从运行器内存里刮取 AWS / GitHub / PyPI 的 token,base64 编码后,公开转储到 job log 里。GitHub Actions 的日志是公开可读的。泄露就此完成。
「The headlines say 'another supply chain attack'. But put this next to the 2024 xz-utils backdoor and the spot that got hit, and the defense that actually works, are nothing alike.」
这是 chainscope 项目的起点。作者试图把差异塞进一张图,失败,最后做成了一套 slides。
六表面模型:从源码到生产的六个检查站
从源码到生产,一个制品(artifact)经过六个阶段。chainscope 称之为六个"表面"(surfaces):
01 源码(source)——Git 橙 #f05032
02 依赖(deps)——npm 红 #cb3837
03 构建(build)——GitHub Actions 蓝 #2088ff
04 制品(artifact)——(未指定旗舰工具)
05 分发(distribute)——(未指定旗舰工具)
06 消费(consume)——Kubernetes 蓝 #326ce5
攻击者只需拿下其中一个表面。防御者需要在每个表面都设防,漏一处即全盘皆输。
每个表面配一个真实案例。目标是:下次新闻爆发时,你能立刻归类——"哦,这是 03 表面的事"。
01 表面:源码——xz 后门的两年潜伏
CVE-2024-3094,CVSS 10.0。"Jia Tan" 花了两年时间混进 xz 维护者位置,最终在发布 tarball 里植入后门——注意,Git 源码树里从来没有。
手法:把 payload 藏在测试固件(test fixtures)里。sshd 后门只在构建时自动接入。PostgreSQL 核心开发者 Andres Freund 偶然从 valgrind 的噪音中发现了异常。
有效防御是什么?commit 签名加上可复现构建(reproducible builds),两者缺一不可。
gitsign 风格的 commit 签名把提交绑定到真实的 OIDC 身份。可复现构建让你能逐位比对:从 Git 树构建出的 tarball,与官方发布的 tarball 是否完全一致。没有后者,"只在 tarball 里下毒"的 trick 就能长驱直入。
02 表面:依赖——npm 的首个自我传播蠕虫
首个在公开 registry 上自我传播的蠕虫。攻击者用伪装成"npm security alert"的钓鱼邮件骗取 npm 维护者凭证。
拿到被盗的 npm token 后,攻击者推送恶意包。开发者运行 npm install 拉取时,postinstall 钩子触发:先提取本地的 NPM_TOKEN / GH_TOKEN / ~/.pypirc,然后把相同恶意代码注入该开发者拥有的每个包,重新发布。
每个受害者启动下一波传播。无需人工介入,纯横向扩散。到 2025 年 9 月 16 日,超过 180 [原文截断]
【原文内容在此处中断,后续内容缺失】
从已有信息看,chainscope 的核心价值在于建立了一套视觉语言:用颜色锚定攻击位置,用编号快速归类。对于每天被安全警报轰炸的工程师来说,这比"又一起供应链攻击"的模糊表述实用得多。
判断:供应链安全的认知框架正在从"清单式防御"转向"地图式定位"。chainscope 的六表面模型提供了一种最小可行的分类法——下次事件爆发时,你能立刻知道该去哪个环节查日志、补规则、做签名。这比事后写复盘报告更有防御价值。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.