【天问】NuGet生态发现万圣节恶搞(恶意)包

一、引言

今日,奇安信技术研究院“天问”软件供应链安全监测平台监测到NuGet生态中有用户发布了包含自动执行脚本的包 Danger.ScriptExec-Vulnerable。我们通过平台对该包进行了动态行为分析,发现在安装该包的时候存在使用无痕浏览打开网页以及无限弹窗的情况。结合静态代码分析,我们认为该包仅仅是为了万圣节恶搞而发布,不存在其他恶意行为。

奇安信技术研究院“天问”软件供应链安全监测平台目前已增加对NuGet包的日常安全监测,并及时对外发布NuGet生态中存在的安全问题。我们使用动态、静态分析相结合的方式,基于天穹沙箱系统对NuGet包进行深度分析,可以检测当前已知的攻击以及可疑的行为。

二、包内容分析

自动执行脚本的原理在曾经的NuGet文档[1]中提到,总共有install.ps1、uninstall.ps1和init.ps1三种,它们分别在包安装、卸载和初始化的不同阶段执行。在NuGet 3.1 更新文档[2]中已明确不再支持install.ps1和uninstall.ps1脚本,但是直到目前init.ps1脚本仍然可以使用,并为恶意软件提供了攻击路径。最近的一次由Phylum发布的NuGet生态中的包名混淆攻击[3]就运用了这一自动执行脚本,本次发现的包同样使用了这一脚本。

Danger.ScriptExec-Vulnerable在今日共发布了三个版本,其中1.0.0版本不含自动执行的脚本,1.0.1和1.0.2版本均含有init.ps1脚本。下面将以1.0.2版本为例进行分析,脚本的内容如下:

[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');
Start-Process 'chrome' "https://www[.]coinbase[.]com/price/bitcoin --incognito"

while($true) {
[System.Windows.Forms.MessageBox]::Show('You have been hacked!','HA HA HA HA Trick or Treat :)');
Start-Sleep -Seconds 1
}

该脚本会在初次安装该包时自动执行,执行内容为使用Chrome的无痕浏览打开bitcoin的价格网页,随后会重复弹窗提示安装人员被黑以及含有万圣节习俗的标语 “Trick or Treat” ,不知道中招的人会不会感受到万圣节的快乐。下面是安装该包时脚本的运行结果,

三、 预防

由于恶意软件也会利用这种脚本进行攻击,使用NuGet生态的开发人员还是需要注意这类脚本的存在和内容。在安装不熟悉的包的时候推荐使用包详情页面的 Open in NuGet Package Explorer 和 Open in FuGet Package Explorer 先查看包的内容,确定不存在脚本或者脚本没有问题的时候再使用。

此外,你也可以关注奇安信技术研究院“天问”软件供应链安全监测平台,我们将及时发布NPM、PyPI和NuGet等生态存在的安全问题。

奇安信技术研究院“天问”软件供应链安全监测平台目前已增加对NuGet包的日常安全监测,并及时对外发布NuGet生态中存在的安全问题。我们使用动态、静态分析相结合的方式,基于天穹沙箱系统对NuGet包进行深度分析,可以检测当前已知的攻击以及可疑的行为。

参考链接:

[1] Creating And Publishing A Package, https://web.archive.org/web/20150327142806/https://docs.nuget.org/create/creating-and-publishing-a-package
[2] NuGet 3.1 Release Notes | Microsoft Learn, https://learn.microsoft.com/en-us/nuget/release-notes/nuget-3.1
[3] Phylum Discovers SeroXen RAT in Typosquatted NuGet Package , https://blog.phylum.io/phylum-discovers-seroxen-rat-in-typosquatted-nuget-package/