详述Visual Studio 代码远程开发扩展中的远程命令执行漏洞

1fcfb5e7dbce9f5cd9c3a2ecc7644f18.gif 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士

Visual Studio 代码远程开发扩展(Code Remote Development Extension) 1.50 未能在将其用作 ssh 命令的参数前清理 host 字段,导致注入 ProxyCommand 选项,从而运行任意代码。

0dca645db583681e56058a7c30598a67.png

产品描述

微软称,Visual Studio Code 远程开发可使用户使用容器、远程及其或 Windows Subsystem for Linux (WSL) 作为功能全面的开发环境。

用户能够:

  • 在用户部署的操作系统上开发或者使用更大的或更专门的硬件。

  • 分离开发环境,避免影响本地机器配置。

  • 使新贡献者能够动手并让所有人都位于统一环境中。

  • 使用本地OS上不可用的工具或运行时,或管理它们的多个版本。

  • 使用 Windows Subsystem for Linux 开发自己的部署在 Linux 上的应用程序。

  • 从多个机器或位置访问现有的开发环境。

  • 调试在别处如在客户站点或云中运行的应用程序。

获得这些权益,无需在本地机器部署源代码。远程开发扩展包中的每个扩展都能够直接在容器内、WSL 中或远程机器上运行命令和其它扩展,使得在本地运行时未察觉任何变化。

f64bdec1e854859c9322c8acef5e6ee0.png

CVE 编号

CVE-2021-17148

bbcc328d5503e92d822870c032dd6197.png

根因分析

“Remote-SSH”扩展中存在一个参数注入漏洞,该扩展由”远程开发“扩展使用并安装。扩展使用主机的SSH二进制建立和远程主机的连接。

触发 SSH 连接的其中一种方式使使用 vscode://URI 图式。具体而言,格式如下:vscode://vscode-remote/ssh-remote+$REMOTE_HOST+$PATH_OF_PROJECT_ON_THE_REMOTE_HOST

用户浏览和之前一样的 URI 时,VSCode 打开,该扩展尝试连接至 $REMOTE_HOST,在连接过程中,执行如下命令:ssh -T -D $RANDOM_PORT "$REMOTE_HOST" bash。

由于未在 $REMOTE_HOST 用户提供的输入中执行清理,因此很有可能在SSH 二进制中注入任意参数。SSH 具有一个名为 ProxyCommand 的选项,它指定在执行真正的SSH连接前执行的命令。

这样,就很有可能通过强迫受害者打开恶意连接的方式在受害者主机上执行任意系统命令。

87a10f1d06815abf0f066022f902ad4c.png

PoC

1、安装 Visual Studio Code

2、安装”远程开发“扩展

3、打开浏览器

4、访问如下URL:

vscode://vscode-remote/ssh-remote+-oProxyCommand=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -c msg %username% command_injection" "a@127.0.0.1+/a

5、确认打开VSCode

6、选择任意OS(Linux/Windows/MacOS)

7、通过 “command_injection” 信息发现由 PowerShell 执行的弹出信息

9cb2b5fefbf0787788add76ac77f0c4c.png

只要编辑 ProxyCommand,就可能在 Linux 和 MacOS 上复现同样的攻击。

ad5d703e44b0d01a68e735e2a9e23724.png

影响

能够强迫受害者访问恶意链接的攻击者能够在系统上执行任意命令。

8a0c40636eba47cd2b9ae7901b2804f5.png

修复方案

将Visual Studio 代码远程开发扩展更新至 1.51 或更高版本

207753b3fa05ebfbd5f166ce50fb5c11.png

披露时间线

  • 2020年8月17日:发现并将漏洞告知微软

  • 2020年8月20日:微软证实漏洞存在

  • 2020年11月2日:微软发布修复方案

  • 2021年9月24日:Shielder 公司发布本公告


推荐阅读

微软紧急修复两个 RCE,影响 Windows Codecs 库和 Visual Studio

VSCode 扩展中出现严重漏洞,可导致供应链攻击

坐火车太无聊,我溜入微软 VS Code官方GitHub仓库,但没敢发动供应链攻击

原文链接

https://www.shielder.it/advisories/remote-command-execution-in-visual-studio-code-remote-development-extension/

题图:Pixabay License

本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

aaf2d65c0a6a74542f40f2dcb5b5d9f3.png

ae9fd354983cf003711f44ea655d11db.png

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

   fc87dd6d7437b4e67ac3fa79780fa257.gif 觉得不错,就点个 “在看” 或 "赞” 吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值