我创建了一个测试NuGet包,该包指定了对jQuery 1.4.2的依赖。当XRay上传到我的Artifactory NuGet服务器时,可以正确检测jQuery上的安全性问题。但是,当我上传将jQuery 1.4.2列为依赖项的测试NuGet程序包时,XRay不会将我的程序包标记为易受攻击。
1)测试了Artifactory服务器中的jQuery 1.4.2 Nuget程序包是否被正确检测为易受攻击。
2)向我的测试包中添加了一个依赖关系,该依赖关系列出了jQuery 1.4.2。 (我怀疑是区分大小写的问题,因此我也尝试使用小写的依赖项作为“ jquery”。)
3)尝试了除jQuery之外的其他已知易受攻击的程序包
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>RogerCruz.VulnerabilitiesGalore</id>
<title>VulnerabilitiesGalore</title>
<version>1.0.4.0</version>
<owners>Roger Cruz</owners>
<authors>Roger Cruz</authors>
<releaseNotes>A package that depends on known vulnerable packages. Use this to test vulnerability scanners.</releaseNotes>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Test package with known vulnerabilities</description>
<copyright>Copyright Roger Cruz</copyright>
<dependencies>
<dependency id="jQuery" version="[1.4.2]"/>
</dependencies>
</metadata>
<files>
</files>
</package>
这些是我用来创建我的测试NuGet软件包并将其推送到Artifactory + XRay云试用实例的命令。
nuget.exe pack VulnerabilitiesGalore.nuspec
nuget push .\RogerCruz.VulnerabilitiesGalore.1.0.4.nupkg -Source Trial
Artifactory报告我的测试程序包具有一个依赖项。浏览包时,您可以看到以下属性。
nuget.dependency jQuery:[1.4.2]:
在我所有的测试尝试中,XRay都没有检测到我的测试包(RogerCruz.VulnerabilitiesGalore)易受攻击,尽管对jQuery 1.4.2有特定的依赖关系。
我的期望是,由于以下语句,它应该已经检测到它:
“对NuGet包的所有层进行深度递归扫描 Xray递归地剥离NuGet软件包的不同层及其依赖项,以确保对软件中包含的每个软件工件都进行了扫描,以查找问题和漏洞。 “
答案 0 :(得分:5)
软件包RogerCruz.VulnerabilitiesGalore
中不包含jQuery:1.4.2
。它与直接运行时相关性相关,如.nuspec描述符文件中所示。
Deep Recursive Scan
表示物理上在另一个程序包中的程序包的关系。
例如:如果RogerCruz.VulnerabilitiesGalore
包装中包含jQuery:1.4.2
,那么JFrog Xray会将其检测为易受攻击,并通过逐个包装打开包装(例如剥洋葱)来递归扫描。
上述场景中的一个适当的用例是自行构建RogerCruz.VulnerabilitiesGalore
或将其用作另一个项目的依赖项。在构建时,将直接从jQuery:1.4.2
中解析出直接依赖项remote repository
,JFrog Xray将能够对其进行扫描。
为了实现对NuGet项目及其传递依赖项的完整扫描,我建议使用JFrog CLI
JFrog Xray将知道如何分析它产生的构建信息,扫描项目及其依赖项(包括可传递性)