Visual Studio Code中的扩展程序有多安全?

24

Visual Studio Code 的扩展程序有多安全?

扩展程序是否可能引入恶意软件?

安装任何扩展程序都是安全的吗?

4个回答

19

是的,它们可能包含恶意软件。当您下载并运行扩展时,您正在信任它几乎可以使用您的用户权限做任何想做的事情。

VS Code没有实现沙盒(像浏览器一样),代码受限制较少。

尽管如此,恶意扩展很可能会很快被发现。由于这些文件已签名,第三方攻击者无法轻松修改现有的扩展或发布虚假扩展,他们必须先破坏真正的开发者。此外,许多扩展是开源的(顺便说一下,这不是确保发布版本来自公共源代码的保证,但是再次,检查很容易,因为扩展只是zip文件)。

所以简而言之:扩展理论上可能是恶意的,但特别是在众所周知的扩展的情况下,您获得恶意版本的可能性在其他人发现并删除它之前可能非常低。另一方面,许多人使用的扩展程序可能成为复杂攻击者的目标,因为安全控制有时可能比使用这些扩展程序的公司更加宽松。

总之:TL;DR:只有您可以确定是否愿意接受风险,这种风险不是很高,但也不可忽略,特别是对于得到社区审核较少的小众扩展程序。


1
展示VS Code对用户安全的疏忽。 - Mohammed Shareef C
6
我可以请求关于“由于这些文件已签名...”的引用吗?该问题表明,Visual Studio Code扩展管理器不支持签名扩展。 - DharmaTurtle

2
根据微软的说法:
Marketplace会对每个发布的扩展包进行病毒扫描,以确保其安全性。对于每个新的扩展和每个扩展的更新,都会进行病毒扫描。在扫描结果清楚之前,扩展将不会在Marketplace上发布供公众使用。

https://code.visualstudio.com/docs/editor/extension-marketplace#_can-i-trust-extensions-from-the-marketplace

然而,成功的病毒扫描并不能保证代码中没有安全漏洞(无论是无知还是恶意),它只是验证没有发现已知病毒。此外,正如本文中的研究所示,完全有可能非常接近地冒充合法的扩展:https://blog.aquasec.com/can-you-trust-your-vscode-extensions#:~:text=The%20Dangers%20of%20VSCode%20Extensions&text=Some%20merely%20change%20the%20theme,ransomwares%2C%20wipers%2C%20and%20more
简而言之,确保在安装任何扩展之前仔细审查是您的责任。个人而言,我喜欢在下载任何扩展之前查看下载次数以及创建者。下载次数较多以及可靠的作者(如microsoft.com)是扩展安全性的良好指标。
P.S.:蓝色的验证勾号并不意味着扩展已经通过验证;它只是验证发布者拥有特定的域名,而这个域名可以是任何一个(请参考上面的aquasec文章)。

0

有(至少)两种方式,糟糕的软件可以通过扩展对您/您的计算机进行恶意操作:

非恶意扩展,恶意工作区

非恶意扩展可以被恶意工作区利用/用作攻击向量。在某种程度上,VS Code内置的工作区信任机制可以保护您免受此类攻击。您可以在https://code.visualstudio.com/docs/editor/workspace-trust#_extensions中详细了解此机制。简而言之,当您首次打开工作区时,VS Code会询问您是否信任该工作区。如果您选择不信任,VS Code将以“受限模式”打开工作区,在该模式下,未明确选择在该模式下可运行的扩展将被禁用。扩展还可以配置自己在受限模式下强制禁用,或者在受限模式下仅具有有限功能(请注意,用户还可以手动覆盖扩展选择(参见extensions.supportUntrustedWorkspaces设置))。

所有这些都取决于所述扩展是否为非恶意。

恶意扩展

是的,扩展可以是恶意的。在同一工作区信任文档中,还指出:

注意:Workspace Trust无法阻止恶意扩展执行代码并忽略受限模式。您应仅安装和运行来自您信任的知名发布者的扩展。
公平地说,对于您在计算机上安装的任何类型的程序,并且不在某种沙盒环境中运行的情况,都适用同样的一般智慧。例如,浏览器(这是一个好时机指出,如果您在浏览器中访问/使用VS Code,例如在github.dev等网站上,则浏览器的沙盒将作为保护您计算机上其余部分免受作为页面一部分运行的任何恶意程序的层)。
VS Code本身确实有一个沙盒(Electron Sandbox),您可以在https://code.visualstudio.com/blogs/2022/11/28/vscode-sandbox中了解更多信息。
长期以来,Electron允许在HTML和JavaScript中直接使用Node.js API。[...] 为了提高安全性并更符合Web模型,为渲染器进程启用沙盒模式可以降低其功能。虽然仍然允许使用HTML和JavaScript,但不允许使用Node.js。需要访问系统资源的渲染器进程中的组件必须委托给另一个未被沙盒化的进程。
Electron沙盒的使用在1.79版本中推出,您可以在https://code.visualstudio.com/updates/v1_79#_electron-sandbox-enabled-for-all-users中了解更多信息。然而,扩展主机不在该沙盒内。然而,Node.js故意在扩展主机中仍然得到完全支持,它不是渲染器进程的一部分。
如果您有理由认为市场上的某个扩展是恶意的,应该怎么办?
去浏览器扩展市场,点击侧边栏的“举报滥用”按钮,并按照滥用举报流程进行操作。

-4
这不是真的对,我知道如果你从一个安全的网站下载,也就是微软官网,基本上是安全的,除非你的电脑已经被黑客入侵,这样才会危及你的网站并使下载变成恶意软件。我知道这是因为我下载了很多东西,但从未收到过警报或勒索软件。所以,除非你的电脑已经被黑客入侵,否则你基本上是安全的。所以大家要保持安全!

1
这个回答中有太多技术错误,我甚至不知道从何处开始指出。几乎这篇帖子中的每个句子都充斥着危险且毫无根据的猜测。 - undefined
我知道你在肯德基吃东西不会得食物中毒,因为我多次在肯德基吃过东西,从来没有吃完后就呕吐过。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接