据观察,威胁行为者上传了合法npm包(如typescript-eslint和@types/node)的恶意拼写钓鱼版本,这些版本在包注册中心上已被下载数千次。
这些伪造版本分别名为@typescript_eslinter/eslint和types-node,它们被设计为分别下载特洛伊木马并获取第二阶段的有效载荷。
Sonatype的Ax Sharma在周三发布的分析中表示:“尽管拼写钓鱼攻击并非新鲜事,但恶意行为者在这两个库上花费的伪装努力仍值得注意。”
“此外,像'types-node'这样的包拥有高下载量,这表明一些开发者可能中了这些拼写钓鱼的招,同时威胁行为者也可能人为地增加了这些下载量,以提高其恶意组件的可信度。”
Sonatype的分析显示,@typescript_eslinter/eslint的npm列表指向了一个由名为“typescript-eslinter”的账户于2024年11月29日创建的虚假GitHub仓库。该包中包含一个名为“prettier.bat”的文件。
另一个与该npm/GitHub账户相关联的包名为@typescript_eslinter/prettier,它冒充了同名的知名代码格式化工具,但实际上被配置为安装虚假的@typescript_eslinter/eslint库。
该恶意库包含将“prettier.bat”放入临时目录并将其添加到Windows启动文件夹的代码,以便每次机器重启时都会自动运行它。
“尽管名为'prettier.bat',但该文件实际上是一个Windows可执行文件(.exe),VirusTotal之前已将其标记为特洛伊木马和下载器,”Sharma说。
另一方面,第二个包types-node包含指示,用于访问一个Pastebin URL并获取脚本,这些脚本负责运行一个名为“npm.exe”的恶意可执行文件。
“这一事件凸显了加强供应链安全措施以及在监控第三方软件注册表开发者方面提高警惕性的迫切需求,”Sharma说。
此外,ReversingLabs在2024年10月于Visual Studio Code(VSCode)市场中发现了多个恶意扩展,一个月后,npm注册表中又出现了一个新包,该包共吸引了399次下载。
现已从商店中移除的恶意VSCode扩展列表如下:
EVM.Blockchain-Toolkit
VoiceMod.VoiceMod
ZoomVideoCommunications.Zoom
ZoomINC.Zoom-Workplace
Ethereum.SoliditySupport
ZoomWorkspace.Zoom
ethereumorg.Solidity-Language-for-Ethereum
VitalikButerin.Solidity-Ethereum
SolidityFoundation.Solidity-Ethereum
EthereumFoundation.Solidity-Language-for-Ethereum
SOLIDITY.Solidity-Language
GavinWood.SolidityLang
EthereumFoundation.Solidity-for-Ethereum-Language
“该活动最初以加密社区为目标,但到10月底,发布的扩展大多冒充Zoom应用程序,”ReversingLabs研究员Lucija Valentić说。“并且每个发布的恶意扩展都比前一个更复杂。”
已发现所有扩展以及npm包都包含混淆的JavaScript代码,这些代码作为从远程服务器下载第二阶段有效载荷的下载器。目前尚不清楚有效载荷的确切性质。
这些发现再次强调了在从开源系统下载工具和库时要格外小心,并避免在大型项目中引入恶意代码作为依赖项。
“IDE能够安装插件并扩展功能,这使得它们成为恶意行为者极具吸引力的目标,”Valentić说。“在IDE中安装VSCode扩展时,人们往往忽视其安全风险,但IDE的沦陷可能成为企业开发周期中进一步沦陷的着陆点。”