最信任的流水线,成了最软的肋
📋 总体概括
GitHub Actions 恶意工作流与 npm 恶意包两起投毒事件先后曝光,攻击者不再费劲打边界,而是直接潜伏在开发者最信任的工具链里。本文拆解两条攻击链的机理与数据,指出 CI/CD 凭据管理正在成为企业安全最被低估的敞口。
📄 正文
攻击者换打法了:不打边界,直接住进你的流水线。
最近两周,两条看似不相关的情报指向同一个事实——开发者工具链正在成为供应链攻击的主战场。一边是 GitHub Actions 恶意工作流伪装成安全检查,瞄准了 2577 个 secrets¹;另一边是代号 MALFEX 的 npm 投毒行动,用八个恶意包把信息窃取器送进了开发者的 Windows 终端²。两起事件的共同点只有一个:攻击的入口,都是开发者自己每天主动点击、主动执行的那个环节。
这不是零日漏洞的胜利,而是信任模型的坍塌。当安全投入还集中在网络边界和终端 EDR 上时,攻击者的侦察早已越过了防火墙,蹲守在 CI/CD 的环境变量里。
⚠️ 一、2577 个 secrets 摆在案板上,真正被偷走的有几个?
先看这起最值得警惕的事件。
CyberArk Labs 的威胁研究团队披露¹,攻击者向 GitHub 仓库注入了伪装成安全检查的恶意 workflow。这类 workflow 看起来人畜无害——跑一次依赖检查、执行一段扫描脚本——但在执行环境里,它能直接读到 CI/CD 运行时挂载的全部敏感凭据:SSH 私钥、云厂商访问令牌、第三方服务的 access token。
数据很有意思,也很扎心:这些恶意 workflow 总共瞄准了 2577 个 secrets,但研究人员最终确认的成功外泄,只有 26 个 secrets,分布在 13 个仓库中(数据来源:CyberArk Labs《Ghost Actions》事件报告¹)。
这个 2577 与 26 之间的巨大落差,恰恰是本次事件最有价值的信息(后文详述)。但对那 13 个仓库的运营方来说,落差毫无意义——它们的 SSH 密钥和云凭据已经在攻击者的服务器上了。
产业逻辑很清楚:CI/CD 系统是整个软件供应链里权限最高的节点。它天然要访问代码仓库、云账号、发布渠道,任何一个环节被劫持,攻击者拿到的都不是单点突破,而是一整条信任链的通行证。多年来企业把 CI/CD 当作后台设施对待,安全预算和审计强度都远低于对外系统,这个认知差正是攻击者的利润空间。
🎣 二、单人作坊,37419 次下载,八只恶意包
第二起事件更像一部低成本犯罪片的剧本。
Sysdig 威胁研究团队披露了代号 MALFEX 的 npm 供应链行动²:8 个恶意包,指向一个明显是单人操作的攻击者,活跃时间从 2023 年 8 月至今。载荷包括远控木马 Overlord RAT、一款名为 movinlike 的信息窃取器,以及一个藏在 ASCII 艺术字工具里的独立下载器——是的,一个看起来用来在终端里画字符画的实用工具,实际上是个恶意载荷的投递通道。
贡献最大的是名为 function-flag 的包,累计下载量达到 37419 次,且其恶意代码已经潜伏了相当长时间(数据来源:Sysdig 威胁研究团队 MALFEX 事件报告²)。
(图中数据来源:GitHub Actions 事件引自 CyberArk Labs¹;npm 事件引自 Sysdig²)
这类信息窃取器的目标是极其个人化、又极其致命的:浏览器保存的密码、Discord 令牌、加密货币钱包文件。也就是说,中招的往往不是公司服务器,而是开发者本人的工作终端。
这不是个案演绎,而是被公开研究反复验证的产业形态:IBM X-Force《Threat Intelligence Index》 系列报告连续多年指出,信息窃取器是全球最常见的初始感染载体之一,窃取到的凭据数据在地下市场被明码标价、批量转售,已经滋养出一条成熟的“窃密即服务(Stealer-as-a-Service)”分发链路³。一个运营者、一批抢注或仿冒的包名、一套现成的分发网络,成本几乎为零,收益却随开发者数量水涨船高。
📊 三、‘瞄准’和‘偷到’之间,隔着一整个检测盲区
金句先放这儿:安全报告里最贵的数字,不是攻击面有多大,而是有多少被悄悄兑现。
回到 2577 与 26 的对比。研究人员特别强调了一个区分:恶意注入(malicious injections)与实际执行的载荷(executed payloads)是两回事。一个恶意 workflow 被注入仓库,不等于它被触发过;它瞄准了某个 secret,不等于那个 secret 被传了出去。
| 维度 | GitHub Actions 投毒 | MALFEX npm 投毒 |
|---|---|---|
| 攻击载体 | 恶意 CI workflow | 8 个恶意 npm 包 |
| 伪装方式 | 冒充安全检查 | 实用工具/ASCII 艺术程序 |
| 目标资产 | SSH 密钥、云凭据、access token | 浏览器密码、Discord 令牌、加密钱包 |
| 规模 | 触及 2577 个 secrets | function-flag 单包 37419 次下载 |
| 确认战果 | 13 仓库 26 个 secrets 外泄 | 持续活跃超一年 |
| 载荷类型 | 凭据直接回传 | Overlord RAT + 信息窃取器 |
(表格数据来源:CyberArk Labs¹、Sysdig² 公开事件报告)
这个区分对防守方意味着什么?意味着你的检测体系必须能回答三个问题:哪些 workflow 被注入过、哪些真正运行过、运行时访问了哪些 secrets。目前绝大多数企业的 CI 审计日志只能回答第一个。很多组织对 GitHub Actions 的使用日志、对 npm 安装行为的可见性几乎为零——开发者 npm install 什么,IT 部门根本不知道。
把两条攻击链放到同一张图里看,行业格局就更直观了:
“说明:以下分析基于作者构建的分析框架,各攻击载体在象限中的位置为作者基于公开事件报告的主观评估,非任何厂商的量化测量结果。
CI/CD 投毒技术门槛不算最高,但影响面最大,属于‘头号威胁’象限;npm 恶意包门槛低、靠规模取胜;而构建环境后门门槛高、目标精准,是 APT 级玩家的选项。三种玩法,对应着从脚本小子到定向攻击组织的全光谱。
🛠️ 四、防御往哪落:把信任半径收窄到最小
好消息是,两起事件里没有用到任何'不可防御'的技术。坏消息是,防御要动的是组织习惯,不是买一个产品就能解决的。
核心思路只有一句话:假设流水线里的每一个环节都可能被投毒,然后据此收窄信任半径。
GitHub 官方近年推的 OIDC 联合身份、细粒度权限、trusted publishing,本质上都是在做同一件事:让 CI 运行时不再持有'万能钥匙'。而 npm 侧的 provenance 签名和双因素发布验证,则是在给包的出生证明盖章。工具都在,问题在于采用率——大量团队连 lockfile 都没有严格锁定,更不用说签名验证了。
这种滞后有公开数据佐证:GitGuardian《State of Secrets Sprawl》系列报告显示,公开代码仓库中泄露的 secrets 数量仍在逐年攀升,而多数组织的凭据轮换与清理速度远落后于泄露速度⁴。换句话说,企业侧的 secrets 治理整体上还处在起步阶段。这个滞后本身,就是下一波攻击的红利期。
🧭 小结:攻击面没有变大,攻击面‘觉醒’了
2577 个 secrets 与 26 次外泄、37419 次下载与一个单人运营者——这组数字讲的是同一个故事:开发者工具链的信任红利已经被攻击者充分定价,而防御侧的账还没开始算。
往前看,两个趋势值得盯住:一是 CI/CD 短期凭据与签名验证会从最佳实践变成合规底线;二是针对开发者个人终端的窃密行动会持续放量,因为它便宜、隐蔽、且直接通向企业内网。修管道这件事,越早动手,成本越低。
参考资料
1. CyberArk Labs,《Ghost Actions》:伪装安全检查的恶意 GitHub Actions 工作流事件报告(2577 个 secrets 被瞄准、26 个确认外泄于 13 个仓库)。
2. Sysdig 威胁研究团队,MALFEX npm 供应链攻击披露(8 个恶意包、function-flag 包 37419 次下载、Overlord RAT 载荷)。
3. IBM X-Force,《Threat Intelligence Index》年度报告(信息窃取器作为主要初始感染载体及窃密即服务生态分析)。
4. GitGuardian,《State of Secrets Sprawl》年度报告(公开代码仓库 secrets 泄露规模与治理滞后趋势)。
本文由本站 AI 辅助聚合生成,原始来源如下: