安全客 11小时前
多款热门 npm 代码规范包遭钓鱼攻击劫持并用于投放恶意软件
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

近期,多个流行的JavaScript库,包括每周下载量超3000万次的eslint-config-prettier,因其维护者遭遇钓鱼攻击而遭到劫持。攻击者利用窃取的npm令牌,向官方仓库发布了包含恶意代码的版本,旨在Windows系统中植入木马病毒。这些恶意版本通过一个名为“install.js”的postinstall脚本执行,该脚本会尝试运行捆绑的DLL文件。此次事件暴露了开源生态系统在依赖链安全方面的脆弱性,强调了维护者安全防护和用户对锁文件及CI日志的检查至关重要。这是近期一系列针对热门库开发者的社会工程攻击事件的延续,凸显了供应链安全挑战。

💡 恶意攻击通过钓鱼邮件和窃取npm令牌实现,攻击者成功向npm仓库发布了被篡改的eslint-config-prettier、eslint-plugin-prettier、synckit、@pkgr/core和napi-postinstall等JavaScript库的恶意版本。这些版本并未在GitHub仓库中有相应的代码更新记录,引起了社区警觉。

💻 被植入的恶意代码通过名为“install.js”的postinstall脚本在包安装后执行,该脚本利用Windows系统进程rundll32执行捆绑的DLL文件“node-gyp.dll”。该DLL已被识别为木马病毒,目前仅被少数杀毒软件检测到,对Windows用户构成潜在威胁。

🛡️ 为避免风险,用户应避免安装受影响版本的库(如eslint-config-prettier的8.10.1、9.1.1、10.1.6、10.1.7版本等),并检查package-lock.json等锁文件以确认依赖版本。对于7月18日后部署的构建,建议检查CI日志和运行环境,特别是Windows机器,并考虑更换可能暴露的密钥或凭证。

🔗 此事件是近期针对开源生态系统的一系列社会工程攻击的延续,此前已有多个npm库被植入信息窃取程序或被用于部署远程访问木马。这突显了开源供应链的脆弱性,以及维护者安全意识和防护措施的重要性,一次失误可能影响数百万用户。

本周,多款流行的 JavaScript 库遭劫持并被用于投放恶意软件,这是一场通过精准钓鱼攻击和凭证窃取实施的软件供应链攻击事件。

其中最受欢迎的 npm 包 eslint-config-prettier 每周下载量超过 3000 万次,在其维护者遭遇钓鱼攻击后被攻破。攻击者还针对该维护者名下的其他包发起攻击,包括 eslint-plugin-prettiersynckit@pkgr/corenapi-postinstall

威胁者利用窃取的访问凭证,向 npm 发布了多个包含恶意代码的未授权版本,目标是在 Windows 系统中植入恶意程序。

维护者遭钓鱼攻击,多个库被篡改

7 月 18 日,开发者在安装 eslint-config-prettier 的 8.10.1、9.1.1、10.1.6 和 10.1.7 版本后发现异常行为。这些版本虽然已经发布至 npm 官方仓库,但在对应的 GitHub 仓库中并未发现任何与之匹配的代码更改记录,引发了开源社区的高度警惕。

eslint-config-prettiereslint-plugin-prettier 这样的库可帮助开发者更便捷地在项目中结合使用 Prettier 与 ESLint,使代码格式化规则一致,避免冲突或重复的 lint 校验。这一事件突显出开源生态系统在依赖链维护方面面临的重大安全挑战。

开发者 Dasa Paddock 最早在该项目的 GitHub 仓库中提出了相关问题,引发了社区成员的广泛关注和迅速响应。

不久之后,该包的维护者 JounQin 证实自己确实遭遇了钓鱼攻击。攻击者由此获取了他的 npm 令牌,从而得以发布被植入恶意代码的版本。

“就是这封钓鱼邮件,”JounQin 写道,并分享了一张他收到的钓鱼邮件截图,内容是一封看似来自官方的“验证您的账户”邮件,伪装程度极高。

该邮件通过伪造手段,伪装成来自“support@npmjs.com”的官方地址,但其中的链接却指向一个非法域名“npnjs[.]com”。

JounQin 表示:“我已删除该 npm 令牌,并将尽快发布新版本。”

这位维护者在同一讨论中继续写道:“感谢大家的提醒,对我的疏忽深感抱歉。”

恶意 postinstall 脚本执行 Windows DLL

在这些恶意版本中,npm 包含一个名为 “install.js” 的 postinstall 脚本,该脚本会在包安装后立即运行。

这个 “install.js” 脚本中包含一个名为 logDiskSpace() 的可疑函数,尽管名字与磁盘空间监控相关,实际上它并不执行监控功能。相反,该函数试图通过 Windows 系统进程 rundll32 执行包内捆绑的 DLL 文件 “node-gyp.dll”。

截至目前,该 DLL 已被确认是一个木马病毒,在 VirusTotal 的检测评分为 19/72,说明大多数杀毒软件尚未能检测到该恶意程序。

你应该怎么做?

  • 避免安装以下受影响版本的包:

    • eslint-config-prettier 版本:8.10.1、9.1.1、10.1.6 和 10.1.7

    • eslint-plugin-prettier 版本:4.2.2 和 4.2.3

    • synckit 版本:0.11.9

    • @pkgr/core 版本:0.2.8

    • napi-postinstall 版本:0.3.1

  • 检查锁文件,如 package-lock.json、pnpm-lock.yaml、bun.lock 或 yarn.lock,确认是否引用了上述版本。

  • 如果你在7月18日之后部署了构建版本,请检查持续集成(CI)日志和运行环境,特别是 Windows 机器,是否有被入侵的迹象。

  • 考虑更换在受影响构建过程中可能暴露的任何密钥或凭证。

  • 维护者已在 npmjs 注册表中将受影响版本标记为“弃用”。

  • 另外,一位 GitHub 用户提醒,应检查该维护者发布的其他包是否存在被篡改的迹象。

此次事件是近期一系列针对热门库开发者的社会工程攻击的延续。

今年三月,十多个广泛使用的 npm 库遭到入侵,被植入信息窃取程序。上个月,又有17个 Gluestack 包被劫持,这些包每周下载量超过一百万,被用来部署远程访问木马(RAT)。

开源生态系统在很大程度上依赖信任,因此此类事件凸显了供应链安全的脆弱性以及维护者安全防护的重要性。一次错误的点击,就足以让数百万用户面临风险。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

JavaScript库 软件供应链攻击 npm 钓鱼攻击 开源安全
相关文章