ReversingLabs 最近的一项调查显示,一次针对性的网络钓鱼攻击导致广泛使用的 npm 软件包 eslint-config-prettier 被入侵,使数千个下游开发项目面临风险。该软件包拥有超过 35 亿次下载量和 1.2 万个依赖项目,其维护者在一次精心策划的钓鱼攻击中上当,从而导致账户被劫持。
据 ReversingLabs 报告称,“通过一次精心设计的钓鱼活动,攻击者从被入侵的维护者账户发布了恶意版本的 eslint-config-prettier。” 钓鱼邮件伪装成官方 npm 支持邮箱,并引导受害者访问一个模仿 npm 官方界面的钓鱼网站。被窃取的凭证随后被用于发布恶意版本的 eslint-config-prettier,以及其他软件包,如 eslint-plugin-prettier、synckit、@pkgr/core 和 napi-postinstall。
首个恶意版本于 7 月 18 日 15:51 GMT 发布,仅两小时后被移除。尽管窗口时间很短,但由于该软件包的高下载量,其潜在影响仍然巨大。受影响版本包含一个 postinstall 脚本,会投放 Windows PE DLL 文件,进而部署 Scavenger 远程访问木马(RAT)。
ReversingLabs 指出,“即使是短暂的被入侵窗口,也可能带来严重后果”,尤其是在自动更新机制发挥作用的情况下。
此次攻击之所以影响扩大,一个关键因素是 GitHub Dependabot 等自动依赖更新工具的广泛使用。虽然这些工具有助于简化安全补丁的应用,但同时也可能加速恶意更新的传播。
ReversingLabs 观察到,在一些案例中,“Dependabot 自动发起了版本升级的 PR,而另一自动化工具批准并合并了该 PR……导致在 PR 检查过程中安装了恶意依赖。” 这一情况在公共自行车车队管理公司 Dott 的 GitHub 仓库中尤为明显,甚至出现在微软旗下的一个开源项目中。
虽然 eslint-config-prettier 通常作为开发依赖(devDependency)使用,但由于部分工作流配置不当,恶意代码常在构建过程中被执行。该恶意软件被标记为 node-gyp.dll,在检测时仅有 72 个 VirusTotal 杀毒引擎中的 19 个能发现,凸显了检测盲点。
ReversingLabs 对恶意版本哈希的搜索显示,有 46 个 GitHub 仓库——包括微软的一个项目——在其 package-lock.json 中包含受影响的依赖包。报告强调,依赖自托管运行器且配置不当的组织尤为脆弱,因为恶意代码可能在构建过程结束后仍然存在。
该事件为软件供应链安全提供了重要教训:自动更新绝不能绕过人工审核。ReversingLabs 警告称,“泄露的 GitHub 令牌正成为威胁行为者的热门攻击目标”,在类似事件中,这类令牌可能让攻击者深入获取开发环境的控制权限。
发表评论
您还未登录,请先登录。
登录