NuGet官方软件包来源:我应该担心软件包的安全吗?

NuGet官方软件包来源:我应该担心软件包的安全吗?,nuget,nuget-package,Nuget,Nuget Package,根据: 没有用于添加包的中央审批流程。当你上传一个软件包到NuGet软件包库(目前还不存在)时,你不必等待几天或几周等待别人审查和批准。相反,当涉及到feed时,我们将依靠社区来调节和监督自己。这就是CodePlex.com和RubyGems.org的工作原理 这让我感到不安。在下载Firefox插件之前,我知道它不应该包含恶意代码,因为AFAIK addons.mozilla.org上的所有插件都是由mozilla审查的。在我从codeplex.com或code.google.com下载开源项

根据:

没有用于添加包的中央审批流程。当你上传一个软件包到NuGet软件包库(目前还不存在)时,你不必等待几天或几周等待别人审查和批准。相反,当涉及到feed时,我们将依靠社区来调节和监督自己。这就是CodePlex.com和RubyGems.org的工作原理

这让我感到不安。在下载Firefox插件之前,我知道它不应该包含恶意代码,因为AFAIK addons.mozilla.org上的所有插件都是由mozilla审查的。在我从codeplex.com或code.google.com下载开源项目之前,我知道它应该是安全的,因为任何人都可以检查它的源代码。我还可以使用WOT(信任网)检查其他人对项目的看法

但在我从NuGet官方软件包源下载软件包之前。比如说。我不知道这个包裹是谁做的,也不知道里面装的是什么。在我看来,任何人都可以把任何东西打包成一个包,给它取任何他们想要的名字(比如“MicrosoftPrism”,只要不取名字),然后上传到官方的包源


我是否应该担心NuGet官方软件包源上软件包的安全性?

您的不安应该适用于您从任何来源获得的软件:

  • 从Sourceforge.net、Codeplex.com等下载的二进制文件可能包含恶意代码(可能是原始提交者植入的,也可能是黑客插入网站的),在有人(你?)被咬并发出警报之前,这些代码可能会被忽略
  • 即使您从以前某个网站下载的源代码编译自己的二进制文件,它仍然可能执行恶意行为,除非您仔细阅读所有源代码并了解它的功能
  • 即使是从“应用商店”(如苹果iTunes、Android Market)下载的软件也可能包含恶意代码;其中一些审查过程是部分自动化的,但仍然不是绝对正确的,同样发生的人工审查也肯定不是绝对正确的
  • 过去有过盒装软件包含恶意软件的例子 也许您对软件(以二进制文件或源代码的形式交付)有一个连续的信任,而Nuget Package Gallery(以及CodePlex.com和RubyGems等)可能位于连续的信任度较低的一端

    对于这类问题有一些潜在的解决方案,如可信计算平台联盟提出的解决方案,但是这些解决方案对我们目前在开发软件和共享我们认为合适的软件时所享有的自由有着巨大的限制,无需花费巨资从中央当局获得许可证或加密密钥


    我相信,社区将提出一些惯例和机制,以确保Nuget成为.Net开发人员值得信赖的软件库来源,同时保持其灵活性,不需要正式的审查过程。但是,最终责任在于您作为用户,确保您的IT安全不受损害,并且您采取的预防措施是您正在编写的软件环境中IT安全关键性的一项功能(例如,家庭项目;可能是低成本的;银行、医疗、过程控制项目;可能是高成本的!)NuGet无法管理信任。即使是这样,你仍然需要担心相信NuGet信任的东西

    您应该绝对关注NuGet包中代码的安全性。您应该关心您不熟悉的任何代码的安全性

    通过NuGet和NPM,我个人和专业地使用软件包的方法如下:

  • 完全锁定语义版本号。明确指定主要、次要和修补程序编号。不要假设新的更新是安全的,或者它们的语义版本是准确的
  • 仅在生产中使用众所周知的当前版本
  • 在具有有限访问权限的测试环境中尝试任何内容,例如,在非本地管理员的帐户下,没有对高度特权凭据的本地访问权限,没有对授予测试机器IP的特权资源的访问权限
  • 检查供应商。例如,如果该软件包由Amazon发布,并且是AWS SDK,那么如果您信任Amazon,那么该软件包可能是安全的
  • 例如,我现在唯一信任的在生产环境中添加它们的包是Newtonsoft.Json和Nhibernate。对于任何人都可以发布的新开源软件包,我最担心的是,它们实际上是按照我在购买之前所描述的那样工作的,并且在一些不符合我需要的东西上浪费时间

    我觉得如果您对软件包做了足够的研究,以确定它是否适合于生产环境,那么您可能已经对软件及其社区有了足够的了解,以确定您是否可以相信它没有做任何恶意的事情。研究软件和它的社区对我来说真的比NuGet的批准印章更重要,NuGet的批准印章由一个我们都祈祷是完美的中央权威决定