从API获取NuGet包漏洞信息



我们一直在寻找扫描代码中有漏洞或已弃用的NuGet包的方法。

我们已经研究过使用dotnet list package --vulnerable,但这似乎不适合我们的Xamarin项目。它抛出与缺少项目导入相关的错误,我们还没有找到一种方法来让工具忽略这些错误。

我认为问题与此有关:https://github.com/NuGet/Home/issues/9035

是否有可能通过调用NuGet api来复制CLI工具正在做的事情?

我不得不为我们的一个使用包的旧项目检查。这是我写的一个powershell函数,它对我的情况很有帮助:

function Check-Package()
{
param([string]$id ,[string]$version)
$packages = Invoke-RestMethod "https://azuresearch-usnc.nuget.org/query?q=$id"
$packageDetailsUrl = $packages.data | ? { $_.id -eq $id} | %{ $_.versions } |  ?{$_.version -eq $version } | %{ $_."@id"}
if($packageDetailsUrl)
{
$packageDetails = Invoke-RestMethod $packageDetailsUrl

$packageSuperDetails = Invoke-RestMethod $packageDetails.catalogEntry
if($packageSuperDetails.vulnerabilities -or $packageSuperDetails.deprecation)
{
if($packageSuperDetails.deprecation)
{
$deprectaion = "is deprecated"
}
if($packageSuperDetails.vulnerabilities)
{
$vulnerability = "has vulnerabilities"
}
Write-Host $id $version $deprectaion $vulnerability
}
}
else
{
Write-Host $id $version no longer listed on nuget.org
}
}

我是这样用的:

nuget list -source .packages | %{Check-Package -id $_.Split(" ")[0] -version $_.Split(" ")[1]

最新更新