.net 仅在找到环境变量时加载不受信任的Visual Studio扩展

.net 仅在找到环境变量时加载不受信任的Visual Studio扩展,.net,visual-studio,security,visual-studio-extensions,vsix,.net,Visual Studio,Security,Visual Studio Extensions,Vsix,场景:锁定(即非管理员用户不可修改)Visual Studio 2013(可以是从Shell到Ultimate的任何版本)安装应有条件地加载不受信任(所有用户可写)VS扩展(PTV) VS2013构建在.NET 4.5.1之上,具有相应的devenv.exe.config和安全模型。PTV扩展主要是C#.NET DLL 我的初步想法-任何关于如何实施/是否可行/潜在问题的意见都值得赞赏: 仅当Visual Studio发现设置了特定环境变量时才加载不受信任的扩展 理想情况下,检查应该是“轻量

场景:锁定(即非管理员用户不可修改)Visual Studio 2013(可以是从Shell到Ultimate的任何版本)安装应有条件地加载不受信任(所有用户可写)VS扩展(PTV)

VS2013构建在.NET 4.5.1之上,具有相应的devenv.exe.config和安全模型。PTV扩展主要是C#.NET DLL

我的初步想法-任何关于如何实施/是否可行/潜在问题的意见都值得赞赏:

  • 仅当Visual Studio发现设置了特定环境变量时才加载不受信任的扩展

    • 理想情况下,检查应该是“轻量级”的,例如某种devenv.exe.config条件

    • 如果不能做到这一点,可能需要某种方式将受信任/正在检查的VSIX“链接”到不受信任的扩展

建议加载的扩展中止sans变量没有帮助-关键是该扩展不可信

(在注销/登录过程中,任何其他不持久的易于控制的环境标志都是同样可以接受的-例如,我可以寻找一个只在不受信任的情况下运行的流程-无论如何看起来都很难)

对于好奇的人:

  • 如果设置了变量,Visual Studio无论如何都是以不安全的方式启动的(通过可写的cmd.exe脚本),因此加载不安全的扩展不会带来额外的伤害-只是试图保护那些甚至不属于不受信任的“生态系统”(可以这么说)的人,但使用Visual Studio相同的物理机器

“VS2013构建在.NET 4.5.1之上”-如果VS SDK(特别是项目系统)值得借鉴的话,那么VS2013 shell在很大程度上仍然是原生c/c++COM。
环境变量
是安全的明智选择吗?普通用户可以设置them@MickyDuncan:我们系统上的一个用户不能影响稍后登录的用户的环境,因此它们是足够的。我们并不是试图阻止另一个用户在确定的情况下加载不受信任的可执行文件,只是为了防止他们默认基于早期用户的篡改加载该文件。