以为远程隔离很安全?VSCode Remote SSH 能反向在你本地执行命令
字

字节笔记本

2026年11月8日 · 约 4 分钟读完

以为远程隔离很安全?VSCode Remote SSH 能反向在你本地执行命令

赞助API中转
¥120

以为远程隔离很安全?VSCode Remote SSH 能反向在你本地执行命令

一位 V2EX 网友 11 月 8 日的“发现”帖又把这个老话题顶了上来:他一直用 VSCode Remote SSH 连服务器做开发,不同服务器分担不同任务——AI YOLO 模式、跑不太信任的开源项目——本以为“最多一台服务器被搞坏、删掉就行”,最近发现远程服务器能反过来让本地 Mac 执行命令。先定性:这不是新漏洞、没有 CVE、没有官方回应——机制早在 2025 年 2 月就被 Fly.io 的博客讲透(作者 Thomas Ptacek),HN 在 2026 年 9 月又讨论过一轮(737 分);今天值得写,是因为“隔离感是错觉”这件事,每个新用户都会再撞一次。

Fly.io 博客配图

机制:不是借用 SSH,是“全面入侵”(博客原文口径)

Fly.io 博客的对比:经典方案(如 Emacs 的 Tramp)是“靠远程连接现场凑合”,而 VSCode 是“全面入侵”——先跑一段 Bash stager 下载 agent(含一份 Node 二进制安装);agent 走端口转发的 SSH,建立 WebSocket 回连本地正在运行的 VSCode 前端。这条连接上的协议可以:漫游文件系统、改任意文件、开自己的 shell PTY 进程、自我持久化。作者在安全圈语境里暗示这更像某类远控工具——但他也明说,这是提供远程开发体验的必要设计,不是 bug。

官方其实写过,只是没人读

Remote-SSH 扩展的安全提示里写明:使用 Remote-SSH 会在本地与远程之间打开一条连接,只应用于连接可信主机。要求微软把 Remote Development 的安全模型写成正式文档的 issue(#6608)从 2022 年 4 月开到现在仍是 open。HN 讨论里有评论说这条提示“旁边应该配一个 CVE 编号”;也有评论提到 VSCode 近期已会在连接远程文件夹时询问是否信任作者。JetBrains 的远程开发同样会在远端装服务端——HN 评论对此是否“同样问题”有分歧,本文不下定论。

issue #6608 页面

实用落点

三条照做:① 只连可信主机——Remote SSH 不是沙箱;② 真正的隔离用 VM/容器(注意容器内再用 Remote 仍有同一条出路);③ 不信任的项目先丢进一次性 VM 或云主机里跑,删掉即销毁——楼主的“删服务器就没事”思路只对了一半:服务器能删,反向通道通向的本地 Mac 删不掉。

判断

两点校准:① “设计使然”与“可以更透明”并不矛盾——机制必要,但安全模型藏在扩展提示与四年未关的 issue 里,普通用户的预期(“远程=隔离”)与现实(“远程=双向通道”)之间差着一页文档;② 与第四十九批“别再问密码入库”同属“开发工具的信任边界”题材但机制不同:那篇是密钥写进文件被提交,这篇是通道本身双向——两篇合起来读,结论一致:开发工具给的便利边界,就是你安全的边界。

参考来源

相关文章

分享: