Visual Studio 现在包括一个包管理器,它可以从 Internet 下载和更新软件包。通用名称是“Nuget”
我遇到的问题是,任何人都可以通过欺骗 owner field来假装是其他人。这会在更新和验证每个补丁的真实性方面打开一大堆蠕虫。
这些是有效的担忧吗?(我错过了吗?)
我们可以实施哪些技术和程序控制来限制风险?
有什么方法可以安全地使用 Nuget?
Visual Studio 现在包括一个包管理器,它可以从 Internet 下载和更新软件包。通用名称是“Nuget”
我遇到的问题是,任何人都可以通过欺骗 owner field来假装是其他人。这会在更新和验证每个补丁的真实性方面打开一大堆蠕虫。
这些是有效的担忧吗?(我错过了吗?)
我们可以实施哪些技术和程序控制来限制风险?
有什么方法可以安全地使用 Nuget?
NuGet 目前不支持对包或 nuspec 文件进行代码签名,因此无法真正识别包的作者。这个问题是在 2010 年作为功能请求提出的,但没有引起太多关注,也没有实施。请参阅http://nuget.codeplex.com/workitem/79。
目前,一个已经存在的 NuGet 包只能通过最初上传它的同一帐户进行升级,但这并不能验证代码的实际作者,我相信这就是你所得到的。
在 NuGet 之外,程序集的代码签名仍然存在。基于此,我建议您理想情况下:
另一个问题可能是 NuGet 包可以附加 PowerShell 安装/卸载脚本,这些脚本在使用 NuGet 包命令行时会自动运行。NuGet 1.4+ 确实支持 PowerShell 脚本的代码签名,因此我建议将 PowerShell 执行策略留给 RemoteSigned。
或者不要使用 NuGet 并从官方版本下载 .msi/.exe 并验证文件上的签名。
由于从 CLR 到 3rd 方库的所有内容都将通过 ASP.NET vNext 中的 NuGet 分发,因此我相信 NuGet 团队已承诺在 Visual Studio 2015 发布时支持签名包。
见博客公告: http: //blog.nuget.org/20150203/package-signing.html
另外,请参阅签名规范:https ://github.com/aspnet/Signing/blob/dev/Spec.md