DevOps厂商Sonatype披露一系列常年存在于NPM存储库中的加密货币相关组件,其最新版本被恶意篡改,内置用以窃取环境变量等敏感资讯的混淆脚本。受影响的组件部分存在时间已超过9年,由于这些旧有开源项目未积极维护,便成为攻击者锁定的攻击入口。

Sonatype安全研究人员分析,涉及的组件涵盖区块链SDK、用户界面函数库、开发工具组态与类型定义等,常见于加密货币与Web3应用开发的模块。其中country-currency-map组件的下载量更累积达近29万次,近期上架的2.1.8版本即为被植入恶意程序代码的版本。该组件5年来未曾更新,其GitHub源码存储库也无异动记录,却在近日于NPM上出现新版,说明攻击并未通过源码贡献流程,而是直接操控NPM发布权限。

这波攻击的共同特征,是受影响的版本均在安装阶段执行两个位于package/scripts目录下的JavaScript文件,分别为launch.js与diagnostic-report.js,其内容经高度混淆,目的是在安装时取得用户系统中的环境变量,截取包含API密钥、OAuth访问权限或SSH私钥等凭证资讯。当这些环境变量未经适当加密或访问控制,便可能遭攻击者拦截并外流至远程服务器。

值得注意的是,本次事件涉及多个维护者不同、用途不一的组件,却在相近时间内陆续出现异常版本,研究人员推测可能与NPM账号遭重用密码攻击,或域名过期遭他人接管有关。由于这些项目多数已进入维护终止或活跃度低落状态,开发者对其NPM账号防护的警觉性与更新频率皆偏低,使攻击者有机可乘。

研究人员指出,虽然NPM自2022年起针对高影响力组件强制推行双重验证,但多数中小型、早期项目或个人项目开发者,仍未纳入此安全机制,特别是缺乏活跃维护的组件,更难强制其采取账号保护措施。

开发者与企业面对日益频繁且针对性强的供应链攻击,除了须强化账号防护、落实最小权限原则、管控依赖组件的来源与版本,也要持续监控其安全状态,以减少潜在风险对运营环境造成的冲击。对于已被污染的组件,开发者应检查构建流程与部署记录,并退回至安全版本,避免让恶意程序持续在内部环境中运行。