Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-26700 — 针对CVE-2021-26700的概念验证:通过恶意workspace settings.json在VSCode npm-script扩展中实现远程代码执行,包含详细利用和修复指南。 | Kitploit
工具/GitHubGitHub/jackadamson/cve-2021-26700
漏洞分析代码分析漏洞利用Web应用程序漏洞利用供应链安全学习与教育
GitHubjackadamson/cve-2021-26700

CVE-2021-26700

针对CVE-2021-26700的概念验证:通过恶意workspace settings.json在VSCode npm-script扩展中实现远程代码执行,包含详细利用和修复指南。

查看仓库
20165年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

NPM VSCode 扩展中的远程代码执行漏洞

已于 2021 年 2 月 10 日修复,修复提交:https://github.com/microsoft/vscode-npm-scripts/commit/cdd5e507564e0cc0f60bcccf184822be3fd73e07

漏洞公告:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26700

概述

eg2.vscode-npm-script VSCode 扩展(测试版本为 0.3.13)中存在远程代码执行漏洞,这意味着项目中的恶意 .vscode/settings.json 文件可在查看名为 package.json 的文件时触发远程代码执行。

此漏洞不在任何活跃的 Microsoft 漏洞奖励计划范围内,但已向 MSRC 报告并得到处理。

描述

在未设置恶意 .vscode/settings.json 文件的仓库中,当安装了 eg2.vscode-npm-script 扩展并查看 package.json 文件时,会执行命令 npm ls --depth 0 --json。

如果攻击者在项目的 settings.json 中将 npm.bin 键设置为例如 ./payload.sh,则查看 package.json 时会转而从包含 package.json 的目录中执行 ./payload.sh ls --depth 0 --json。

此漏洞打破了“可以安全读取源代码”的假设。

攻击示例

攻击者利用此漏洞的示例流程如下:

  1. 攻击者发布一个仓库,例如附带的 linux-poc
  2. 受害者克隆该仓库以在 VSCode 中读取源代码
  3. 受害者查看 package.json
  4. payload.sh 被执行

修复方案

我看到有两种方法可以减轻恶意 VSCode 工作区 settings.json 带来的风险。

缓解措施 1 - 仅允许用户设置

禁止在工作区级别设置该配置。VSCode 已对 git.path、terminal.integrated.shell.linux 等少数设置采用了这种方式。

这可能会破坏部分用户的兼容性,但有先例可循。
参考文档:https://vscode.readthedocs.io/en/latest/getstarted/settings/#settings-and-security

缓解措施 2 - 确认提示

如果该设置在工作区中被定义,则在执行二进制文件前提示用户确认该设置。
这不会破坏现有兼容性,ESLint 扩展自 2.1.7 版本起就采用了这种方法。

概念验证

Linux

  1. 安装受影响版本的 VSCode 扩展 eg2.vscode-npm-script(0.3.13 或更早版本)
  2. 在 VSCode 中将 linux-poc 目录作为文件夹打开
  3. 在 VSCode 中点击 package.json 文件进行查看
  4. 文件 /tmp/output.txt 将被创建,以证明命令已执行

Windows

  1. 安装受影响版本的 VSCode 扩展 eg2.vscode-npm-script(0.3.13 或更早版本)
  2. 在 VSCode 中将 windows-poc 目录作为文件夹打开
  3. 在 VSCode 中点击 package.json 文件进行查看
  4. 将打开 calc.exe

注意:在 Windows 上我无法使用二进制文件的相对路径,但这可能是我对 Windows 不够熟悉所致。

下载工具