使用Visual Studio 2022提高开发人员安全性

鲁本·里奥斯

软件开发人员越来越成为恶意软件的目标。最近的事件包括诺贝尔奖,章鱼扫描仪、和。为了降低在面对此类攻击时采用开源库的风险,开发人员需要一个工具链来帮助他们评估不受信任的内容。

在Visual Studio 2022中,我们一直专注于开发人员和团队的生产力。关键是IDE如何帮助开发人员评估代码的信任级别。最近引入的Visual Studio代码工作区信任,今天我们将讨论VisualStudio2022如何重新设计其信任设置功能,从VisualStudio 2022预览版3开始。

新的“信任设置”功能旨在提高对处理不熟悉代码的风险的认识,并有助于防范恶意参与者,这些恶意参与者的目标场景从打开内容(例如,存储库、解决方案、项目和/或文件)到使用Visual Studio构建和运行应用程序。

虽然您将从这些开箱即用的安全改进中受益,但我们已将为组织提供工具作为优先事项,以便根据其需求集中管理体验。

沿着记忆之路旅行

为了提供VisualStudioIDE丰富的功能体验,项目系统首先需要评估要打开的内容。此过程–基于设计时生成–帮助我们识别项目结构及其依赖关系,对于我们提供的许多优秀功能(如代码导航和智能感知)来说,这是必不可少的。

然而,从威胁评估的角度来看,构建代码等同于执行。这意味着恶意参与者可能会创建一个场景,其中简单地 开放VisualStudio中的内容可能成为危害您或您公司的攻击工具。

回到VisualStudio2002,我们引入了内容信任提示符。当您试图从以前不受信任的位置打开项目时,警告对话框会让您知道并提及打开不受信任代码的含义。

图形用户界面、文本、应用程序描述自动生成

在Visual Studio 2015中,我们将信任范围扩展到项目范围外的项目,并利用“网络标记”属性作为这些项目的信任指示器。虽然当时这是一个很好的决定,但“网络标记”属性的不一致使用给依赖它的设计带来了问题。

随着开源软件的广泛采用,大多数开发人员获取和使用项目样本的方式发生了变化。虽然这使我们能够创造全新的体验,但也带来了新的安全考虑。

使用Visual Studio 2022,我们希望帮助您安全地浏览和编辑代码,无论源代码或作者是谁。为此,我们彻底检查了“信任设置”功能,并将在尝试打开以前未定义为受信任的内容(例如,解决方案、项目、文件或文件夹)时提供额外的安全层。我们的新功能包括两个主要组件:受信任的位置&限制模式.

受信任的位置

对于Visual Studio 2022预览版3,您必须手动启用“受信任位置”功能。启用后,Visual Studio将检测您是否试图打开不受信任的内容,并显示一个新对话框,警告您安全隐患:

自动生成的计算机描述屏幕截图

启用该功能后,在您或您的组织(通过组策略)将其添加到“受信任位置”列表之前,在Visual Studio 2022中打开的所有内容都将被视为不可信。您可以直接从信任对话框或信任设置对话框信任文件夹位置、git存储库或git存储仓库所有者:

安全性和可用性经常不一致。每个开发人员对这种权衡都有不同的看法。因此,我们提供了多个工作流优化,以减少与信任相关的提示数量,从而帮助最大限度地减少对工作流的不必要干扰。

例如,当您打开存储库时,信任对话框将允许您在存储库或存储库所有者级别进行信任。这意味着,如果您完全信任存储库的所有者(例如,由受信任的同事或您的组织开发的存储库),那么您可以选择该选项,并且在从该所有者打开存储库时不再收到提示。作为Visual Studio登录体验的一个好处,存储库设置将随您的帐户漫游,有助于简化您的体验,无论您在何处使用Visual Studio。

我们对这些新功能感到兴奋,并正在为在下一个预览中默认启用它们做最后的润色。同时,您可以通过工具>选项>信任设置并选中“在打开内容之前需要信任决策”选项:

图形用户界面、文本、应用程序描述自动生成

受限模式

对源代码做出信任决策很难,并且经常需要手动检查代码。为了在这种情况下提供帮助,我们引入了一种VisualStudio模式来浏览和编辑不受信任的代码。

图形用户界面,应用程序描述自动生成

虽然此模式不包括需要设计时构建的功能(例如,代码分析器、可视化设计器等),但它将允许您安全地打开和检查不受信任的代码(例如,无需承担远程代码执行的风险),并帮助您做出明智的决定,以信任内容并实现完整的visual Studio体验。

虽然限制模式在VisualStudio2022预览中尚不可用,但它很快就会出现,我们将很快分享更多信息。

企业管理

我们优先考虑通过Windows组策略功能为组织提供集中管理其体验的方法。例如,组织可以决定将Visual Studio的使用限制为仅使用预先批准的受信任存储库列表,并禁止信任和打开这些边界以外的内容。

图形用户界面,应用程序描述自动生成

此功能已在Visual Studio 2022预览版3中提供,我们将在以后的博客文章中详细介绍。

总结:

我们对这些新功能感到兴奋,迫不及待地想让您试用!

让我们知道您对体验的看法,您希望看到支持哪些新功能,以及我们如何进一步改进以更好地适应您的工作流程!通过发送反馈给我们开发者社区门户,或通过帮助>发送反馈Visual Studio中的功能。

9条评论

讨论结束。登录以编辑/删除现有评论。

  • 马克斯·穆斯特穆勒 0

    你们有一个漂亮的Windows沙盒。为什么不在内部运行它,而不是显示对话框警告?对话框警告通常会在一段时间后开始困扰用户。或者它打破了东西,人们点击“是的,我接受一切”。您可以在网页上的cookie横幅或Windows中的UAC对话框中看到这一点。这就是为什么Windows Defender在发现不可信的内容时不提示对话框的原因。

    更好的尝试是让它工作,并在后台默默保护它。如果它允许我们调试代码并使用VS中的所有内容,但所有代码都是在沙盒中运行的,那么它很有可能发挥作用。

    • 鲁本·里奥斯Microsoft员工 0

      嗨,Max!

      感谢您的反馈!我同意您的评估,即在沙箱中运行完整的Visual Studio体验有很多优势。

      虽然我在文章中没有提到,但我们实际上正在探索在某些沙盒/隔离环境中运行VisualStudio的可能性。尽管如此,我们还没有任何时间表或更多信息可供分享。

      快乐编码!

  • 马丁·索尔斯 0

    我想知道的不仅仅是源代码。我喜欢nuget,喜欢将所有这些强大的功能引入我的项目中。我想快速检查一下二进制文件正在访问什么。也就是说,当工具或实用程序真的没有任何业务做这件事时,看到一些触及IO名称空间并包含打开文件调用的内容会给我带来一个标记。这不仅仅是看总的依赖性。它可以深入到单个类和方法调用。我没有时间搜索库中的每个方法调用。

    我不记得上次需要读写注册表是什么时候了。如果我有一个库想要调用这些API,我会怀疑。特别是当库是普通的东西时,比如解析命令行参数。扫描这些DLL以查找可能的安全问题的工具将非常有用。我看到了试图定义我认为安全问题可能不同于其他人或组织的问题。

    • 鲁本·里奥斯Microsoft员工 0

      嗨,马丁!

      完全同意您的评估!

      虽然我还没有太多细节可以分享,但我们一直在讨论如何让用户知道NuGet包是否存在漏洞。虽然这可能涵盖了您正在讨论的所有内容,但它只是我们正在考虑扩大和改进空间的一些事项的一个示例。

  • 保罗·平托 0

    虽然这些改进非常受欢迎,但为什么VisualStudio是唯一的IDE,而它的工作负载仍然需要以管理员身份运行整个IDE?

    除非调试系统服务,否则我从来没有像这样的高级用户那样运行过任何基于UNIX的IDE或竞争IDE。

    • 鲁本·里奥斯Microsoft员工 0

      你好,保罗,谢谢你的反馈!虽然我不知道为什么会做出这个决定,但我鼓励您创建一个建议单,其中包含导致这种行为的特定工作负载或特性。

    • 拉尔夫·埃勒特 0

      使用IIS时,您可以快速绑定到某些操作的管理员权限。

      然后使用。NET Core或更新版本我从未被强制使用管理员权限,只有少数例外(例如,注册Windows服务需要管理员权限)。

  • 文森特·索恩 0

    虽然我同意相关的安全问题,但我看不出VS在这方面有什么帮助。不受信任的来源?没有代码分析?嗯……听起来不太令人印象深刻。似乎你开始了一些“保护功能”,却不知道要实现什么。

    还有理论问题:你为谁做这个“保护”?企业项目——几乎不使用“可疑库”。爱好项目——它们不值得担心。看起来你是“为了保护而保护”——只是为了让你雇佣的所有人都忙碌起来。
    如果您关闭嵌入到我的代码中的任何遥测,效果会更好。虽然VS代码中的遥测是您的事,但编译到我的C#程序中的遥测完全违反了安全性!!停下,不要干涉我们的代码——这是安全问题!

  • 希特斯·戴维 0

    “使用Visual Studio 2022提高开发人员的安全性”——将近22年了,自DotNet 1.0版和VS2002版以来,MS VS团队做了所有事情,但没有保护开发人员/公司的知识产权。

    我们的应用程序源代码不是开源的,没有任何选项可以保护我们的应用源代码不被反编译。使用第三方工具来实现这一点很昂贵,而且还不是完全证明。

    为什么不投入宝贵的时间、资源和精力来保护源代码不被反编译。我想要的只是一个简单的项目级勾号选项“Protech app from decompiling”,剩下的工作在程序集编译为发布模式时由VS完成。

    我仍在维护一些遗留的VB6应用程序,它们比编译的DotNet应用程序安全得多。我想要一些VS固有的坚固的东西,以防止反编译或探索程序集中的源代码。

    是否允许对WinOS和Office应用程序文件进行反编译?答案是NO。
    因此,pl可以帮助您的平台开发人员在默认情况下保护他们的应用程序!

反馈usabilla图标