Cor*_*rey 10 visual-studio visual-studio-2013
打开最近可能下载的项目时,Visual Studio 2013会短暂警告您只能打开来自可靠来源的项目.开放项目有哪些风险?在编译之前,项目是否可以对您的系统造成任何伤害?可能造成的损害是什么?在从"不值得信赖"的资源实际开放项目之前,您是否应该注意哪些指标?(不是我能想到的)
Jay*_*ris 16
Visual Studio中有许多攻击向量.所有这些都是设计的.我们的开发人员希望在构建过程中完全控制我们的系统.不幸的是,当我们说"我想在构建时删除缓存目录的内容"时,这也意味着恶意项目文件几乎可以从任何地方删除任何内容.或者更糟.妥协是"嘿.我们已经把钥匙交给了王国,但是我们不认识这个项目.你确定要打开这个吗?如果它做了一些愚蠢的事情我们就不负责"警告信息你提到过.
现在考虑许多开发人员以管理员身份运行Visual Studio.
以下是一些攻击媒介:
构建前和构建后事件
在最简单的形式中,不受信任的项目可以执行可以删除文件的预构建事件.或者更糟.几乎任何事都可以在Build事件中执行.这是Compile上发生的101件事.
Project Open
Visual Studio项目文件的执行只不过是大型MSBuild配置.当您打开项目时,Visual Studio会执行一些MSBuild目标,所有这些目标都支持工具.这些目标包括Compile,ResolveAssemblyReferences,ResolveCOMReferences,GetFrameworkPaths和CopyRunEnvironmentFiles.如果存在任何这些目标,则还会执行其中的任务.删除文件,或者更糟.
请参阅:"设计时执行",网址为:http://msdn.microsoft.com/en-us/library/ms171468.aspx
IntelliSense上面提到的工具的
一部分包括IntelliSense,它在MSBuild中执行任务; 必须执行CSC/VBC才能获得所有IntelliSense功能.由于IntelliSense的性质,此任务会在您工作时重复执行,而不是仅在打开时运行一次的上述机会.Compile
请参阅:"Design-Time IntelliSense",网址为:http://msdn.microsoft.com/en-us/library/ms171468.aspx
隐藏在MSBuild中的其他地方有一大堆
其他常规MSBuild目标,您将在一天中手动执行,包括构建,重建,测试和清理.是的,请记住,即使clean是构建目标,Clean也可以删除不仅仅是旧\bin目录.
NuGet
恶意项目也可能通过NuGet公开系统.尽管Package Restore不是问题,但packages.config可以指定不同的Repository Source.然后,当您安装新的软件包时,例如install-package jquery,NuGet将从不受信任的备用软件包中检索jQuery软件包,而不是从nuget.org.这个恶意的jQuery包可以包含其中的各种其他'Goodies',它们将作为包安装的一部分执行.
这不是NuGet的安全漏洞,因为"你"指定了一个备用包源; 这是设计的,例如拥有自己的内部包存储库的公司.
在一天结束时,你能做些什么呢?答案实际上是不打开来自不受信任来源的项目.项目的packages.config文件可以在打开之前进行分析,但最重要的是通过MSBuild.除非你非常擅长阅读MSBuild架构,否则我会明确指出.
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |