如何扫描NuGet程序包中的安全漏洞

2021-03-03 22:14:02

开源无处不在。它存在于许多专有代码库和社区项目中。对于组织和个人而言,今天的问题不是您是否正在使用开放源代码,而是您正在使用什么开放源代码以及使用了多少开放源代码。

如果您不知道软件供应链中的内容,则其中一个依赖项中的上游漏洞可能是致命的,使您和您的客户容易受到潜在的威胁。

今天,我们宣布NuGet的漏洞功能可公开使用,您可以使用它们来确保您的项目没有漏洞,如果不能,请采取措施保护软件供应链。

NuGet直接从集中的GitHub咨询数据库获取其CVE / GHSA信息。该数据库提供了两个主要漏洞列表:

CVE是常见漏洞和披露。这是公开披露的计算机安全漏洞的列表。

GHSA是GitHub安全咨询。 GitHub是CVE编号颁发机构(CNA),并被授权分配CVE标识号。

现在,您可以直接在NuGet.org上查看任何已知的CVE / GHSA。 NuGet.org将为您显示一条横幅广告,告诉您已检测到具有特定严重性的漏洞,以及如何解决该漏洞。

对于软件包作者,您将看到一条横幅,告诉您特定的软件包版本检测到漏洞。您将能够查看建议,建议的严重性以及应该采取的保护NuGet生态系统的任何措施。

此外,您还将看到列出的软件包的警告图标,以通知您已检测到漏洞。

现在,您可以在项目中的依赖项中列出所有已知的漏洞&;使用dotnet list package --vulnerable命令的解决方案。

您将在顶级程序包中看到任何漏洞。您将能够了解已解决的版本,建议的严重性以及可供您查看的建议的链接。

如果您有兴趣查看可传递程序包中的漏洞,则可以使用--include-transitive参数来查看这些漏洞。

若要扫描项目中的漏洞,请下载.NET SDK 5.0.200,Visual Studio 2019 16.9或Visual Studio 2019 for Mac 8.8(包括.NET SDK)。

注意:上面示例中列出的软件包已被打补丁或标记为已弃用&未适当列出。

您已经了解了NuGet提供的新工具,可以帮助您扫描NuGet软件包中的安全漏洞。这些工具应该可以帮助您保护软件供应链并立即采取行动。

尽管这是向各地的.NET开发人员提供更安全的软件包生态系统的开始,但我们有许多激动人心的计划可帮助您审核和评估。在不久的将来修复您的依赖关系。

如果您对今天可以用来保护软件供应链的最佳做法感兴趣,请查看我们有关安全软件供应链最佳做法的文档。

最近,我们的团队针对NuGet.org启动了我们的第一个季度用户调查。在500多个回复中,我们希望花一些时间与您分享我们在最近几个月中学到的知识。

当前的NuGet.org存储库签名证书将在2021年3月15日更新。如果您验证软件包是由NuGet.org签名的存储库,则在从NuGet.org安装软件包时,您将需要采取措施避免中断。