导语:大型厂商也中招。近日安全研究发现,红帽(Red Hat)名下的 npm(Node.js 包管理器)命名空间 @redhat-cloud-services 被植入窃密蠕虫,涉及32个包、96个受感染版本,累计每周约116,991次下载。攻击通过被窃取的 GitHub 凭证与 GitHub Actions OIDC 令牌在构建环节注入恶意 preinstall 钩子(安装前脚本),一旦运行即可窃取 GitHub、SSH、AWS/GCP/Azure、Kubernetes、Vault 及 CI/CD 令牌,并具备自我传播能力。若你的开发或构建流程触及这些包,请立即采取下列5项紧急措施。
事件回顾:攻击者利用被攻陷的 GitHub 账户或构建凭证,将一个高度混淆的加载器(index.js)作为 npm preinstall 脚本注入到打包产物中。该载荷被指为 Mini Shai‑Hulud 系列的新变体(研究简称 Miasma),在拉取并执行后,会识别当前环境中可发布的包并把它们重新发布为带后门的版本,实现“受害者变成传播者”的蠕虫式传播。此次篡改主要发生在构建产物层,源代码仓库未必有对应改动,这是构建管道被利用的典型特征。红帽已从注册表移除受影响包,并表示未发现对客户生产环境的影响,但安全厂商警告应假定可能存在凭证泄露。
技术要点:npm 的 preinstall 钩子会在执行 npm install 时运行,意味着开发者本地、构建代理或 CI 运行器都会触发该代码。蠕虫首先尝试读取并上传环境变量、配置文件和凭证,随后再尝试以受感染账户发布带后门的新版本,从而实现链式感染。构建管道的自动化与广泛权限,使其成为攻击者首选切入点。
谁会受影响:拉取或构建时包含受影响版本的本地开发机、CI/CD runner、镜像构建代理及由其产出的镜像都可能被波及。即便厂商未报告客户受影响,也应按最坏情况处置。
立刻要做的5件事:
中期与策略建议:采用内部镜像与严格版本锁定,部署包签名与校验、生成并维护软件物料清单(SBOM),尽量使用短期临时凭证并最小化权限,限制谁能向命名空间发布并引入审批流程。对企业管理层而言,应把供应链安全作为持续投入,建立演练与快速响应机制,并要求关键供应商提供可验证的构建证明。
结语:此次事件再次提醒,开源依赖与构建管道的安全不可掉以轻心。无论是使用 Apple 设备、开发 iPhone17 应用,还是在云端部署服务,任何与构建相关的凭证都应被视为高危资产。从“我是否用过 @redhat-cloud-services”开始逐项自查,并按上述清单立即行动。