VSCode插件安全需主动核查:认准官方发布者、验Verified徽章、查package.json权限声明、用vsce验证签名、启用Web Worker降权运行,并警惕潜伏型扩展的渐进式恶意更新。

VSCode 插件市场本身不执行代码签名强制校验,也不对上传者做实名核验,所以「出现在 Marketplace 上」不等于「安全」。真正能拦住恶意扩展的,是你安装前那几十秒的主动核查。
怎么看插件发布者是不是真官方
仿冒是最常见手段:比如搜索 Prettier,排第一的未必是 esbenp.prettier-vscode,而可能是 prettier-official 或 prettier-plus 这类名字近似、图标雷同的假包。
- 点进插件详情页,紧盯右上角
Publisher字段——必须和 GitHub 仓库 owner、npm 包发布者、官网文档署名完全一致 - 点击发布者名称,看其历史插件数:只发过这一个、且上线时间在最近 7 天内,基本可判为钓鱼
- 检查是否带
Verified Publisher徽章(微软人工审核通过),没这个徽章的,哪怕下载量 100 万也要多看两眼
package.json 里藏着什么危险信号
VSCode v1.86+ 强制要求插件在 package.json 中声明权限,但很多恶意插件会故意写宽泛的激活事件或能力,只为触发执行时机。
- 重点查
"activationEvents":出现"onCommand:workbench.action.terminal.runSelectedText"或"onStartupFinished"是高危标志 - 查
"capabilities":如果插件只做语法高亮,却声明了"untrustedWorkspaces": { "supported": true }或"virtualWorkspaces": true,说明它想绕过工作区信任机制 - 用浏览器打开插件详情页的
View on GitHub链接,直接跳转到仓库根目录,看package.json是否和 Marketplace 页面显示的一致——不一致就立刻放弃
装之前先跑个 vsce verify
VS Code 官方工具 vsce 能验证 .vsix 文件签名链是否完整、证书是否有效,这是唯一能确认“包没被中间篡改”的方式。
- 先装工具:
npm install -g vsce - 手动从 Marketplace 下载插件(URL 改成
https://marketplace.visualstudio.com/_apis/public/gallery/publishers/{publisher}/vsextensions/{name}/{version}/vspackage),保存为xxx.vsix - 运行:
vsce verify xxx.vsix,输出中必须含Signature is valid且无certificate has expired类警告 - 注意:这个验证只防篡改,不防作者本就有意埋后门——它只是你安全链条里必要但不充分的一环
启用 Web Worker 模式运行可疑插件
VSCode 自 1.85 起支持把插件进程降权运行,禁用 fs、child_process、net 等 Node.js 核心模块,哪怕插件有恶意逻辑,也大概率跑不起来。
- 打开
settings.json,加这一行:"extensions.experimental.affinity": { "publisher.name": 2 }(把publisher.name替成实际发布者 ID) - 重启 VSCode 后,该插件若突然功能失效、控制台又没报错,反而说明它原本依赖高危 API —— 这就是最直接的证据
- 别全量设
"*": 2,否则大量合法插件(比如 Live Server、ESLint)会直接瘫痪
真正难防的不是明目张胆的恶意插件,而是那些权限声明“看起来合理”、源码看似干净、更新日志写得滴水不漏的长期潜伏型扩展。它们往往靠小版本迭代慢慢加功能,直到某次更新悄悄接入远程 C2 服务器。盯紧发布者变更、commit 频率突变、以及 package.json 里新增的任意 require 或 eval 调用,比任何自动化扫描都管用。


















