热门npm 库 “coa” 被劫持并被注入恶意代码,影响全球所有的 React 管道。“coa” 库的全称是 ”命令-选项-参数“,每周的下载量约为900万次,用于 GitHub 上近500万个开源库中。几小时后,另外一个常用的npm组件 “rc” 也遭劫持,”rc”库的每周下载量达到1400万次。

恶意代码被注入 “coa” 发布

今天,全球所有的开发人员都会吃惊:npm 库 “coa” 竟然发布了新版本,要知道这个项目已经有数年没有人动过,今天突然出现在npm库中。“coa” 是 Node.js 项目的命令行选项解析器。该项目的最新稳定版 2.0.2 在2018年12月发布。但就在几个小时前,npm 上出现了可疑版本 2.0.3、2.0.4、2.1.1、2.1.3和3.1.3,导致依赖于 “coa” 库的 React 程序包崩溃。

一名 React 开发人员 Roberto Wesley Overdijk 指出,”我不确定发生了什么,但10分钟前发现一个发布版本(尽管GitHub 上的最后一次更新是在2018年)。这个发布版本导致互联网崩溃。“另外一名昵称为 ElBidouilleur 的GitHub 用户发现其中一个 “coa” 版本2.1.3 使其build 崩溃:

    npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! coa@2.1.3 preinstall:start /B node compile.js & node compile.jsnpm ERR!Exitstatus1npm ERR!npm ERR!Failedat the coa@2.1.3 preinstall script.npm ERR! Thisis probablynot a problemwith npm. Thereis likely additionalloggingoutput above.npm ERR! Acompletelogof this run can befoundin:npm ERR! /home/mboutin/.npm/_logs/2021-11-04T14_01_45_544Z-debug.log

    多名开发人员加入讨论,证实了自己在 “coa” 新版本发布后,build 出现各种问题。

    不久后另外一个热门的npm库 “rc” 也被劫持,npm 中出现了恶意版本1.2.9、1.3.9和2.3.9。

    恶意软件类似于被黑的 “ua-parser-js” 和虚假 Noblox 包

    上个月,另外一个流行的热门 npm 库 “ua-parser-js” 被黑。该库用于 Facebook、微软、亚马逊、Reddit 和其它科技巨头。

    据 Bleeping Computer 分析,被黑的 “coa” 版本中所含的恶意软件和被劫持的 “ua-parser-js” 版本中的代码十分相似,可能说明这两起事件背后的威胁行动者之间存在关联。

    分析指出,被黑的 “coa” 版本 2.0.3、2.1.3和其它版本中仅包含可疑的 preinstall 脚本:

      "preinstall":"start /B node compile.js & node compile.js"

      但从2.0.4版本中才发现完整的恶意代码。预装脚本引用的 “compile.js” 在 coa:2.0.4中存在并运行。“compile.js” 文件中包含混淆的 JavaScript 代码。

      该 JavaScript 文件之后启动 Batch 文件,即 “coa” npm 文档中包含的 “compile.bat”。该 Batch 脚本虽然未再次混淆,但在上周发现的虚假 Noblox npm typosquat 中,它将在受感染机器上安装勒索软件和凭据窃取工具。它应用的是混淆的“变量扩展“概念。

      该 Batch 文件下载并运行 pastorcryptograph[.]at 的 “sdd.dll”,它和被劫持的 “ua-parser-js” 版本时访的 “sdd.dll” 并不相似。而”rc”恶意版本释放的 “sdd.dll” 和这两个从校验和角度来看又有所不同。但所有的DLLs都植入了相同的恶意软件。

      如下是未混淆的 Batch 文件。

      从现有的分析和信息来看,该恶意软件很可能是 Windows 版本的 Danabot 密码窃取木马。通过 regsvr32.exe 加载时,它最终会再次使用具有多种参数的 rundll32.exe 启动来执行不同的恶意行为。

      加载时,Danabot 将执行多种恶意活动,包括:

      • 从多种 web 浏览器中窃取木马,包括 Chrome、Firefox、Opera、IE 和 Safari。

      • 从多款应用中窃取木马,包括VNC、在线赌博应用、FTP客户端和邮件账户

      • 窃取存储的信用卡

      • 截取活跃屏幕

      • 记录键击

      所有被盗数据之后被发送回给威胁行动者,从而攻陷受害者的其它账户。

      COA 用户如何应对?

      鉴于该供应链攻击的影响广泛,强烈建议所有的 “coa” 库和 “rc” 库用户检查自己的项目中是否存在恶意软件,如检查是否存在 compile.js、compile.bat、sdd.dll,如存在则删除。

      由于该 “sdd.dll” 变体在 VirusTotal 中被检测为木马,而 “ua-parser-js” 释放的时凭据窃取工具,因此受感染用户应当假定自己的设备已被完全攻陷并更改密码、密钥并刷新令牌,因为它们可能遭攻陷并被发送回给威胁行动者。

      Overdijk 表示,”NPM 已删除被攻陷版本,如我理解正确,应该拦截了临时发布的新版本,同时恢复了对该软件包的访问权限。由于已删除受影响版本,因此无需任何修复方案。“他表示,以防万一,建议仅使用2.0.2稳定版,直到问题完全解决。

      对于“rc”库而言,安全版本是1.2.8。npm 项目组表示,”从调查结果来看,我们实时发现了包含类似于’coa’程序包中恶意软件的 ‘rc’ 程序包。’rc’恶意版本立即从注册表中删除,我们已发布安全公告“。

      Npm 表示该事件是由失陷的某 npm 账户造成的,建议npm维护人员使用双因素认证,阻止此类攻击。

      原文链接

      https://www.bleepingcomputer.com/news/security/popular-coa-npm-library-hijacked-to-steal-user-passwords/

      声明:本文来自代码卫士,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。