Compare commits
	
		
			5 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					878c25bf5a | ||
| 
						 | 
					e4728e3881 | ||
| 
						 | 
					61c39637f2 | ||
| 
						 | 
					f1c384812a | ||
| 
						 | 
					0fa09e1517 | 
@@ -90,7 +90,7 @@ NOW=$(shell date '+%Y-%m-%dT%H-%M-%S%z')
 | 
			
		||||
NOW_JSON_DIR := '${BASE_DIR}/$(NOW)'
 | 
			
		||||
ONE_SEC_AFTER=$(shell date -d '+1 second' '+%Y-%m-%dT%H-%M-%S%z')
 | 
			
		||||
ONE_SEC_AFTER_JSON_DIR := '${BASE_DIR}/$(ONE_SEC_AFTER)'
 | 
			
		||||
LIBS := 'bundler' 'dart' 'elixir' 'pip' 'pipenv' 'poetry' 'composer' 'npm-v1' 'npm-v2' 'npm-v3' 'yarn' 'pnpm' 'cargo' 'gomod' 'gosum' 'gobinary' 'jar' 'jar-wrong-name-log4j-core' 'war' 'pom' 'gradle' 'nuget-lock' 'nuget-config' 'dotnet-deps' 'dotnet-package-props' 'conan' 'swift-cocoapods' 'swift-swift' 'rust-binary'
 | 
			
		||||
LIBS := 'bundler' 'dart' 'elixir' 'pip' 'pipenv' 'poetry' 'composer' 'npm-v1' 'npm-v2' 'npm-v3' 'yarn' 'pnpm' 'cargo' 'gomod' 'gosum' 'gobinary' 'jar' 'jar-wrong-name-log4j-core' 'war' 'pom' 'gradle' 'nuget-lock' 'nuget-config' 'dotnet-deps' 'dotnet-package-props' 'conan-v1' 'conan-v2' 'swift-cocoapods' 'swift-swift' 'rust-binary'
 | 
			
		||||
 | 
			
		||||
diff:
 | 
			
		||||
	# git clone git@github.com:vulsio/vulsctl.git
 | 
			
		||||
 
 | 
			
		||||
@@ -198,6 +198,10 @@ var redisTrivy = []byte(`
 | 
			
		||||
          "CweIDs": [
 | 
			
		||||
            "CWE-347"
 | 
			
		||||
          ],
 | 
			
		||||
          "VendorSeverity": {
 | 
			
		||||
            "debian": 1,
 | 
			
		||||
            "nvd": 1
 | 
			
		||||
          },
 | 
			
		||||
          "CVSS": {
 | 
			
		||||
            "nvd": {
 | 
			
		||||
              "V2Vector": "AV:N/AC:M/Au:N/C:N/I:P/A:N",
 | 
			
		||||
@@ -241,7 +245,34 @@ var redisSR = &models.ScanResult{
 | 
			
		||||
					FixedIn:     "",
 | 
			
		||||
				}},
 | 
			
		||||
			CveContents: models.CveContents{
 | 
			
		||||
				"trivy": []models.CveContent{{
 | 
			
		||||
				"trivy:nvd": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:nvd",
 | 
			
		||||
						CveID:         "CVE-2011-3374",
 | 
			
		||||
						Title:         "",
 | 
			
		||||
						Summary:       "It was found that apt-key in apt, all versions, do not correctly validate gpg keys with the master keyring, leading to a potential man-in-the-middle attack.",
 | 
			
		||||
						Cvss3Severity: "LOW",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://access.redhat.com/security/cve/cve-2011-3374"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:nvd",
 | 
			
		||||
						CveID:       "CVE-2011-3374",
 | 
			
		||||
						Title:       "",
 | 
			
		||||
						Summary:     "It was found that apt-key in apt, all versions, do not correctly validate gpg keys with the master keyring, leading to a potential man-in-the-middle attack.",
 | 
			
		||||
						Cvss2Score:  4.3,
 | 
			
		||||
						Cvss2Vector: "AV:N/AC:M/Au:N/C:N/I:P/A:N",
 | 
			
		||||
						Cvss3Score:  3.7,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://access.redhat.com/security/cve/cve-2011-3374"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:debian": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:debian",
 | 
			
		||||
					CveID:         "CVE-2011-3374",
 | 
			
		||||
					Title:         "",
 | 
			
		||||
					Summary:       "It was found that apt-key in apt, all versions, do not correctly validate gpg keys with the master keyring, leading to a potential man-in-the-middle attack.",
 | 
			
		||||
					Cvss3Severity: "LOW",
 | 
			
		||||
@@ -358,6 +389,13 @@ var strutsTrivy = []byte(`
 | 
			
		||||
          "CweIDs": [
 | 
			
		||||
            "CWE-20"
 | 
			
		||||
          ],
 | 
			
		||||
          "VendorSeverity": {
 | 
			
		||||
            "ghsa": 3,
 | 
			
		||||
            "nvd": 3,
 | 
			
		||||
            "oracle-oval": 3,
 | 
			
		||||
            "redhat": 3,
 | 
			
		||||
            "ubuntu": 2
 | 
			
		||||
          },
 | 
			
		||||
          "CVSS": {
 | 
			
		||||
            "nvd": {
 | 
			
		||||
              "V2Vector": "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
@@ -387,6 +425,11 @@ var strutsTrivy = []byte(`
 | 
			
		||||
          "CweIDs": [
 | 
			
		||||
            "CWE-79"
 | 
			
		||||
          ],
 | 
			
		||||
          "VendorSeverity": {
 | 
			
		||||
            "ghsa": 2,
 | 
			
		||||
            "nvd": 2,
 | 
			
		||||
            "redhat": 2
 | 
			
		||||
          },
 | 
			
		||||
          "CVSS": {
 | 
			
		||||
            "nvd": {
 | 
			
		||||
              "V2Vector": "AV:N/AC:M/Au:N/C:N/I:P/A:N",
 | 
			
		||||
@@ -424,7 +467,9 @@ var strutsSR = &models.ScanResult{
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			CveContents: models.CveContents{
 | 
			
		||||
				"trivy": []models.CveContent{{
 | 
			
		||||
				"trivy:ghsa": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:ghsa",
 | 
			
		||||
					CveID:         "CVE-2014-0114",
 | 
			
		||||
					Title:         "Apache Struts 1: Class Loader manipulation via request parameters",
 | 
			
		||||
					Summary:       "Apache Commons BeanUtils, as distributed in lib/commons-beanutils-1.8.0.jar in Apache Struts 1.x through 1.3.10 and in other products requiring commons-beanutils through 1.9.2, does not suppress the class property, which allows remote attackers to \"manipulate\" the ClassLoader and execute arbitrary code via the class parameter, as demonstrated by the passing of this parameter to the getClass method of the ActionForm object in Struts 1.",
 | 
			
		||||
					Cvss3Severity: "HIGH",
 | 
			
		||||
@@ -432,6 +477,72 @@ var strutsSR = &models.ScanResult{
 | 
			
		||||
						{Source: "trivy", Link: "http://advisories.mageia.org/MGASA-2014-0219.html"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:nvd": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:nvd",
 | 
			
		||||
						CveID:         "CVE-2014-0114",
 | 
			
		||||
						Title:         "Apache Struts 1: Class Loader manipulation via request parameters",
 | 
			
		||||
						Summary:       "Apache Commons BeanUtils, as distributed in lib/commons-beanutils-1.8.0.jar in Apache Struts 1.x through 1.3.10 and in other products requiring commons-beanutils through 1.9.2, does not suppress the class property, which allows remote attackers to \"manipulate\" the ClassLoader and execute arbitrary code via the class parameter, as demonstrated by the passing of this parameter to the getClass method of the ActionForm object in Struts 1.",
 | 
			
		||||
						Cvss3Severity: "HIGH",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "http://advisories.mageia.org/MGASA-2014-0219.html"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:nvd",
 | 
			
		||||
						CveID:       "CVE-2014-0114",
 | 
			
		||||
						Title:       "Apache Struts 1: Class Loader manipulation via request parameters",
 | 
			
		||||
						Summary:     "Apache Commons BeanUtils, as distributed in lib/commons-beanutils-1.8.0.jar in Apache Struts 1.x through 1.3.10 and in other products requiring commons-beanutils through 1.9.2, does not suppress the class property, which allows remote attackers to \"manipulate\" the ClassLoader and execute arbitrary code via the class parameter, as demonstrated by the passing of this parameter to the getClass method of the ActionForm object in Struts 1.",
 | 
			
		||||
						Cvss2Score:  7.5,
 | 
			
		||||
						Cvss2Vector: "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "http://advisories.mageia.org/MGASA-2014-0219.html"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:oracle-oval": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:oracle-oval",
 | 
			
		||||
					CveID:         "CVE-2014-0114",
 | 
			
		||||
					Title:         "Apache Struts 1: Class Loader manipulation via request parameters",
 | 
			
		||||
					Summary:       "Apache Commons BeanUtils, as distributed in lib/commons-beanutils-1.8.0.jar in Apache Struts 1.x through 1.3.10 and in other products requiring commons-beanutils through 1.9.2, does not suppress the class property, which allows remote attackers to \"manipulate\" the ClassLoader and execute arbitrary code via the class parameter, as demonstrated by the passing of this parameter to the getClass method of the ActionForm object in Struts 1.",
 | 
			
		||||
					Cvss3Severity: "HIGH",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "http://advisories.mageia.org/MGASA-2014-0219.html"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:redhat": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:redhat",
 | 
			
		||||
						CveID:         "CVE-2014-0114",
 | 
			
		||||
						Title:         "Apache Struts 1: Class Loader manipulation via request parameters",
 | 
			
		||||
						Summary:       "Apache Commons BeanUtils, as distributed in lib/commons-beanutils-1.8.0.jar in Apache Struts 1.x through 1.3.10 and in other products requiring commons-beanutils through 1.9.2, does not suppress the class property, which allows remote attackers to \"manipulate\" the ClassLoader and execute arbitrary code via the class parameter, as demonstrated by the passing of this parameter to the getClass method of the ActionForm object in Struts 1.",
 | 
			
		||||
						Cvss3Severity: "HIGH",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "http://advisories.mageia.org/MGASA-2014-0219.html"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:redhat",
 | 
			
		||||
						CveID:       "CVE-2014-0114",
 | 
			
		||||
						Title:       "Apache Struts 1: Class Loader manipulation via request parameters",
 | 
			
		||||
						Summary:     "Apache Commons BeanUtils, as distributed in lib/commons-beanutils-1.8.0.jar in Apache Struts 1.x through 1.3.10 and in other products requiring commons-beanutils through 1.9.2, does not suppress the class property, which allows remote attackers to \"manipulate\" the ClassLoader and execute arbitrary code via the class parameter, as demonstrated by the passing of this parameter to the getClass method of the ActionForm object in Struts 1.",
 | 
			
		||||
						Cvss2Score:  7.5,
 | 
			
		||||
						Cvss2Vector: "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "http://advisories.mageia.org/MGASA-2014-0219.html"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:ubuntu": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:ubuntu",
 | 
			
		||||
					CveID:         "CVE-2014-0114",
 | 
			
		||||
					Title:         "Apache Struts 1: Class Loader manipulation via request parameters",
 | 
			
		||||
					Summary:       "Apache Commons BeanUtils, as distributed in lib/commons-beanutils-1.8.0.jar in Apache Struts 1.x through 1.3.10 and in other products requiring commons-beanutils through 1.9.2, does not suppress the class property, which allows remote attackers to \"manipulate\" the ClassLoader and execute arbitrary code via the class parameter, as demonstrated by the passing of this parameter to the getClass method of the ActionForm object in Struts 1.",
 | 
			
		||||
					Cvss3Severity: "MEDIUM",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "http://advisories.mageia.org/MGASA-2014-0219.html"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
			},
 | 
			
		||||
			LibraryFixedIns: models.LibraryFixedIns{
 | 
			
		||||
				models.LibraryFixedIn{
 | 
			
		||||
@@ -453,7 +564,9 @@ var strutsSR = &models.ScanResult{
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			CveContents: models.CveContents{
 | 
			
		||||
				"trivy": []models.CveContent{{
 | 
			
		||||
				"trivy:ghsa": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:ghsa",
 | 
			
		||||
					CveID:         "CVE-2012-1007",
 | 
			
		||||
					Title:         "struts: multiple XSS flaws",
 | 
			
		||||
					Summary:       "Multiple cross-site scripting (XSS) vulnerabilities in Apache Struts 1.3.10 allow remote attackers to inject arbitrary web script or HTML via (1) the name parameter to struts-examples/upload/upload-submit.do, or the message parameter to (2) struts-cookbook/processSimple.do or (3) struts-cookbook/processDyna.do.",
 | 
			
		||||
					Cvss3Severity: "MEDIUM",
 | 
			
		||||
@@ -461,6 +574,52 @@ var strutsSR = &models.ScanResult{
 | 
			
		||||
						{Source: "trivy", Link: "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-1007"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:nvd": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:nvd",
 | 
			
		||||
						CveID:         "CVE-2012-1007",
 | 
			
		||||
						Title:         "struts: multiple XSS flaws",
 | 
			
		||||
						Summary:       "Multiple cross-site scripting (XSS) vulnerabilities in Apache Struts 1.3.10 allow remote attackers to inject arbitrary web script or HTML via (1) the name parameter to struts-examples/upload/upload-submit.do, or the message parameter to (2) struts-cookbook/processSimple.do or (3) struts-cookbook/processDyna.do.",
 | 
			
		||||
						Cvss3Severity: "MEDIUM",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-1007"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:nvd",
 | 
			
		||||
						CveID:       "CVE-2012-1007",
 | 
			
		||||
						Title:       "struts: multiple XSS flaws",
 | 
			
		||||
						Summary:     "Multiple cross-site scripting (XSS) vulnerabilities in Apache Struts 1.3.10 allow remote attackers to inject arbitrary web script or HTML via (1) the name parameter to struts-examples/upload/upload-submit.do, or the message parameter to (2) struts-cookbook/processSimple.do or (3) struts-cookbook/processDyna.do.",
 | 
			
		||||
						Cvss2Score:  4.3,
 | 
			
		||||
						Cvss2Vector: "AV:N/AC:M/Au:N/C:N/I:P/A:N",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-1007"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:redhat": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:redhat",
 | 
			
		||||
						CveID:         "CVE-2012-1007",
 | 
			
		||||
						Title:         "struts: multiple XSS flaws",
 | 
			
		||||
						Summary:       "Multiple cross-site scripting (XSS) vulnerabilities in Apache Struts 1.3.10 allow remote attackers to inject arbitrary web script or HTML via (1) the name parameter to struts-examples/upload/upload-submit.do, or the message parameter to (2) struts-cookbook/processSimple.do or (3) struts-cookbook/processDyna.do.",
 | 
			
		||||
						Cvss3Severity: "MEDIUM",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-1007"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:redhat",
 | 
			
		||||
						CveID:       "CVE-2012-1007",
 | 
			
		||||
						Title:       "struts: multiple XSS flaws",
 | 
			
		||||
						Summary:     "Multiple cross-site scripting (XSS) vulnerabilities in Apache Struts 1.3.10 allow remote attackers to inject arbitrary web script or HTML via (1) the name parameter to struts-examples/upload/upload-submit.do, or the message parameter to (2) struts-cookbook/processSimple.do or (3) struts-cookbook/processDyna.do.",
 | 
			
		||||
						Cvss2Score:  4.3,
 | 
			
		||||
						Cvss2Vector: "AV:N/AC:M/Au:N/C:N/I:P/A:N",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-1007"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			LibraryFixedIns: models.LibraryFixedIns{
 | 
			
		||||
				models.LibraryFixedIn{
 | 
			
		||||
@@ -594,6 +753,16 @@ var osAndLibTrivy = []byte(`
 | 
			
		||||
          "CweIDs": [
 | 
			
		||||
            "CWE-416"
 | 
			
		||||
          ],
 | 
			
		||||
          "VendorSeverity": {
 | 
			
		||||
            "alma": 2,
 | 
			
		||||
            "cbl-mariner": 4,
 | 
			
		||||
            "nvd": 4,
 | 
			
		||||
            "oracle-oval": 2,
 | 
			
		||||
            "photon": 4,
 | 
			
		||||
            "redhat": 2,
 | 
			
		||||
            "rocky": 2,
 | 
			
		||||
            "ubuntu": 1
 | 
			
		||||
          },
 | 
			
		||||
          "CVSS": {
 | 
			
		||||
            "nvd": {
 | 
			
		||||
              "V2Vector": "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
@@ -652,7 +821,17 @@ var osAndLibTrivy = []byte(`
 | 
			
		||||
          "CweIDs": [
 | 
			
		||||
            "CWE-502"
 | 
			
		||||
          ],
 | 
			
		||||
          "VendorSeverity": {
 | 
			
		||||
            "ghsa": 4,
 | 
			
		||||
            "nvd": 4,
 | 
			
		||||
            "redhat": 3,
 | 
			
		||||
            "ruby-advisory-db": 4
 | 
			
		||||
          },
 | 
			
		||||
          "CVSS": {
 | 
			
		||||
            "ghsa": {
 | 
			
		||||
              "V3Vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
              "V3Score": 9.8
 | 
			
		||||
            },
 | 
			
		||||
            "nvd": {
 | 
			
		||||
              "V2Vector": "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
              "V3Vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
@@ -699,7 +878,19 @@ var osAndLibSR = &models.ScanResult{
 | 
			
		||||
					FixedIn:     "3.6.7-4+deb10u7",
 | 
			
		||||
				}},
 | 
			
		||||
			CveContents: models.CveContents{
 | 
			
		||||
				"trivy": []models.CveContent{{
 | 
			
		||||
				"trivy:alma": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:alma",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "MEDIUM",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:cbl-mariner": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:cbl-mariner",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "CRITICAL",
 | 
			
		||||
@@ -707,6 +898,94 @@ var osAndLibSR = &models.ScanResult{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:nvd": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:nvd",
 | 
			
		||||
						CveID:         "CVE-2021-20231",
 | 
			
		||||
						Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
						Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
						Cvss3Severity: "CRITICAL",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:nvd",
 | 
			
		||||
						CveID:       "CVE-2021-20231",
 | 
			
		||||
						Title:       "gnutls: Use after free in client key_share extension",
 | 
			
		||||
						Summary:     "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
						Cvss2Score:  7.5,
 | 
			
		||||
						Cvss2Vector: "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
						Cvss3Score:  9.8,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:oracle-oval": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:oracle-oval",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "MEDIUM",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:photon": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:photon",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "CRITICAL",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:redhat": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:redhat",
 | 
			
		||||
						CveID:         "CVE-2021-20231",
 | 
			
		||||
						Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
						Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
						Cvss3Severity: "MEDIUM",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:redhat",
 | 
			
		||||
						CveID:       "CVE-2021-20231",
 | 
			
		||||
						Title:       "gnutls: Use after free in client key_share extension",
 | 
			
		||||
						Summary:     "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
						Cvss3Score:  3.7,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:rocky": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:rocky",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "MEDIUM",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:ubuntu": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:ubuntu",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "LOW",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
			},
 | 
			
		||||
			LibraryFixedIns: models.LibraryFixedIns{},
 | 
			
		||||
		},
 | 
			
		||||
@@ -720,7 +999,80 @@ var osAndLibSR = &models.ScanResult{
 | 
			
		||||
			},
 | 
			
		||||
			AffectedPackages: models.PackageFixStatuses{},
 | 
			
		||||
			CveContents: models.CveContents{
 | 
			
		||||
				"trivy": []models.CveContent{{
 | 
			
		||||
				"trivy:ghsa": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:ghsa",
 | 
			
		||||
						CveID:         "CVE-2020-8165",
 | 
			
		||||
						Title:         "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:       "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Severity: "CRITICAL",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:ghsa",
 | 
			
		||||
						CveID:       "CVE-2020-8165",
 | 
			
		||||
						Title:       "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:     "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Score:  9.8,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:nvd": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:nvd",
 | 
			
		||||
						CveID:         "CVE-2020-8165",
 | 
			
		||||
						Title:         "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:       "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Severity: "CRITICAL",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:nvd",
 | 
			
		||||
						CveID:       "CVE-2020-8165",
 | 
			
		||||
						Title:       "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:     "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss2Score:  7.5,
 | 
			
		||||
						Cvss2Vector: "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
						Cvss3Score:  9.8,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:redhat": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:redhat",
 | 
			
		||||
						CveID:         "CVE-2020-8165",
 | 
			
		||||
						Title:         "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:       "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Severity: "HIGH",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:redhat",
 | 
			
		||||
						CveID:       "CVE-2020-8165",
 | 
			
		||||
						Title:       "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:     "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Score:  9.8,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:ruby-advisory-db": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:ruby-advisory-db",
 | 
			
		||||
					CveID:         "CVE-2020-8165",
 | 
			
		||||
					Title:         "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
					Summary:       "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
					Cvss3Severity: "CRITICAL",
 | 
			
		||||
@@ -893,6 +1245,16 @@ var osAndLib2Trivy = []byte(`
 | 
			
		||||
          "CweIDs": [
 | 
			
		||||
            "CWE-416"
 | 
			
		||||
          ],
 | 
			
		||||
          "VendorSeverity": {
 | 
			
		||||
            "alma": 2,
 | 
			
		||||
            "cbl-mariner": 4,
 | 
			
		||||
            "nvd": 4,
 | 
			
		||||
            "oracle-oval": 2,
 | 
			
		||||
            "photon": 4,
 | 
			
		||||
            "redhat": 2,
 | 
			
		||||
            "rocky": 2,
 | 
			
		||||
            "ubuntu": 1
 | 
			
		||||
          },
 | 
			
		||||
          "CVSS": {
 | 
			
		||||
            "nvd": {
 | 
			
		||||
              "V2Vector": "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
@@ -948,7 +1310,17 @@ var osAndLib2Trivy = []byte(`
 | 
			
		||||
          "CweIDs": [
 | 
			
		||||
            "CWE-502"
 | 
			
		||||
          ],
 | 
			
		||||
          "VendorSeverity": {
 | 
			
		||||
            "ghsa": 4,
 | 
			
		||||
            "nvd": 4,
 | 
			
		||||
            "redhat": 3,
 | 
			
		||||
            "ruby-advisory-db": 4
 | 
			
		||||
          },
 | 
			
		||||
          "CVSS": {
 | 
			
		||||
            "ghsa": {
 | 
			
		||||
              "V3Vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
              "V3Score": 9.8
 | 
			
		||||
            },
 | 
			
		||||
            "nvd": {
 | 
			
		||||
              "V2Vector": "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
              "V3Vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
@@ -995,7 +1367,19 @@ var osAndLib2SR = &models.ScanResult{
 | 
			
		||||
					FixedIn:     "3.6.7-4+deb10u7",
 | 
			
		||||
				}},
 | 
			
		||||
			CveContents: models.CveContents{
 | 
			
		||||
				"trivy": []models.CveContent{{
 | 
			
		||||
				"trivy:alma": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:alma",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "MEDIUM",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:cbl-mariner": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:cbl-mariner",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "CRITICAL",
 | 
			
		||||
@@ -1003,6 +1387,94 @@ var osAndLib2SR = &models.ScanResult{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:nvd": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:nvd",
 | 
			
		||||
						CveID:         "CVE-2021-20231",
 | 
			
		||||
						Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
						Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
						Cvss3Severity: "CRITICAL",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:nvd",
 | 
			
		||||
						CveID:       "CVE-2021-20231",
 | 
			
		||||
						Title:       "gnutls: Use after free in client key_share extension",
 | 
			
		||||
						Summary:     "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
						Cvss2Score:  7.5,
 | 
			
		||||
						Cvss2Vector: "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
						Cvss3Score:  9.8,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:oracle-oval": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:oracle-oval",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "MEDIUM",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:photon": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:photon",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "CRITICAL",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:redhat": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:redhat",
 | 
			
		||||
						CveID:         "CVE-2021-20231",
 | 
			
		||||
						Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
						Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
						Cvss3Severity: "MEDIUM",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:redhat",
 | 
			
		||||
						CveID:       "CVE-2021-20231",
 | 
			
		||||
						Title:       "gnutls: Use after free in client key_share extension",
 | 
			
		||||
						Summary:     "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
						Cvss3Score:  3.7,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:rocky": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:rocky",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "MEDIUM",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
				"trivy:ubuntu": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:ubuntu",
 | 
			
		||||
					CveID:         "CVE-2021-20231",
 | 
			
		||||
					Title:         "gnutls: Use after free in client key_share extension",
 | 
			
		||||
					Summary:       "A flaw was found in gnutls. A use after free issue in client sending key_share extension may lead to memory corruption and other consequences.",
 | 
			
		||||
					Cvss3Severity: "LOW",
 | 
			
		||||
					References: models.References{
 | 
			
		||||
						{Source: "trivy", Link: "https://bugzilla.redhat.com/show_bug.cgi?id=1922276"},
 | 
			
		||||
					},
 | 
			
		||||
				}},
 | 
			
		||||
			},
 | 
			
		||||
			LibraryFixedIns: models.LibraryFixedIns{},
 | 
			
		||||
		},
 | 
			
		||||
@@ -1016,7 +1488,80 @@ var osAndLib2SR = &models.ScanResult{
 | 
			
		||||
			},
 | 
			
		||||
			AffectedPackages: models.PackageFixStatuses{},
 | 
			
		||||
			CveContents: models.CveContents{
 | 
			
		||||
				"trivy": []models.CveContent{{
 | 
			
		||||
				"trivy:ghsa": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:ghsa",
 | 
			
		||||
						CveID:         "CVE-2020-8165",
 | 
			
		||||
						Title:         "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:       "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Severity: "CRITICAL",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:ghsa",
 | 
			
		||||
						CveID:       "CVE-2020-8165",
 | 
			
		||||
						Title:       "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:     "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Score:  9.8,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:nvd": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:nvd",
 | 
			
		||||
						CveID:         "CVE-2020-8165",
 | 
			
		||||
						Title:         "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:       "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Severity: "CRITICAL",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:nvd",
 | 
			
		||||
						CveID:       "CVE-2020-8165",
 | 
			
		||||
						Title:       "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:     "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss2Score:  7.5,
 | 
			
		||||
						Cvss2Vector: "AV:N/AC:L/Au:N/C:P/I:P/A:P",
 | 
			
		||||
						Cvss3Score:  9.8,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:redhat": []models.CveContent{
 | 
			
		||||
					{
 | 
			
		||||
						Type:          "trivy:redhat",
 | 
			
		||||
						CveID:         "CVE-2020-8165",
 | 
			
		||||
						Title:         "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:       "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Severity: "HIGH",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						Type:        "trivy:redhat",
 | 
			
		||||
						CveID:       "CVE-2020-8165",
 | 
			
		||||
						Title:       "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
						Summary:     "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
						Cvss3Score:  9.8,
 | 
			
		||||
						Cvss3Vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
 | 
			
		||||
						References: models.References{
 | 
			
		||||
							{Source: "trivy", Link: "https://www.debian.org/security/2020/dsa-4766"},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				"trivy:ruby-advisory-db": []models.CveContent{{
 | 
			
		||||
					Type:          "trivy:ruby-advisory-db",
 | 
			
		||||
					CveID:         "CVE-2020-8165",
 | 
			
		||||
					Title:         "rubygem-activesupport: potentially unintended unmarshalling of user-provided objects in MemCacheStore and RedisCacheStore",
 | 
			
		||||
					Summary:       "A deserialization of untrusted data vulnernerability exists in rails \u003c 5.2.4.3, rails \u003c 6.0.3.1 that can allow an attacker to unmarshal user-provided objects in MemCacheStore and RedisCacheStore potentially resulting in an RCE.",
 | 
			
		||||
					Cvss3Severity: "CRITICAL",
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ import (
 | 
			
		||||
	"sort"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	trivydbTypes "github.com/aquasecurity/trivy-db/pkg/types"
 | 
			
		||||
	ftypes "github.com/aquasecurity/trivy/pkg/fanal/types"
 | 
			
		||||
	"github.com/aquasecurity/trivy/pkg/types"
 | 
			
		||||
 | 
			
		||||
@@ -68,16 +69,35 @@ func Convert(results types.Results) (result *models.ScanResult, err error) {
 | 
			
		||||
				lastModified = *vuln.LastModifiedDate
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			vulnInfo.CveContents = models.CveContents{
 | 
			
		||||
				models.Trivy: []models.CveContent{{
 | 
			
		||||
					Cvss3Severity: vuln.Severity,
 | 
			
		||||
					References:    references,
 | 
			
		||||
			for source, severity := range vuln.VendorSeverity {
 | 
			
		||||
				vulnInfo.CveContents[models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source))] = append(vulnInfo.CveContents[models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source))], models.CveContent{
 | 
			
		||||
					Type:          models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source)),
 | 
			
		||||
					CveID:         vuln.VulnerabilityID,
 | 
			
		||||
					Title:         vuln.Title,
 | 
			
		||||
					Summary:       vuln.Description,
 | 
			
		||||
					Cvss3Severity: trivydbTypes.SeverityNames[severity],
 | 
			
		||||
					Published:     published,
 | 
			
		||||
					LastModified:  lastModified,
 | 
			
		||||
				}},
 | 
			
		||||
					References:    references,
 | 
			
		||||
				})
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			for source, cvss := range vuln.CVSS {
 | 
			
		||||
				vulnInfo.CveContents[models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source))] = append(vulnInfo.CveContents[models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source))], models.CveContent{
 | 
			
		||||
					Type:         models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source)),
 | 
			
		||||
					CveID:        vuln.VulnerabilityID,
 | 
			
		||||
					Title:        vuln.Title,
 | 
			
		||||
					Summary:      vuln.Description,
 | 
			
		||||
					Cvss2Score:   cvss.V2Score,
 | 
			
		||||
					Cvss2Vector:  cvss.V2Vector,
 | 
			
		||||
					Cvss3Score:   cvss.V3Score,
 | 
			
		||||
					Cvss3Vector:  cvss.V3Vector,
 | 
			
		||||
					Published:    published,
 | 
			
		||||
					LastModified: lastModified,
 | 
			
		||||
					References:   references,
 | 
			
		||||
				})
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// do only if image type is Vuln
 | 
			
		||||
			if isTrivySupportedOS(trivyResult.Type) {
 | 
			
		||||
				pkgs[vuln.PkgName] = models.Package{
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,7 @@ import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	trivydb "github.com/aquasecurity/trivy-db/pkg/db"
 | 
			
		||||
	"github.com/aquasecurity/trivy-db/pkg/metadata"
 | 
			
		||||
@@ -40,10 +41,7 @@ func DetectLibsCves(r *models.ScanResult, trivyOpts config.TrivyOpts, logOpts lo
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// initialize trivy's logger and db
 | 
			
		||||
	err = log.InitLogger(logOpts.Debug, logOpts.Quiet)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return xerrors.Errorf("Failed to init trivy logger. err: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	log.InitLogger(logOpts.Debug, logOpts.Quiet)
 | 
			
		||||
 | 
			
		||||
	logging.Log.Info("Updating library db...")
 | 
			
		||||
	if err := downloadDB("", trivyOpts, noProgress, false); err != nil {
 | 
			
		||||
@@ -229,20 +227,59 @@ func (d libraryDetector) getVulnDetail(tvuln types.DetectedVulnerability) (vinfo
 | 
			
		||||
 | 
			
		||||
func getCveContents(cveID string, vul trivydbTypes.Vulnerability) (contents map[models.CveContentType][]models.CveContent) {
 | 
			
		||||
	contents = map[models.CveContentType][]models.CveContent{}
 | 
			
		||||
	refs := []models.Reference{}
 | 
			
		||||
	refs := make([]models.Reference, 0, len(vul.References))
 | 
			
		||||
	for _, refURL := range vul.References {
 | 
			
		||||
		refs = append(refs, models.Reference{Source: "trivy", Link: refURL})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	contents[models.Trivy] = []models.CveContent{
 | 
			
		||||
		{
 | 
			
		||||
			Type:          models.Trivy,
 | 
			
		||||
	for source, severity := range vul.VendorSeverity {
 | 
			
		||||
		contents[models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source))] = append(contents[models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source))], models.CveContent{
 | 
			
		||||
			Type:          models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source)),
 | 
			
		||||
			CveID:         cveID,
 | 
			
		||||
			Title:         vul.Title,
 | 
			
		||||
			Summary:       vul.Description,
 | 
			
		||||
			Cvss3Severity: string(vul.Severity),
 | 
			
		||||
			References:    refs,
 | 
			
		||||
		},
 | 
			
		||||
			Cvss3Severity: trivydbTypes.SeverityNames[severity],
 | 
			
		||||
			Published: func() time.Time {
 | 
			
		||||
				if vul.PublishedDate != nil {
 | 
			
		||||
					return *vul.PublishedDate
 | 
			
		||||
				}
 | 
			
		||||
				return time.Time{}
 | 
			
		||||
			}(),
 | 
			
		||||
			LastModified: func() time.Time {
 | 
			
		||||
				if vul.LastModifiedDate != nil {
 | 
			
		||||
					return *vul.LastModifiedDate
 | 
			
		||||
				}
 | 
			
		||||
				return time.Time{}
 | 
			
		||||
			}(),
 | 
			
		||||
			References: refs,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for source, cvss := range vul.CVSS {
 | 
			
		||||
		contents[models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source))] = append(contents[models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source))], models.CveContent{
 | 
			
		||||
			Type:        models.CveContentType(fmt.Sprintf("%s:%s", models.Trivy, source)),
 | 
			
		||||
			CveID:       cveID,
 | 
			
		||||
			Title:       vul.Title,
 | 
			
		||||
			Summary:     vul.Description,
 | 
			
		||||
			Cvss2Score:  cvss.V2Score,
 | 
			
		||||
			Cvss2Vector: cvss.V2Vector,
 | 
			
		||||
			Cvss3Score:  cvss.V3Score,
 | 
			
		||||
			Cvss3Vector: cvss.V3Vector,
 | 
			
		||||
			Published: func() time.Time {
 | 
			
		||||
				if vul.PublishedDate != nil {
 | 
			
		||||
					return *vul.PublishedDate
 | 
			
		||||
				}
 | 
			
		||||
				return time.Time{}
 | 
			
		||||
			}(),
 | 
			
		||||
			LastModified: func() time.Time {
 | 
			
		||||
				if vul.LastModifiedDate != nil {
 | 
			
		||||
					return *vul.LastModifiedDate
 | 
			
		||||
				}
 | 
			
		||||
				return time.Time{}
 | 
			
		||||
			}(),
 | 
			
		||||
			References: refs,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return contents
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										127
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										127
									
								
								go.mod
									
									
									
									
									
								
							@@ -1,6 +1,8 @@
 | 
			
		||||
module github.com/future-architect/vuls
 | 
			
		||||
 | 
			
		||||
go 1.21
 | 
			
		||||
go 1.22
 | 
			
		||||
 | 
			
		||||
toolchain go1.22.0
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
	github.com/3th1nk/cidr v0.2.0
 | 
			
		||||
@@ -8,16 +10,16 @@ require (
 | 
			
		||||
	github.com/BurntSushi/toml v1.3.2
 | 
			
		||||
	github.com/CycloneDX/cyclonedx-go v0.8.0
 | 
			
		||||
	github.com/Ullaakut/nmap/v2 v2.2.2
 | 
			
		||||
	github.com/aquasecurity/trivy v0.50.1
 | 
			
		||||
	github.com/aquasecurity/trivy v0.51.1
 | 
			
		||||
	github.com/aquasecurity/trivy-db v0.0.0-20240425111931-1fe1d505d3ff
 | 
			
		||||
	github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48
 | 
			
		||||
	github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2
 | 
			
		||||
	github.com/aws/aws-sdk-go v1.51.5
 | 
			
		||||
	github.com/aws/aws-sdk-go v1.51.16
 | 
			
		||||
	github.com/c-robinson/iplib v1.0.8
 | 
			
		||||
	github.com/cenkalti/backoff v2.2.1+incompatible
 | 
			
		||||
	github.com/d4l3k/messagediff v1.2.2-0.20190829033028-7e0a312ae40b
 | 
			
		||||
	github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21
 | 
			
		||||
	github.com/emersion/go-smtp v0.21.1
 | 
			
		||||
	github.com/emersion/go-smtp v0.21.2
 | 
			
		||||
	github.com/google/go-cmp v0.6.0
 | 
			
		||||
	github.com/google/subcommands v1.2.0
 | 
			
		||||
	github.com/google/uuid v1.6.0
 | 
			
		||||
@@ -52,7 +54,6 @@ require (
 | 
			
		||||
	github.com/vulsio/gost v0.4.6-0.20240501065222-d47d2e716bfa
 | 
			
		||||
	github.com/vulsio/goval-dictionary v0.9.5
 | 
			
		||||
	go.etcd.io/bbolt v1.3.10
 | 
			
		||||
	go.uber.org/zap v1.27.0
 | 
			
		||||
	golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
 | 
			
		||||
	golang.org/x/oauth2 v0.20.0
 | 
			
		||||
	golang.org/x/sync v0.7.0
 | 
			
		||||
@@ -61,16 +62,16 @@ require (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
	cloud.google.com/go v0.112.0 // indirect
 | 
			
		||||
	cloud.google.com/go v0.112.1 // indirect
 | 
			
		||||
	cloud.google.com/go/compute/metadata v0.3.0 // indirect
 | 
			
		||||
	cloud.google.com/go/iam v1.1.5 // indirect
 | 
			
		||||
	cloud.google.com/go/storage v1.36.0 // indirect
 | 
			
		||||
	cloud.google.com/go/iam v1.1.6 // indirect
 | 
			
		||||
	cloud.google.com/go/storage v1.39.1 // indirect
 | 
			
		||||
	dario.cat/mergo v1.0.0 // indirect
 | 
			
		||||
	filippo.io/edwards25519 v1.1.0 // indirect
 | 
			
		||||
	github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
 | 
			
		||||
	github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 // indirect
 | 
			
		||||
	github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 // indirect
 | 
			
		||||
	github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect
 | 
			
		||||
	github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect
 | 
			
		||||
	github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect
 | 
			
		||||
	github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect
 | 
			
		||||
	github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
 | 
			
		||||
	github.com/Azure/go-autorest v14.2.0+incompatible // indirect
 | 
			
		||||
	github.com/Azure/go-autorest/autorest v0.11.29 // indirect
 | 
			
		||||
@@ -79,7 +80,7 @@ require (
 | 
			
		||||
	github.com/Azure/go-autorest/autorest/to v0.3.0 // indirect
 | 
			
		||||
	github.com/Azure/go-autorest/logger v0.2.1 // indirect
 | 
			
		||||
	github.com/Azure/go-autorest/tracing v0.6.0 // indirect
 | 
			
		||||
	github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect
 | 
			
		||||
	github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
 | 
			
		||||
	github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible // indirect
 | 
			
		||||
	github.com/Intevation/gval v1.3.0 // indirect
 | 
			
		||||
	github.com/Intevation/jsonpath v0.2.1 // indirect
 | 
			
		||||
@@ -105,22 +106,22 @@ require (
 | 
			
		||||
	github.com/aquasecurity/go-npm-version v0.0.0-20201110091526-0b796d180798 // indirect
 | 
			
		||||
	github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46 // indirect
 | 
			
		||||
	github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 // indirect
 | 
			
		||||
	github.com/aquasecurity/trivy-policies v0.10.0 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2 v1.25.2 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/config v1.27.4 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/credentials v1.17.4 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.15.2 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.2 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.2 // indirect
 | 
			
		||||
	github.com/aquasecurity/trivy-checks v0.10.5-0.20240430045208-6cc735de6b9e // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2 v1.26.1 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/config v1.27.11 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/ecr v1.24.6 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.2 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/s3 v1.51.1 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/sso v1.20.1 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.1 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/sts v1.28.1 // indirect
 | 
			
		||||
	github.com/aws/smithy-go v1.20.1 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/ecr v1.27.4 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect
 | 
			
		||||
	github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect
 | 
			
		||||
	github.com/aws/smithy-go v1.20.2 // indirect
 | 
			
		||||
	github.com/beorn7/perks v1.0.1 // indirect
 | 
			
		||||
	github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
 | 
			
		||||
	github.com/bitnami/go-version v0.0.0-20231130084017-bb00604d650c // indirect
 | 
			
		||||
@@ -130,7 +131,7 @@ require (
 | 
			
		||||
	github.com/chai2010/gettext-go v1.0.2 // indirect
 | 
			
		||||
	github.com/cheggaaa/pb/v3 v3.1.5 // indirect
 | 
			
		||||
	github.com/cloudflare/circl v1.3.7 // indirect
 | 
			
		||||
	github.com/containerd/containerd v1.7.13 // indirect
 | 
			
		||||
	github.com/containerd/containerd v1.7.16 // indirect
 | 
			
		||||
	github.com/containerd/log v0.1.0 // indirect
 | 
			
		||||
	github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect
 | 
			
		||||
	github.com/containerd/typeurl/v2 v2.1.1 // indirect
 | 
			
		||||
@@ -138,11 +139,11 @@ require (
 | 
			
		||||
	github.com/cyphar/filepath-securejoin v0.2.4 // indirect
 | 
			
		||||
	github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
 | 
			
		||||
	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
 | 
			
		||||
	github.com/distribution/reference v0.5.0 // indirect
 | 
			
		||||
	github.com/distribution/reference v0.6.0 // indirect
 | 
			
		||||
	github.com/dlclark/regexp2 v1.4.0 // indirect
 | 
			
		||||
	github.com/docker/cli v25.0.1+incompatible // indirect
 | 
			
		||||
	github.com/docker/distribution v2.8.3+incompatible // indirect
 | 
			
		||||
	github.com/docker/docker v25.0.5+incompatible // indirect
 | 
			
		||||
	github.com/docker/docker v26.0.2+incompatible // indirect
 | 
			
		||||
	github.com/docker/docker-credential-helpers v0.7.0 // indirect
 | 
			
		||||
	github.com/docker/go-connections v0.5.0 // indirect
 | 
			
		||||
	github.com/docker/go-metrics v0.0.1 // indirect
 | 
			
		||||
@@ -165,9 +166,9 @@ require (
 | 
			
		||||
	github.com/go-ini/ini v1.67.0 // indirect
 | 
			
		||||
	github.com/go-logr/logr v1.4.1 // indirect
 | 
			
		||||
	github.com/go-logr/stdr v1.2.2 // indirect
 | 
			
		||||
	github.com/go-openapi/jsonpointer v0.20.1 // indirect
 | 
			
		||||
	github.com/go-openapi/jsonreference v0.20.3 // indirect
 | 
			
		||||
	github.com/go-openapi/swag v0.22.5 // indirect
 | 
			
		||||
	github.com/go-openapi/jsonpointer v0.21.0 // indirect
 | 
			
		||||
	github.com/go-openapi/jsonreference v0.21.0 // indirect
 | 
			
		||||
	github.com/go-openapi/swag v0.23.0 // indirect
 | 
			
		||||
	github.com/go-redis/redis/v8 v8.11.5 // indirect
 | 
			
		||||
	github.com/go-sql-driver/mysql v1.8.1 // indirect
 | 
			
		||||
	github.com/go-stack/stack v1.8.1 // indirect
 | 
			
		||||
@@ -175,18 +176,18 @@ require (
 | 
			
		||||
	github.com/gofrs/uuid v4.3.1+incompatible // indirect
 | 
			
		||||
	github.com/gogo/protobuf v1.3.2 // indirect
 | 
			
		||||
	github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
 | 
			
		||||
	github.com/golang-jwt/jwt/v5 v5.0.0 // indirect
 | 
			
		||||
	github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
 | 
			
		||||
	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
 | 
			
		||||
	github.com/golang/protobuf v1.5.3 // indirect
 | 
			
		||||
	github.com/golang/protobuf v1.5.4 // indirect
 | 
			
		||||
	github.com/google/btree v1.1.2 // indirect
 | 
			
		||||
	github.com/google/gnostic-models v0.6.8 // indirect
 | 
			
		||||
	github.com/google/go-containerregistry v0.19.0 // indirect
 | 
			
		||||
	github.com/google/go-containerregistry v0.19.1 // indirect
 | 
			
		||||
	github.com/google/gofuzz v1.2.0 // indirect
 | 
			
		||||
	github.com/google/licenseclassifier/v2 v2.0.0 // indirect
 | 
			
		||||
	github.com/google/s2a-go v0.1.7 // indirect
 | 
			
		||||
	github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
 | 
			
		||||
	github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
 | 
			
		||||
	github.com/googleapis/gax-go/v2 v2.12.0 // indirect
 | 
			
		||||
	github.com/googleapis/gax-go/v2 v2.12.3 // indirect
 | 
			
		||||
	github.com/gopherjs/gopherjs v1.17.2 // indirect
 | 
			
		||||
	github.com/gorilla/mux v1.8.1 // indirect
 | 
			
		||||
	github.com/gorilla/websocket v1.5.0 // indirect
 | 
			
		||||
@@ -216,7 +217,7 @@ require (
 | 
			
		||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
			
		||||
	github.com/jtolds/gls v4.20.0+incompatible // indirect
 | 
			
		||||
	github.com/kevinburke/ssh_config v1.2.0 // indirect
 | 
			
		||||
	github.com/klauspost/compress v1.17.2 // indirect
 | 
			
		||||
	github.com/klauspost/compress v1.17.4 // indirect
 | 
			
		||||
	github.com/kylelemons/godebug v1.1.0 // indirect
 | 
			
		||||
	github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
 | 
			
		||||
	github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
 | 
			
		||||
@@ -228,7 +229,6 @@ require (
 | 
			
		||||
	github.com/magiconair/properties v1.8.7 // indirect
 | 
			
		||||
	github.com/mailru/easyjson v0.7.7 // indirect
 | 
			
		||||
	github.com/masahiro331/go-mvn-version v0.0.0-20210429150710-d3157d602a08 // indirect
 | 
			
		||||
	github.com/masahiro331/go-xfs-filesystem v0.0.0-20230608043311-a335f4599b70 // indirect
 | 
			
		||||
	github.com/mattn/go-colorable v0.1.13 // indirect
 | 
			
		||||
	github.com/mattn/go-isatty v0.0.20 // indirect
 | 
			
		||||
	github.com/mattn/go-runewidth v0.0.15 // indirect
 | 
			
		||||
@@ -242,6 +242,7 @@ require (
 | 
			
		||||
	github.com/mitchellh/mapstructure v1.5.0 // indirect
 | 
			
		||||
	github.com/mitchellh/reflectwalk v1.0.2 // indirect
 | 
			
		||||
	github.com/moby/buildkit v0.12.5 // indirect
 | 
			
		||||
	github.com/moby/docker-image-spec v1.3.1 // indirect
 | 
			
		||||
	github.com/moby/locker v1.0.1 // indirect
 | 
			
		||||
	github.com/moby/spdystream v0.2.0 // indirect
 | 
			
		||||
	github.com/moby/term v0.5.0 // indirect
 | 
			
		||||
@@ -253,7 +254,7 @@ require (
 | 
			
		||||
	github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
 | 
			
		||||
	github.com/ncruces/go-strftime v0.1.9 // indirect
 | 
			
		||||
	github.com/nsf/termbox-go v1.1.1 // indirect
 | 
			
		||||
	github.com/open-policy-agent/opa v0.62.0 // indirect
 | 
			
		||||
	github.com/open-policy-agent/opa v0.64.1 // indirect
 | 
			
		||||
	github.com/opencontainers/go-digest v1.0.0 // indirect
 | 
			
		||||
	github.com/opencontainers/image-spec v1.1.0 // indirect
 | 
			
		||||
	github.com/openvex/go-vex v0.2.5 // indirect
 | 
			
		||||
@@ -261,10 +262,10 @@ require (
 | 
			
		||||
	github.com/pelletier/go-toml/v2 v2.2.2 // indirect
 | 
			
		||||
	github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
 | 
			
		||||
	github.com/pjbgf/sha1cd v0.3.0 // indirect
 | 
			
		||||
	github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
 | 
			
		||||
	github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
 | 
			
		||||
	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
 | 
			
		||||
	github.com/prometheus/client_golang v1.19.0 // indirect
 | 
			
		||||
	github.com/prometheus/client_model v0.5.0 // indirect
 | 
			
		||||
	github.com/prometheus/client_model v0.6.1 // indirect
 | 
			
		||||
	github.com/prometheus/common v0.48.0 // indirect
 | 
			
		||||
	github.com/prometheus/procfs v0.12.0 // indirect
 | 
			
		||||
	github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
 | 
			
		||||
@@ -300,29 +301,30 @@ require (
 | 
			
		||||
	github.com/xeipuuv/gojsonschema v1.2.0 // indirect
 | 
			
		||||
	github.com/xlab/treeprint v1.2.0 // indirect
 | 
			
		||||
	github.com/yashtewari/glob-intersection v0.2.0 // indirect
 | 
			
		||||
	github.com/zclconf/go-cty v1.14.1 // indirect
 | 
			
		||||
	github.com/zclconf/go-cty v1.14.4 // indirect
 | 
			
		||||
	github.com/zclconf/go-cty-yaml v1.0.3 // indirect
 | 
			
		||||
	go.opencensus.io v0.24.0 // indirect
 | 
			
		||||
	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
 | 
			
		||||
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
 | 
			
		||||
	go.opentelemetry.io/otel v1.23.1 // indirect
 | 
			
		||||
	go.opentelemetry.io/otel/metric v1.23.1 // indirect
 | 
			
		||||
	go.opentelemetry.io/otel/sdk v1.23.1 // indirect
 | 
			
		||||
	go.opentelemetry.io/otel/trace v1.23.1 // indirect
 | 
			
		||||
	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
 | 
			
		||||
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
 | 
			
		||||
	go.opentelemetry.io/otel v1.24.0 // indirect
 | 
			
		||||
	go.opentelemetry.io/otel/metric v1.24.0 // indirect
 | 
			
		||||
	go.opentelemetry.io/otel/sdk v1.24.0 // indirect
 | 
			
		||||
	go.opentelemetry.io/otel/trace v1.24.0 // indirect
 | 
			
		||||
	go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
 | 
			
		||||
	go.uber.org/multierr v1.11.0 // indirect
 | 
			
		||||
	go.uber.org/zap v1.27.0 // indirect
 | 
			
		||||
	golang.org/x/crypto v0.23.0 // indirect
 | 
			
		||||
	golang.org/x/mod v0.17.0 // indirect
 | 
			
		||||
	golang.org/x/net v0.25.0 // indirect
 | 
			
		||||
	golang.org/x/sys v0.20.0 // indirect
 | 
			
		||||
	golang.org/x/term v0.20.0 // indirect
 | 
			
		||||
	golang.org/x/time v0.5.0 // indirect
 | 
			
		||||
	google.golang.org/api v0.155.0 // indirect
 | 
			
		||||
	google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
 | 
			
		||||
	google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
 | 
			
		||||
	google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
 | 
			
		||||
	google.golang.org/grpc v1.62.0 // indirect
 | 
			
		||||
	google.golang.org/protobuf v1.33.0 // indirect
 | 
			
		||||
	google.golang.org/api v0.172.0 // indirect
 | 
			
		||||
	google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect
 | 
			
		||||
	google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7 // indirect
 | 
			
		||||
	google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
 | 
			
		||||
	google.golang.org/grpc v1.63.2 // indirect
 | 
			
		||||
	google.golang.org/protobuf v1.34.0 // indirect
 | 
			
		||||
	gopkg.in/inf.v0 v0.9.1 // indirect
 | 
			
		||||
	gopkg.in/ini.v1 v1.67.0 // indirect
 | 
			
		||||
	gopkg.in/warnings.v0 v0.1.2 // indirect
 | 
			
		||||
@@ -333,16 +335,16 @@ require (
 | 
			
		||||
	gorm.io/gorm v1.25.10 // indirect
 | 
			
		||||
	gotest.tools/v3 v3.5.0 // indirect
 | 
			
		||||
	helm.sh/helm/v3 v3.14.2 // indirect
 | 
			
		||||
	k8s.io/api v0.29.1 // indirect
 | 
			
		||||
	k8s.io/api v0.29.3 // indirect
 | 
			
		||||
	k8s.io/apiextensions-apiserver v0.29.0 // indirect
 | 
			
		||||
	k8s.io/apimachinery v0.29.1 // indirect
 | 
			
		||||
	k8s.io/apimachinery v0.29.3 // indirect
 | 
			
		||||
	k8s.io/apiserver v0.29.0 // indirect
 | 
			
		||||
	k8s.io/cli-runtime v0.29.0 // indirect
 | 
			
		||||
	k8s.io/client-go v0.29.0 // indirect
 | 
			
		||||
	k8s.io/component-base v0.29.0 // indirect
 | 
			
		||||
	k8s.io/cli-runtime v0.29.3 // indirect
 | 
			
		||||
	k8s.io/client-go v0.29.3 // indirect
 | 
			
		||||
	k8s.io/component-base v0.29.3 // indirect
 | 
			
		||||
	k8s.io/klog/v2 v2.120.0 // indirect
 | 
			
		||||
	k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
 | 
			
		||||
	k8s.io/kubectl v0.29.0 // indirect
 | 
			
		||||
	k8s.io/kubectl v0.29.3 // indirect
 | 
			
		||||
	k8s.io/utils v0.0.0-20231127182322-b307cd553661 // indirect
 | 
			
		||||
	modernc.org/libc v1.50.5 // indirect
 | 
			
		||||
	modernc.org/mathutil v1.6.0 // indirect
 | 
			
		||||
@@ -355,6 +357,3 @@ require (
 | 
			
		||||
	sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
 | 
			
		||||
	sigs.k8s.io/yaml v1.4.0 // indirect
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// https://github.com/aquasecurity/trivy/blob/5f69937cc6986912925a8a1b0801810ea850ba79/go.mod#L431-L433
 | 
			
		||||
replace github.com/testcontainers/testcontainers-go => github.com/testcontainers/testcontainers-go v0.23.0
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										313
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										313
									
								
								go.sum
									
									
									
									
									
								
							@@ -30,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9
 | 
			
		||||
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
 | 
			
		||||
cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
 | 
			
		||||
cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
 | 
			
		||||
cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
 | 
			
		||||
cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
 | 
			
		||||
cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM=
 | 
			
		||||
cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4=
 | 
			
		||||
cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
 | 
			
		||||
cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
 | 
			
		||||
cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
 | 
			
		||||
@@ -107,8 +107,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97
 | 
			
		||||
cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
 | 
			
		||||
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
 | 
			
		||||
cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
 | 
			
		||||
cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI=
 | 
			
		||||
cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8=
 | 
			
		||||
cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc=
 | 
			
		||||
cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI=
 | 
			
		||||
cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
 | 
			
		||||
cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
 | 
			
		||||
cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
 | 
			
		||||
@@ -169,8 +169,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
 | 
			
		||||
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
 | 
			
		||||
cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
 | 
			
		||||
cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
 | 
			
		||||
cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
 | 
			
		||||
cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
 | 
			
		||||
cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dVtY=
 | 
			
		||||
cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o=
 | 
			
		||||
cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
 | 
			
		||||
cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
 | 
			
		||||
cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
 | 
			
		||||
@@ -193,12 +193,12 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9
 | 
			
		||||
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ=
 | 
			
		||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2/go.mod h1:yInRyqWXAuaPrgI7p70+lDDgh3mlBohis29jGMISnmc=
 | 
			
		||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
 | 
			
		||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 | 
			
		||||
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
 | 
			
		||||
@@ -226,8 +226,8 @@ github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ
 | 
			
		||||
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
 | 
			
		||||
github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
 | 
			
		||||
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
 | 
			
		||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk=
 | 
			
		||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
 | 
			
		||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
 | 
			
		||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
 | 
			
		||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 | 
			
		||||
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 | 
			
		||||
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
 | 
			
		||||
@@ -304,18 +304,18 @@ github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 h1:rcEG5HI
 | 
			
		||||
github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492/go.mod h1:9Beu8XsUNNfzml7WBf3QmyPToP1wm1Gj/Vc5UJKqTzU=
 | 
			
		||||
github.com/aquasecurity/table v1.8.0 h1:9ntpSwrUfjrM6/YviArlx/ZBGd6ix8W+MtojQcM7tv0=
 | 
			
		||||
github.com/aquasecurity/table v1.8.0/go.mod h1:eqOmvjjB7AhXFgFqpJUEE/ietg7RrMSJZXyTN8E/wZw=
 | 
			
		||||
github.com/aquasecurity/testdocker v0.0.0-20230111101738-e741bda259da h1:pj/adfN0Wbzc0H8YkI1nX5K92wOU5/1/1TRuuc0y5Nw=
 | 
			
		||||
github.com/aquasecurity/testdocker v0.0.0-20230111101738-e741bda259da/go.mod h1:852lbQLpK2nCwlR4ZLYIccxYCfoQao6q9Nl6tjz54v8=
 | 
			
		||||
github.com/aquasecurity/testdocker v0.0.0-20240419073403-90bd43849334 h1:MgvbLyLBW8+uVD/Tv6uKw9ia8dfHynwVT/VKn5s5idI=
 | 
			
		||||
github.com/aquasecurity/testdocker v0.0.0-20240419073403-90bd43849334/go.mod h1:TKXn7bPfMM52ETP4sjjwkTKCZ18CqCs+I/vtFePSdBc=
 | 
			
		||||
github.com/aquasecurity/tml v0.6.1 h1:y2ZlGSfrhnn7t4ZJ/0rotuH+v5Jgv6BDDO5jB6A9gwo=
 | 
			
		||||
github.com/aquasecurity/tml v0.6.1/go.mod h1:OnYMWY5lvI9ejU7yH9LCberWaaTBW7hBFsITiIMY2yY=
 | 
			
		||||
github.com/aquasecurity/trivy v0.50.1 h1:z0tAvVcuMaF14bbe9jTzBuKKup8uJkx3KYUS8e58PK8=
 | 
			
		||||
github.com/aquasecurity/trivy v0.50.1/go.mod h1:+gMIJI7BxYrkLfLdsC7cfDmuw1I1cQm4L+c0WI4KcDQ=
 | 
			
		||||
github.com/aquasecurity/trivy v0.51.1 h1:dyRtODzG82sCBdeDEWlgkke2KGoF4Kibiiwy220ZNv8=
 | 
			
		||||
github.com/aquasecurity/trivy v0.51.1/go.mod h1:Ou1vfjfGTpgHpPUkEhepPE4yXaNxXRIXN4KdBkjYsQo=
 | 
			
		||||
github.com/aquasecurity/trivy-checks v0.10.5-0.20240430045208-6cc735de6b9e h1:s0P4VeCqb7tWw06/L1cZ5/42AWy6VZFuLZ96THPJmmM=
 | 
			
		||||
github.com/aquasecurity/trivy-checks v0.10.5-0.20240430045208-6cc735de6b9e/go.mod h1:UIFQxYlKcL7EGhNVicFmZ6XxZ2UpFZU7bNKEv/Y/6XM=
 | 
			
		||||
github.com/aquasecurity/trivy-db v0.0.0-20240425111931-1fe1d505d3ff h1:aeEM2qnj5iUPKQZvvg5nMTKQegNbFpFTTd4IAjvHB+k=
 | 
			
		||||
github.com/aquasecurity/trivy-db v0.0.0-20240425111931-1fe1d505d3ff/go.mod h1:+ZBnbloSlhVVBS5p38wr8uYog49PjuQeLCQwHnC+cTE=
 | 
			
		||||
github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48 h1:JVgBIuIYbwG+ekC5lUHUpGJboPYiCcxiz06RCtz8neI=
 | 
			
		||||
github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48/go.mod h1:Ldya37FLi0e/5Cjq2T5Bty7cFkzUDwTcPeQua+2M8i8=
 | 
			
		||||
github.com/aquasecurity/trivy-policies v0.10.0 h1:QONOsIFi6+WyB+7NGMBQeCgMFcRg6RV9dTBBpeOFDxU=
 | 
			
		||||
github.com/aquasecurity/trivy-policies v0.10.0/go.mod h1:7WU0GTUqtQxqQ+FV3JAy7lskQQZU6lp7Mz1i8GEapFw=
 | 
			
		||||
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q=
 | 
			
		||||
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE=
 | 
			
		||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
 | 
			
		||||
@@ -323,38 +323,38 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY
 | 
			
		||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
 | 
			
		||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
 | 
			
		||||
github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
 | 
			
		||||
github.com/aws/aws-sdk-go v1.51.5 h1:tUHg/ZJgS2Hog4Wl4xpbBqCrmFg6AYv7gPVaCs4v0+s=
 | 
			
		||||
github.com/aws/aws-sdk-go v1.51.5/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2 v1.25.2 h1:/uiG1avJRgLGiQM9X3qJM8+Qa6KRGK5rRPuXE0HUM+w=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2 v1.25.2/go.mod h1:Evoc5AsmtveRt1komDwIsjHFyrP5tDuF1D1U+6z6pNo=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/config v1.27.4 h1:AhfWb5ZwimdsYTgP7Od8E9L1u4sKmDW2ZVeLcf2O42M=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/config v1.27.4/go.mod h1:zq2FFXK3A416kiukwpsd+rD4ny6JC7QSkp4QdN1Mp2g=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.4 h1:h5Vztbd8qLppiPwX+y0Q6WiwMZgpd9keKe2EAENgAuI=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.4/go.mod h1:+30tpwrkOgvkJL1rUZuRLoxcJwtI/OkeBLYnHxJtVe0=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.15.2 h1:AK0J8iYBFeUk2Ax7O8YpLtFsfhdOByh2QIkHmigpRYk=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.15.2/go.mod h1:iRlGzMix0SExQEviAyptRWRGdYNo3+ufW/lCzvKVTUc=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.2 h1:bNo4LagzUKbjdxE0tIcR9pMzLR2U/Tgie1Hq1HQ3iH8=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.2/go.mod h1:wRQv0nN6v9wDXuWThpovGQjqF1HFdcgWjporw14lS8k=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.2 h1:EtOU5jsPdIQNP+6Q2C5e3d65NKT1PeCiQk+9OdzO12Q=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.2/go.mod h1:tyF5sKccmDz0Bv4NrstEr+/9YkSPJHrcO7UsUKf7pWM=
 | 
			
		||||
github.com/aws/aws-sdk-go v1.51.16 h1:vnWKK8KjbftEkuPX8bRj3WHsLy1uhotn0eXptpvrxJI=
 | 
			
		||||
github.com/aws/aws-sdk-go v1.51.16/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5/go.mod h1:FSaRudD0dXiMPK2UjknVwwTYyZMRsHv3TtkabsZih5I=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3CIQsRIrtTlUC3lP84taWzHlq0=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/ecr v1.24.6 h1:cT7h+GWP2k0hJSsPmppKgxl4C9R6gCC5/oF4oHnmpK4=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/ecr v1.24.6/go.mod h1:AOHmGMoPtSY9Zm2zBuwUJQBisIvYAZeA1n7b6f4e880=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.2 h1:5ffmXjPtwRExp1zc7gENLgCPyHFbhEPwVTkTiH9niSk=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.2/go.mod h1:Ru7vg1iQ7cR4i7SZ/JTLYN9kaXtbL69UdgG0OQWQxW0=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.51.1 h1:juZ+uGargZOrQGNxkVHr9HHR/0N+Yu8uekQnV7EAVRs=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.51.1/go.mod h1:SoR0c7Jnq8Tpmt0KSLXIavhjmaagRqQpe9r70W3POJg=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/sso v1.20.1 h1:utEGkfdQ4L6YW/ietH7111ZYglLJvS+sLriHJ1NBJEQ=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/sso v1.20.1/go.mod h1:RsYqzYr2F2oPDdpy+PdhephuZxTfjHQe7SOBcZGoAU8=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.1 h1:9/GylMS45hGGFCcMrUZDVayQE1jYSIN6da9jo7RAYIw=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.1/go.mod h1:YjAPFn4kGFqKC54VsHs5fn5B6d+PCY2tziEa3U/GB5Y=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/sts v1.28.1 h1:3I2cBEYgKhrWlwyZgfpSO2BpaMY1LHPqXYk/QGlu2ew=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/sts v1.28.1/go.mod h1:uQ7YYKZt3adCRrdCBREm1CD3efFLOUNH77MrUCvx5oA=
 | 
			
		||||
github.com/aws/smithy-go v1.20.1 h1:4SZlSlMr36UEqC7XOyRVb27XMeZubNcBNN+9IgEPIQw=
 | 
			
		||||
github.com/aws/smithy-go v1.20.1/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/ecr v1.27.4 h1:Qr9W21mzWT3RhfYn9iAux7CeRIdbnTAqmiOlASqQgZI=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/ecr v1.27.4/go.mod h1:if7ybzzjOmDB8pat9FE35AHTY6ZxlYSy3YviSmFZv8c=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 h1:6cnno47Me9bRykw9AEv9zkXE+5or7jz8TsskTTccbgc=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1/go.mod h1:qmdkIIAC+GCLASF7R2whgNrJADz0QZPX+Seiw/i4S3o=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU=
 | 
			
		||||
github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw=
 | 
			
		||||
github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q=
 | 
			
		||||
github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E=
 | 
			
		||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
 | 
			
		||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
 | 
			
		||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
			
		||||
@@ -411,14 +411,12 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
 | 
			
		||||
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 | 
			
		||||
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 | 
			
		||||
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 | 
			
		||||
github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ=
 | 
			
		||||
github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM=
 | 
			
		||||
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
 | 
			
		||||
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4=
 | 
			
		||||
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
 | 
			
		||||
github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
 | 
			
		||||
github.com/containerd/containerd v1.7.13 h1:wPYKIeGMN8vaggSKuV1X0wZulpMz4CrgEsZdaCyB6Is=
 | 
			
		||||
github.com/containerd/containerd v1.7.13/go.mod h1:zT3up6yTRfEUa6+GsITYIJNgSVL9NQ4x4h1RPzk0Wu4=
 | 
			
		||||
github.com/containerd/containerd v1.7.16 h1:7Zsfe8Fkj4Wi2My6DXGQ87hiqIrmOXolm72ZEkFU5Mg=
 | 
			
		||||
github.com/containerd/containerd v1.7.16/go.mod h1:NL49g7A/Fui7ccmxV6zkBWwqMgmMxFWzujYCc+JLt7k=
 | 
			
		||||
github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM=
 | 
			
		||||
github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ=
 | 
			
		||||
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
 | 
			
		||||
@@ -455,8 +453,8 @@ github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+
 | 
			
		||||
github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA=
 | 
			
		||||
github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc=
 | 
			
		||||
github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI=
 | 
			
		||||
github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
 | 
			
		||||
github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
 | 
			
		||||
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
 | 
			
		||||
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
 | 
			
		||||
github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E=
 | 
			
		||||
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
 | 
			
		||||
github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
 | 
			
		||||
@@ -465,8 +463,8 @@ github.com/docker/cli v25.0.1+incompatible h1:mFpqnrS6Hsm3v1k7Wa/BO23oz0k121MTbT
 | 
			
		||||
github.com/docker/cli v25.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
 | 
			
		||||
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
 | 
			
		||||
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
 | 
			
		||||
github.com/docker/docker v25.0.5+incompatible h1:UmQydMduGkrD5nQde1mecF/YnSbTOaPeFIeP5C4W+DE=
 | 
			
		||||
github.com/docker/docker v25.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
 | 
			
		||||
github.com/docker/docker v26.0.2+incompatible h1:yGVmKUFGgcxA6PXWAokO0sQL22BrQ67cgVjko8tGdXE=
 | 
			
		||||
github.com/docker/docker v26.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
 | 
			
		||||
github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
 | 
			
		||||
github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
 | 
			
		||||
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
 | 
			
		||||
@@ -485,8 +483,8 @@ github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcej
 | 
			
		||||
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
 | 
			
		||||
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ=
 | 
			
		||||
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ=
 | 
			
		||||
github.com/emersion/go-smtp v0.21.1 h1:VQeZSZAKk8ueYii1yR5Zalmy7jI287eWDUqSaJ68vRM=
 | 
			
		||||
github.com/emersion/go-smtp v0.21.1/go.mod h1:qm27SGYgoIPRot6ubfQ/GpiPy/g3PaZAVRxiO/sDUgQ=
 | 
			
		||||
github.com/emersion/go-smtp v0.21.2 h1:OLDgvZKuofk4em9fT5tFG5j4jE1/hXnX75UMvcrL4AA=
 | 
			
		||||
github.com/emersion/go-smtp v0.21.2/go.mod h1:qm27SGYgoIPRot6ubfQ/GpiPy/g3PaZAVRxiO/sDUgQ=
 | 
			
		||||
github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
 | 
			
		||||
github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
 | 
			
		||||
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
 | 
			
		||||
@@ -501,8 +499,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m
 | 
			
		||||
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
 | 
			
		||||
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
 | 
			
		||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 | 
			
		||||
github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
 | 
			
		||||
github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
 | 
			
		||||
github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI=
 | 
			
		||||
github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 | 
			
		||||
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM=
 | 
			
		||||
@@ -552,26 +548,28 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
 | 
			
		||||
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 | 
			
		||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 | 
			
		||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 | 
			
		||||
github.com/go-openapi/analysis v0.21.5 h1:3tHfEBh6Ia8eKc4M7khOGjPOAlWKJ10d877Cr9teujI=
 | 
			
		||||
github.com/go-openapi/analysis v0.21.5/go.mod h1:25YcZosX9Lwz2wBsrFrrsL8bmjjXdlyP6zsr2AMy29M=
 | 
			
		||||
github.com/go-openapi/errors v0.21.0 h1:FhChC/duCnfoLj1gZ0BgaBmzhJC2SL/sJr8a2vAobSY=
 | 
			
		||||
github.com/go-openapi/errors v0.21.0/go.mod h1:jxNTMUxRCKj65yb/okJGEtahVd7uvWnuWfj53bse4ho=
 | 
			
		||||
github.com/go-openapi/jsonpointer v0.20.1 h1:MkK4VEIEZMj4wT9PmjaUmGflVBr9nvud4Q4UVFbDoBE=
 | 
			
		||||
github.com/go-openapi/jsonpointer v0.20.1/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs=
 | 
			
		||||
github.com/go-openapi/jsonreference v0.20.3 h1:EjGcjTW8pD1mRis6+w/gmoBdqv5+RbE9B85D1NgDOVQ=
 | 
			
		||||
github.com/go-openapi/jsonreference v0.20.3/go.mod h1:FviDZ46i9ivh810gqzFLl5NttD5q3tSlMLqLr6okedM=
 | 
			
		||||
github.com/go-openapi/loads v0.21.3 h1:8sSH2FIm/SnbDUGv572md4YqVMFne/a9Eubvcd3anew=
 | 
			
		||||
github.com/go-openapi/loads v0.21.3/go.mod h1:Y3aMR24iHbKHppOj91nQ/SHc0cuPbAr4ndY4a02xydc=
 | 
			
		||||
github.com/go-openapi/runtime v0.27.1 h1:ae53yaOoh+fx/X5Eaq8cRmavHgDma65XPZuvBqvJYto=
 | 
			
		||||
github.com/go-openapi/runtime v0.27.1/go.mod h1:fijeJEiEclyS8BRurYE1DE5TLb9/KZl6eAdbzjsrlLU=
 | 
			
		||||
github.com/go-openapi/spec v0.20.12 h1:cgSLbrsmziAP2iais+Vz7kSazwZ8rsUZd6TUzdDgkVI=
 | 
			
		||||
github.com/go-openapi/spec v0.20.12/go.mod h1:iSCgnBcwbMW9SfzJb8iYynXvcY6C/QFrI7otzF7xGM4=
 | 
			
		||||
github.com/go-openapi/strfmt v0.22.0 h1:Ew9PnEYc246TwrEspvBdDHS4BVKXy/AOVsfqGDgAcaI=
 | 
			
		||||
github.com/go-openapi/strfmt v0.22.0/go.mod h1:HzJ9kokGIju3/K6ap8jL+OlGAbjpSv27135Yr9OivU4=
 | 
			
		||||
github.com/go-openapi/swag v0.22.5 h1:fVS63IE3M0lsuWRzuom3RLwUMVI2peDH01s6M70ugys=
 | 
			
		||||
github.com/go-openapi/swag v0.22.5/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0=
 | 
			
		||||
github.com/go-openapi/validate v0.22.4 h1:5v3jmMyIPKTR8Lv9syBAIRxG6lY0RqeBPB1LKEijzk8=
 | 
			
		||||
github.com/go-openapi/validate v0.22.4/go.mod h1:qm6O8ZIcPVdSY5219468Jv7kBdGvkiZLPOmqnqTUZ2A=
 | 
			
		||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
 | 
			
		||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
 | 
			
		||||
github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU=
 | 
			
		||||
github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo=
 | 
			
		||||
github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w=
 | 
			
		||||
github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE=
 | 
			
		||||
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
 | 
			
		||||
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
 | 
			
		||||
github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
 | 
			
		||||
github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
 | 
			
		||||
github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco=
 | 
			
		||||
github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs=
 | 
			
		||||
github.com/go-openapi/runtime v0.28.0 h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ=
 | 
			
		||||
github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc=
 | 
			
		||||
github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY=
 | 
			
		||||
github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk=
 | 
			
		||||
github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c=
 | 
			
		||||
github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4=
 | 
			
		||||
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
 | 
			
		||||
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
 | 
			
		||||
github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58=
 | 
			
		||||
github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ=
 | 
			
		||||
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
 | 
			
		||||
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
 | 
			
		||||
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 | 
			
		||||
@@ -603,8 +601,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69
 | 
			
		||||
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
 | 
			
		||||
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
 | 
			
		||||
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 | 
			
		||||
github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=
 | 
			
		||||
github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
 | 
			
		||||
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
 | 
			
		||||
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
 | 
			
		||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 | 
			
		||||
github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68=
 | 
			
		||||
github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
 | 
			
		||||
@@ -640,8 +638,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
 | 
			
		||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
 | 
			
		||||
github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
 | 
			
		||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 | 
			
		||||
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
 | 
			
		||||
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 | 
			
		||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 | 
			
		||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 | 
			
		||||
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 | 
			
		||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
 | 
			
		||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 | 
			
		||||
@@ -651,8 +649,8 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z
 | 
			
		||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 | 
			
		||||
github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
 | 
			
		||||
github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
 | 
			
		||||
github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw=
 | 
			
		||||
github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
 | 
			
		||||
github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM=
 | 
			
		||||
github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
 | 
			
		||||
github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
 | 
			
		||||
github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
 | 
			
		||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
 | 
			
		||||
@@ -672,8 +670,8 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
 | 
			
		||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 | 
			
		||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 | 
			
		||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 | 
			
		||||
github.com/google/go-containerregistry v0.19.0 h1:uIsMRBV7m/HDkDxE/nXMnv1q+lOOSPlQ/ywc5JbB8Ic=
 | 
			
		||||
github.com/google/go-containerregistry v0.19.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ=
 | 
			
		||||
github.com/google/go-containerregistry v0.19.1 h1:yMQ62Al6/V0Z7CqIrrS1iYoA5/oQCm88DeNujc7C1KY=
 | 
			
		||||
github.com/google/go-containerregistry v0.19.1/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI=
 | 
			
		||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 | 
			
		||||
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
 | 
			
		||||
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 | 
			
		||||
@@ -728,8 +726,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99
 | 
			
		||||
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
 | 
			
		||||
github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
 | 
			
		||||
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
 | 
			
		||||
github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
 | 
			
		||||
github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
 | 
			
		||||
github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA=
 | 
			
		||||
github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
 | 
			
		||||
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
 | 
			
		||||
github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g=
 | 
			
		||||
github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k=
 | 
			
		||||
@@ -749,8 +747,8 @@ github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJr
 | 
			
		||||
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
 | 
			
		||||
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
 | 
			
		||||
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
 | 
			
		||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=
 | 
			
		||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
 | 
			
		||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=
 | 
			
		||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
 | 
			
		||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
 | 
			
		||||
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
 | 
			
		||||
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
 | 
			
		||||
@@ -836,8 +834,8 @@ github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF
 | 
			
		||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 | 
			
		||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 | 
			
		||||
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
 | 
			
		||||
github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4=
 | 
			
		||||
github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
 | 
			
		||||
github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4=
 | 
			
		||||
github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
 | 
			
		||||
github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f h1:GvCU5GXhHq+7LeOzx/haG7HSIZokl3/0GkoUFzsRJjg=
 | 
			
		||||
github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f/go.mod h1:q59u9px8b7UTj0nIjEjvmTWekazka6xIt6Uogz5Dm+8=
 | 
			
		||||
github.com/knqyf263/go-cpe v0.0.0-20230627041855-cb0794d06872 h1:snH0nDYi3kizy9vxYBhZm5KXkGt9VXdGEtr6/1SGUqY=
 | 
			
		||||
@@ -876,6 +874,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
 | 
			
		||||
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
 | 
			
		||||
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
 | 
			
		||||
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
 | 
			
		||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
 | 
			
		||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
 | 
			
		||||
github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 h1:EnfXoSqDfSNJv0VBNqY/88RNnhSGYkrHaO0mmFGbVsc=
 | 
			
		||||
github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40/go.mod h1:vy1vK6wD6j7xX6O6hXe621WabdtNkou2h7uRtTfRMyg=
 | 
			
		||||
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
 | 
			
		||||
@@ -937,6 +937,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx
 | 
			
		||||
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
 | 
			
		||||
github.com/moby/buildkit v0.12.5 h1:RNHH1l3HDhYyZafr5EgstEu8aGNCwyfvMtrQDtjH9T0=
 | 
			
		||||
github.com/moby/buildkit v0.12.5/go.mod h1:YGwjA2loqyiYfZeEo8FtI7z4x5XponAaIWsWcSjWwso=
 | 
			
		||||
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
 | 
			
		||||
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
 | 
			
		||||
github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
 | 
			
		||||
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
 | 
			
		||||
github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk=
 | 
			
		||||
@@ -987,8 +989,8 @@ github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4
 | 
			
		||||
github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o=
 | 
			
		||||
github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
 | 
			
		||||
github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 | 
			
		||||
github.com/open-policy-agent/opa v0.62.0 h1:8NAWkrg3tnMBi+pYqL7pEi7h6QmbMmVf/5IyjJS/A2s=
 | 
			
		||||
github.com/open-policy-agent/opa v0.62.0/go.mod h1:FD8D++1j1m74Qam2iUnKlfPDeoxWTXANaRUVu8W/tmA=
 | 
			
		||||
github.com/open-policy-agent/opa v0.64.1 h1:n8IJTYlFWzqiOYx+JiawbErVxiqAyXohovcZxYbskxQ=
 | 
			
		||||
github.com/open-policy-agent/opa v0.64.1/go.mod h1:j4VeLorVpKipnkQ2TDjWshEuV3cvP/rHzQhYaraUXZY=
 | 
			
		||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
 | 
			
		||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
 | 
			
		||||
github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
 | 
			
		||||
@@ -1014,8 +1016,8 @@ github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1H
 | 
			
		||||
github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
 | 
			
		||||
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
 | 
			
		||||
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
 | 
			
		||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
 | 
			
		||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
 | 
			
		||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
 | 
			
		||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
 | 
			
		||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
			
		||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
			
		||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
			
		||||
@@ -1023,6 +1025,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
			
		||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
			
		||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
 | 
			
		||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
			
		||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
 | 
			
		||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
 | 
			
		||||
github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY=
 | 
			
		||||
github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg=
 | 
			
		||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
 | 
			
		||||
@@ -1033,8 +1037,8 @@ github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdU
 | 
			
		||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
 | 
			
		||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
			
		||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 | 
			
		||||
github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
 | 
			
		||||
github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
 | 
			
		||||
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
 | 
			
		||||
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
 | 
			
		||||
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 | 
			
		||||
github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
 | 
			
		||||
github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
 | 
			
		||||
@@ -1072,8 +1076,6 @@ github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA=
 | 
			
		||||
github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA=
 | 
			
		||||
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
 | 
			
		||||
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
 | 
			
		||||
github.com/saracen/walker v0.1.3 h1:YtcKKmpRPy6XJTHJ75J2QYXXZYWnZNQxPCVqZSHVV/g=
 | 
			
		||||
github.com/saracen/walker v0.1.3/go.mod h1:FU+7qU8DeQQgSZDmmThMJi93kPkLFgy0oVAcLxurjIk=
 | 
			
		||||
github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA=
 | 
			
		||||
github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU=
 | 
			
		||||
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
 | 
			
		||||
@@ -1081,12 +1083,16 @@ github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
 | 
			
		||||
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
 | 
			
		||||
github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI=
 | 
			
		||||
github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE=
 | 
			
		||||
github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4=
 | 
			
		||||
github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM=
 | 
			
		||||
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
 | 
			
		||||
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
 | 
			
		||||
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
 | 
			
		||||
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
 | 
			
		||||
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
 | 
			
		||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 | 
			
		||||
github.com/sigstore/rekor v1.2.2 h1:5JK/zKZvcQpL/jBmHvmFj3YbpDMBQnJQ6ygp8xdF3bY=
 | 
			
		||||
github.com/sigstore/rekor v1.2.2/go.mod h1:FGnWBGWzeNceJnp0x9eDFd41mI8aQqCjj+Zp0IEs0Qg=
 | 
			
		||||
github.com/sigstore/rekor v1.3.6 h1:QvpMMJVWAp69a3CHzdrLelqEqpTM3ByQRt5B5Kspbi8=
 | 
			
		||||
github.com/sigstore/rekor v1.3.6/go.mod h1:JDTSNNMdQ/PxdsS49DJkJ+pRJCO/83nbR5p3aZQteXc=
 | 
			
		||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 | 
			
		||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
 | 
			
		||||
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 | 
			
		||||
@@ -1141,12 +1147,16 @@ github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BG
 | 
			
		||||
github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k=
 | 
			
		||||
github.com/terminalstatic/go-xsd-validate v0.1.5 h1:RqpJnf6HGE2CB/lZB1A8BYguk8uRtcvYAPLCF15qguo=
 | 
			
		||||
github.com/terminalstatic/go-xsd-validate v0.1.5/go.mod h1:18lsvYFofBflqCrvo1umpABZ99+GneNTw2kEEc8UPJw=
 | 
			
		||||
github.com/testcontainers/testcontainers-go v0.23.0 h1:ERYTSikX01QczBLPZpqsETTBO7lInqEP349phDOVJVs=
 | 
			
		||||
github.com/testcontainers/testcontainers-go v0.23.0/go.mod h1:3gzuZfb7T9qfcH2pHpV4RLlWrPjeWNQah6XlYQ32c4I=
 | 
			
		||||
github.com/testcontainers/testcontainers-go/modules/localstack v0.26.0 h1:lpL04dHA9mGFBQLFcV+aEEh1Tf4ohXdIGgoj3J0bacM=
 | 
			
		||||
github.com/testcontainers/testcontainers-go/modules/localstack v0.26.0/go.mod h1:1xkZPpkBu6coI7CyVn3DXUBnsVrZ+fd/Cc8lx6zk2mk=
 | 
			
		||||
github.com/testcontainers/testcontainers-go v0.30.0 h1:jmn/XS22q4YRrcMwWg0pAwlClzs/abopbsBzrepyc4E=
 | 
			
		||||
github.com/testcontainers/testcontainers-go v0.30.0/go.mod h1:K+kHNGiM5zjklKjgTtcrEetF3uhWbMUyqAQoyoh8Pf0=
 | 
			
		||||
github.com/testcontainers/testcontainers-go/modules/localstack v0.28.0 h1:NOtK4tz2J1KbdAV6Lk9AQPUXB6Op8jGzKNfwVCThRxU=
 | 
			
		||||
github.com/testcontainers/testcontainers-go/modules/localstack v0.28.0/go.mod h1:nLimAfgHTQfaDZ2cO8/B4Z1qr8e020sM3ybpSsOVAUY=
 | 
			
		||||
github.com/tetratelabs/wazero v1.7.0 h1:jg5qPydno59wqjpGrHph81lbtHzTrWzwwtD4cD88+hQ=
 | 
			
		||||
github.com/tetratelabs/wazero v1.7.0/go.mod h1:ytl6Zuh20R/eROuyDaGPkp82O9C/DJfXAwJfQ3X6/7Y=
 | 
			
		||||
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
 | 
			
		||||
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
 | 
			
		||||
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
 | 
			
		||||
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
 | 
			
		||||
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
 | 
			
		||||
github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
 | 
			
		||||
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
 | 
			
		||||
@@ -1187,20 +1197,22 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
 | 
			
		||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 | 
			
		||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 | 
			
		||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 | 
			
		||||
github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
 | 
			
		||||
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
 | 
			
		||||
github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI=
 | 
			
		||||
github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
 | 
			
		||||
github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE=
 | 
			
		||||
github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
 | 
			
		||||
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY=
 | 
			
		||||
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
 | 
			
		||||
github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA=
 | 
			
		||||
github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
 | 
			
		||||
github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8=
 | 
			
		||||
github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
 | 
			
		||||
github.com/zclconf/go-cty-yaml v1.0.3 h1:og/eOQ7lvA/WWhHGFETVWNduJM7Rjsv2RRpx1sdFMLc=
 | 
			
		||||
github.com/zclconf/go-cty-yaml v1.0.3/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs=
 | 
			
		||||
go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0=
 | 
			
		||||
go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ=
 | 
			
		||||
go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk=
 | 
			
		||||
go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo=
 | 
			
		||||
go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80=
 | 
			
		||||
go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c=
 | 
			
		||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
 | 
			
		||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
 | 
			
		||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
 | 
			
		||||
@@ -1210,22 +1222,22 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
 | 
			
		||||
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
 | 
			
		||||
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
 | 
			
		||||
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
 | 
			
		||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE=
 | 
			
		||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
 | 
			
		||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
 | 
			
		||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
 | 
			
		||||
go.opentelemetry.io/otel v1.23.1 h1:Za4UzOqJYS+MUczKI320AtqZHZb7EqxO00jAHE0jmQY=
 | 
			
		||||
go.opentelemetry.io/otel v1.23.1/go.mod h1:Td0134eafDLcTS4y+zQ26GE8u3dEuRBiBCTUIRHaikA=
 | 
			
		||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
 | 
			
		||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
 | 
			
		||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
 | 
			
		||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
 | 
			
		||||
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
 | 
			
		||||
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
 | 
			
		||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw=
 | 
			
		||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg=
 | 
			
		||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk=
 | 
			
		||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0=
 | 
			
		||||
go.opentelemetry.io/otel/metric v1.23.1 h1:PQJmqJ9u2QaJLBOELl1cxIdPcpbwzbkjfEyelTl2rlo=
 | 
			
		||||
go.opentelemetry.io/otel/metric v1.23.1/go.mod h1:mpG2QPlAfnK8yNhNJAxDZruU9Y1/HubbC+KyH8FaCWI=
 | 
			
		||||
go.opentelemetry.io/otel/sdk v1.23.1 h1:O7JmZw0h76if63LQdsBMKQDWNb5oEcOThG9IrxscV+E=
 | 
			
		||||
go.opentelemetry.io/otel/sdk v1.23.1/go.mod h1:LzdEVR5am1uKOOwfBWFef2DCi1nu3SA8XQxx2IerWFk=
 | 
			
		||||
go.opentelemetry.io/otel/trace v1.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8=
 | 
			
		||||
go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI=
 | 
			
		||||
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
 | 
			
		||||
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
 | 
			
		||||
go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
 | 
			
		||||
go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
 | 
			
		||||
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
 | 
			
		||||
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
 | 
			
		||||
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 | 
			
		||||
go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=
 | 
			
		||||
go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=
 | 
			
		||||
@@ -1436,7 +1448,6 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc
 | 
			
		||||
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
@@ -1611,8 +1622,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ
 | 
			
		||||
google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
 | 
			
		||||
google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
 | 
			
		||||
google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
 | 
			
		||||
google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA=
 | 
			
		||||
google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk=
 | 
			
		||||
google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk=
 | 
			
		||||
google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis=
 | 
			
		||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 | 
			
		||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 | 
			
		||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 | 
			
		||||
@@ -1721,12 +1732,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw
 | 
			
		||||
google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
 | 
			
		||||
google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
 | 
			
		||||
google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
 | 
			
		||||
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
 | 
			
		||||
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
 | 
			
		||||
google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
 | 
			
		||||
google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
 | 
			
		||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=
 | 
			
		||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
 | 
			
		||||
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 h1:ImUcDPHjTrAqNhlOkSocDLfG9rrNHH7w7uoKWPaWZ8s=
 | 
			
		||||
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7/go.mod h1:/3XmxOjePkvmKrHuBy4zNFw7IzxJXtAgdpXi8Ll990U=
 | 
			
		||||
google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7 h1:oqta3O3AnlWbmIE3bFnWbu4bRxZjfbWCp0cKSuZh01E=
 | 
			
		||||
google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
 | 
			
		||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
 | 
			
		||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
 | 
			
		||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 | 
			
		||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
 | 
			
		||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
 | 
			
		||||
@@ -1762,8 +1773,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
 | 
			
		||||
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
 | 
			
		||||
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
 | 
			
		||||
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
 | 
			
		||||
google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk=
 | 
			
		||||
google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
 | 
			
		||||
google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
 | 
			
		||||
google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
 | 
			
		||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
 | 
			
		||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 | 
			
		||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 | 
			
		||||
@@ -1780,8 +1791,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
 | 
			
		||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 | 
			
		||||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
			
		||||
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 | 
			
		||||
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
 | 
			
		||||
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
 | 
			
		||||
google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4=
 | 
			
		||||
google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
 | 
			
		||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 | 
			
		||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
			
		||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
			
		||||
@@ -1829,26 +1840,26 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
 | 
			
		||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
 | 
			
		||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
 | 
			
		||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
 | 
			
		||||
k8s.io/api v0.29.1 h1:DAjwWX/9YT7NQD4INu49ROJuZAAAP/Ijki48GUPzxqw=
 | 
			
		||||
k8s.io/api v0.29.1/go.mod h1:7Kl10vBRUXhnQQI8YR/R327zXC8eJ7887/+Ybta+RoQ=
 | 
			
		||||
k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw=
 | 
			
		||||
k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80=
 | 
			
		||||
k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0=
 | 
			
		||||
k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc=
 | 
			
		||||
k8s.io/apimachinery v0.29.1 h1:KY4/E6km/wLBguvCZv8cKTeOwwOBqFNjwJIdMkMbbRc=
 | 
			
		||||
k8s.io/apimachinery v0.29.1/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU=
 | 
			
		||||
k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU=
 | 
			
		||||
k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU=
 | 
			
		||||
k8s.io/apiserver v0.29.0 h1:Y1xEMjJkP+BIi0GSEv1BBrf1jLU9UPfAnnGGbbDdp7o=
 | 
			
		||||
k8s.io/apiserver v0.29.0/go.mod h1:31n78PsRKPmfpee7/l9NYEv67u6hOL6AfcE761HapDM=
 | 
			
		||||
k8s.io/cli-runtime v0.29.0 h1:q2kC3cex4rOBLfPOnMSzV2BIrrQlx97gxHJs21KxKS4=
 | 
			
		||||
k8s.io/cli-runtime v0.29.0/go.mod h1:VKudXp3X7wR45L+nER85YUzOQIru28HQpXr0mTdeCrk=
 | 
			
		||||
k8s.io/client-go v0.29.0 h1:KmlDtFcrdUzOYrBhXHgKw5ycWzc3ryPX5mQe0SkG3y8=
 | 
			
		||||
k8s.io/client-go v0.29.0/go.mod h1:yLkXH4HKMAywcrD82KMSmfYg2DlE8mepPR4JGSo5n38=
 | 
			
		||||
k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s=
 | 
			
		||||
k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M=
 | 
			
		||||
k8s.io/cli-runtime v0.29.3 h1:r68rephmmytoywkw2MyJ+CxjpasJDQY7AGc3XY2iv1k=
 | 
			
		||||
k8s.io/cli-runtime v0.29.3/go.mod h1:aqVUsk86/RhaGJwDhHXH0jcdqBrgdF3bZWk4Z9D4mkM=
 | 
			
		||||
k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg=
 | 
			
		||||
k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0=
 | 
			
		||||
k8s.io/component-base v0.29.3 h1:Oq9/nddUxlnrCuuR2K/jp6aflVvc0uDvxMzAWxnGzAo=
 | 
			
		||||
k8s.io/component-base v0.29.3/go.mod h1:Yuj33XXjuOk2BAaHsIGHhCKZQAgYKhqIxIjIr2UXYio=
 | 
			
		||||
k8s.io/klog/v2 v2.120.0 h1:z+q5mfovBj1fKFxiRzsa2DsJLPIVMk/KFL81LMOfK+8=
 | 
			
		||||
k8s.io/klog/v2 v2.120.0/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
 | 
			
		||||
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780=
 | 
			
		||||
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
 | 
			
		||||
k8s.io/kubectl v0.29.0 h1:Oqi48gXjikDhrBF67AYuZRTcJV4lg2l42GmvsP7FmYI=
 | 
			
		||||
k8s.io/kubectl v0.29.0/go.mod h1:0jMjGWIcMIQzmUaMgAzhSELv5WtHo2a8pq67DtviAJs=
 | 
			
		||||
k8s.io/kubectl v0.29.3 h1:RuwyyIU42MAISRIePaa8Q7A3U74Q9P4MoJbDFz9o3us=
 | 
			
		||||
k8s.io/kubectl v0.29.3/go.mod h1:yCxfY1dbwgVdEt2zkJ6d5NNLOhhWgTyrqACIoFhpdd4=
 | 
			
		||||
k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI=
 | 
			
		||||
k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
 | 
			
		||||
modernc.org/cc/v4 v4.21.0 h1:D/gLKtcztomvWbsbvBKo3leKQv+86f+DdqEZBBXhnag=
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@
 | 
			
		||||
package gost
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"cmp"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strconv"
 | 
			
		||||
@@ -11,6 +12,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	debver "github.com/knqyf263/go-deb-version"
 | 
			
		||||
	"golang.org/x/exp/maps"
 | 
			
		||||
	"golang.org/x/exp/slices"
 | 
			
		||||
	"golang.org/x/xerrors"
 | 
			
		||||
 | 
			
		||||
	"github.com/future-architect/vuls/logging"
 | 
			
		||||
@@ -109,6 +111,16 @@ func (deb Debian) detectCVEsWithFixState(r *models.ScanResult, fixed bool) ([]st
 | 
			
		||||
			for _, content := range deb.detect(cs, models.SrcPackage{Name: res.request.packName, Version: r.SrcPackages[res.request.packName].Version, BinaryNames: r.SrcPackages[res.request.packName].BinaryNames}, models.Kernel{Release: r.RunningKernel.Release, Version: r.Packages[fmt.Sprintf("linux-image-%s", r.RunningKernel.Release)].Version}) {
 | 
			
		||||
				c, ok := detects[content.cveContent.CveID]
 | 
			
		||||
				if ok {
 | 
			
		||||
					m := map[string]struct{}{}
 | 
			
		||||
					for _, s := range append(strings.Split(content.cveContent.Cvss3Severity, "|"), strings.Split(c.cveContent.Cvss3Severity, "|")...) {
 | 
			
		||||
						m[s] = struct{}{}
 | 
			
		||||
					}
 | 
			
		||||
					ss := maps.Keys(m)
 | 
			
		||||
					slices.SortFunc(ss, deb.CompareSeverity)
 | 
			
		||||
					severty := strings.Join(ss, "|")
 | 
			
		||||
					content.cveContent.Cvss2Severity = severty
 | 
			
		||||
					content.cveContent.Cvss3Severity = severty
 | 
			
		||||
 | 
			
		||||
					content.fixStatuses = append(content.fixStatuses, c.fixStatuses...)
 | 
			
		||||
				}
 | 
			
		||||
				detects[content.cveContent.CveID] = content
 | 
			
		||||
@@ -143,6 +155,16 @@ func (deb Debian) detectCVEsWithFixState(r *models.ScanResult, fixed bool) ([]st
 | 
			
		||||
			for _, content := range deb.detect(cs, p, models.Kernel{Release: r.RunningKernel.Release, Version: r.Packages[fmt.Sprintf("linux-image-%s", r.RunningKernel.Release)].Version}) {
 | 
			
		||||
				c, ok := detects[content.cveContent.CveID]
 | 
			
		||||
				if ok {
 | 
			
		||||
					m := map[string]struct{}{}
 | 
			
		||||
					for _, s := range append(strings.Split(content.cveContent.Cvss3Severity, "|"), strings.Split(c.cveContent.Cvss3Severity, "|")...) {
 | 
			
		||||
						m[s] = struct{}{}
 | 
			
		||||
					}
 | 
			
		||||
					ss := maps.Keys(m)
 | 
			
		||||
					slices.SortFunc(ss, deb.CompareSeverity)
 | 
			
		||||
					severty := strings.Join(ss, "|")
 | 
			
		||||
					content.cveContent.Cvss2Severity = severty
 | 
			
		||||
					content.cveContent.Cvss3Severity = severty
 | 
			
		||||
 | 
			
		||||
					content.fixStatuses = append(content.fixStatuses, c.fixStatuses...)
 | 
			
		||||
				}
 | 
			
		||||
				detects[content.cveContent.CveID] = content
 | 
			
		||||
@@ -271,13 +293,16 @@ func (deb Debian) isGostDefAffected(versionRelease, gostVersion string) (affecte
 | 
			
		||||
 | 
			
		||||
// ConvertToModel converts gost model to vuls model
 | 
			
		||||
func (deb Debian) ConvertToModel(cve *gostmodels.DebianCVE) *models.CveContent {
 | 
			
		||||
	severity := ""
 | 
			
		||||
	m := map[string]struct{}{}
 | 
			
		||||
	for _, p := range cve.Package {
 | 
			
		||||
		for _, r := range p.Release {
 | 
			
		||||
			severity = r.Urgency
 | 
			
		||||
			break
 | 
			
		||||
			m[r.Urgency] = struct{}{}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	ss := maps.Keys(m)
 | 
			
		||||
	slices.SortFunc(ss, deb.CompareSeverity)
 | 
			
		||||
	severity := strings.Join(ss, "|")
 | 
			
		||||
 | 
			
		||||
	var optinal map[string]string
 | 
			
		||||
	if cve.Scope != "" {
 | 
			
		||||
		optinal = map[string]string{"attack range": cve.Scope}
 | 
			
		||||
@@ -292,3 +317,10 @@ func (deb Debian) ConvertToModel(cve *gostmodels.DebianCVE) *models.CveContent {
 | 
			
		||||
		Optional:      optinal,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var severityRank = []string{"unknown", "unimportant", "not yet assigned", "end-of-life", "low", "medium", "high"}
 | 
			
		||||
 | 
			
		||||
// CompareSeverity compare severity by severity rank
 | 
			
		||||
func (deb Debian) CompareSeverity(a, b string) int {
 | 
			
		||||
	return cmp.Compare(slices.Index(severityRank, a), slices.Index(severityRank, b))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@
 | 
			
		||||
package gost
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"cmp"
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
@@ -97,27 +98,6 @@ func TestDebian_ConvertToModel(t *testing.T) {
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1:2.39.2-1.1",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "bullseye",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1:2.30.2-1+deb11u1",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1:2.30.2-1",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "buster",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1:2.20.1-2+deb10u5",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1:2.20.1-2+deb10u3",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "sid",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1:2.38.1-1",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1:2.40.0-1",
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
@@ -132,6 +112,105 @@ func TestDebian_ConvertToModel(t *testing.T) {
 | 
			
		||||
				Optional:      map[string]string{"attack range": "local"},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "multi package & multi release",
 | 
			
		||||
			args: gostmodels.DebianCVE{
 | 
			
		||||
				CveID:       "CVE-2023-48795",
 | 
			
		||||
				Scope:       "local",
 | 
			
		||||
				Description: "The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remote attackers to bypass integrity checks such that some packets are omitted (from the extension negotiation message), and a client and server may consequently end up with a connection for which some security features have been downgraded or disabled, aka a Terrapin attack. This occurs because the SSH Binary Packet Protocol (BPP), implemented by these extensions, mishandles the handshake phase and mishandles use of sequence numbers. For example, there is an effective attack against SSH's use of ChaCha20-Poly1305 (and CBC with Encrypt-then-MAC). The bypass occurs in chacha20-poly1305@openssh.com and (if CBC is used) the -etm@openssh.com MAC algorithms. This also affects Maverick Synergy Java SSH API before 3.1.0-SNAPSHOT, Dropbear through 2022.83, Ssh before 5.1.1 in Erlang/OTP, PuTTY before 0.80, AsyncSSH before 2.14.2, golang.org/x/crypto before 0.17.0, libssh before 0.10.6, libssh2 through 1.11.0, Thorn Tech SFTP Gateway before 3.4.6, Tera Term before 5.1, Paramiko before 3.4.0, jsch before 0.2.15, SFTPGo before 2.5.6, Netgate pfSense Plus through 23.09.1, Netgate pfSense CE through 2.7.2, HPN-SSH through 18.2.0, ProFTPD before 1.3.8b (and before 1.3.9rc2), ORYX CycloneSSH before 2.3.4, NetSarang XShell 7 before Build 0144, CrushFTP before 10.6.0, ConnectBot SSH library before 2.2.22, Apache MINA sshd through 2.11.0, sshj through 0.37.0, TinySSH through 20230101, trilead-ssh2 6401, LANCOM LCOS and LANconfig, FileZilla before 3.66.4, Nova before 11.8, PKIX-SSH before 14.4, SecureCRT before 9.4.3, Transmit5 before 5.10.4, Win32-OpenSSH before 9.5.0.0p1-Beta, WinSCP before 6.2.2, Bitvise SSH Server before 9.32, Bitvise SSH Client before 9.33, KiTTY through 0.76.1.13, the net-ssh gem 7.2.0 for Ruby, the mscdex ssh2 module before 1.15.0 for Node.js, the thrussh library before 0.35.1 for Rust, and the Russh crate before 0.40.2 for Rust.",
 | 
			
		||||
				Package: []gostmodels.DebianPackage{
 | 
			
		||||
					{
 | 
			
		||||
						PackageName: "openssh",
 | 
			
		||||
						Release: []gostmodels.DebianRelease{
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "trixie",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1:9.6p1-1",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1:9.7p1-4",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "bookworm",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1:9.2p1-2+deb12u2",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1:9.2p1-2+deb12u2",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "bullseye",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1:8.4p1-5+deb11u3",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1:8.4p1-5+deb11u3",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "buster",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1:7.9p1-10+deb10u4",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1:7.9p1-10+deb10u2",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "sid",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1:9.6p1-1",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1:9.7p1-4",
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						PackageName: "libssh2",
 | 
			
		||||
						Release: []gostmodels.DebianRelease{
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "trixie",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1.11.0-4",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1.11.0-4.1",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "bookworm",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "0",
 | 
			
		||||
								Urgency:      "unimportant",
 | 
			
		||||
								Version:      "1.10.0-3",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "bullseye",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "0",
 | 
			
		||||
								Urgency:      "unimportant",
 | 
			
		||||
								Version:      "1.9.0-2",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "buster",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "0",
 | 
			
		||||
								Urgency:      "unimportant",
 | 
			
		||||
								Version:      "1.8.0-2.1",
 | 
			
		||||
							},
 | 
			
		||||
							{
 | 
			
		||||
								ProductName:  "sid",
 | 
			
		||||
								Status:       "resolved",
 | 
			
		||||
								FixedVersion: "1.11.0-4",
 | 
			
		||||
								Urgency:      "not yet assigned",
 | 
			
		||||
								Version:      "1.11.0-4.1",
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			want: models.CveContent{
 | 
			
		||||
				Type:          models.DebianSecurityTracker,
 | 
			
		||||
				CveID:         "CVE-2023-48795",
 | 
			
		||||
				Summary:       "The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remote attackers to bypass integrity checks such that some packets are omitted (from the extension negotiation message), and a client and server may consequently end up with a connection for which some security features have been downgraded or disabled, aka a Terrapin attack. This occurs because the SSH Binary Packet Protocol (BPP), implemented by these extensions, mishandles the handshake phase and mishandles use of sequence numbers. For example, there is an effective attack against SSH's use of ChaCha20-Poly1305 (and CBC with Encrypt-then-MAC). The bypass occurs in chacha20-poly1305@openssh.com and (if CBC is used) the -etm@openssh.com MAC algorithms. This also affects Maverick Synergy Java SSH API before 3.1.0-SNAPSHOT, Dropbear through 2022.83, Ssh before 5.1.1 in Erlang/OTP, PuTTY before 0.80, AsyncSSH before 2.14.2, golang.org/x/crypto before 0.17.0, libssh before 0.10.6, libssh2 through 1.11.0, Thorn Tech SFTP Gateway before 3.4.6, Tera Term before 5.1, Paramiko before 3.4.0, jsch before 0.2.15, SFTPGo before 2.5.6, Netgate pfSense Plus through 23.09.1, Netgate pfSense CE through 2.7.2, HPN-SSH through 18.2.0, ProFTPD before 1.3.8b (and before 1.3.9rc2), ORYX CycloneSSH before 2.3.4, NetSarang XShell 7 before Build 0144, CrushFTP before 10.6.0, ConnectBot SSH library before 2.2.22, Apache MINA sshd through 2.11.0, sshj through 0.37.0, TinySSH through 20230101, trilead-ssh2 6401, LANCOM LCOS and LANconfig, FileZilla before 3.66.4, Nova before 11.8, PKIX-SSH before 14.4, SecureCRT before 9.4.3, Transmit5 before 5.10.4, Win32-OpenSSH before 9.5.0.0p1-Beta, WinSCP before 6.2.2, Bitvise SSH Server before 9.32, Bitvise SSH Client before 9.33, KiTTY through 0.76.1.13, the net-ssh gem 7.2.0 for Ruby, the mscdex ssh2 module before 1.15.0 for Node.js, the thrussh library before 0.35.1 for Rust, and the Russh crate before 0.40.2 for Rust.",
 | 
			
		||||
				Cvss2Severity: "unimportant|not yet assigned",
 | 
			
		||||
				Cvss3Severity: "unimportant|not yet assigned",
 | 
			
		||||
				SourceLink:    "https://security-tracker.debian.org/tracker/CVE-2023-48795",
 | 
			
		||||
				Optional:      map[string]string{"attack range": "local"},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	for _, tt := range tests {
 | 
			
		||||
		t.Run(tt.name, func(t *testing.T) {
 | 
			
		||||
@@ -307,13 +386,7 @@ func TestDebian_detect(t *testing.T) {
 | 
			
		||||
		t.Run(tt.name, func(t *testing.T) {
 | 
			
		||||
			got := (Debian{}).detect(tt.args.cves, tt.args.srcPkg, tt.args.runningKernel)
 | 
			
		||||
			slices.SortFunc(got, func(i, j cveContent) int {
 | 
			
		||||
				if i.cveContent.CveID < j.cveContent.CveID {
 | 
			
		||||
					return -1
 | 
			
		||||
				}
 | 
			
		||||
				if i.cveContent.CveID > j.cveContent.CveID {
 | 
			
		||||
					return +1
 | 
			
		||||
				}
 | 
			
		||||
				return 0
 | 
			
		||||
				return cmp.Compare(i.cveContent.CveID, j.cveContent.CveID)
 | 
			
		||||
			})
 | 
			
		||||
			if !reflect.DeepEqual(got, tt.want) {
 | 
			
		||||
				t.Errorf("Debian.detect() = %v, want %v", got, tt.want)
 | 
			
		||||
@@ -356,3 +429,55 @@ func TestDebian_isKernelSourcePackage(t *testing.T) {
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestDebian_CompareSeverity(t *testing.T) {
 | 
			
		||||
	type args struct {
 | 
			
		||||
		a string
 | 
			
		||||
		b string
 | 
			
		||||
	}
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		name string
 | 
			
		||||
		args args
 | 
			
		||||
		want int
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			name: "a < b",
 | 
			
		||||
			args: args{
 | 
			
		||||
				a: "low",
 | 
			
		||||
				b: "medium",
 | 
			
		||||
			},
 | 
			
		||||
			want: -1,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "a == b",
 | 
			
		||||
			args: args{
 | 
			
		||||
				a: "low",
 | 
			
		||||
				b: "low",
 | 
			
		||||
			},
 | 
			
		||||
			want: 0,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "a > b",
 | 
			
		||||
			args: args{
 | 
			
		||||
				a: "medium",
 | 
			
		||||
				b: "low",
 | 
			
		||||
			},
 | 
			
		||||
			want: +1,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "undefined severity is lowest",
 | 
			
		||||
			args: args{
 | 
			
		||||
				a: "undefined",
 | 
			
		||||
				b: "unknown",
 | 
			
		||||
			},
 | 
			
		||||
			want: -1,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	for _, tt := range tests {
 | 
			
		||||
		t.Run(tt.name, func(t *testing.T) {
 | 
			
		||||
			if got := (Debian{}).CompareSeverity(tt.args.a, tt.args.b); got != tt.want {
 | 
			
		||||
				t.Errorf("Debian.CompareSeverity() = %v, want %v", got, tt.want)
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
 Submodule integration updated: c9493b9402...117c606fed
									
								
							@@ -327,6 +327,60 @@ func NewCveContentType(name string) CveContentType {
 | 
			
		||||
		return Amazon
 | 
			
		||||
	case "trivy":
 | 
			
		||||
		return Trivy
 | 
			
		||||
	case "trivy:nvd":
 | 
			
		||||
		return TrivyNVD
 | 
			
		||||
	case "trivy:redhat":
 | 
			
		||||
		return TrivyRedHat
 | 
			
		||||
	case "trivy:redhat-oval":
 | 
			
		||||
		return TrivyRedHatOVAL
 | 
			
		||||
	case "trivy:debian":
 | 
			
		||||
		return TrivyDebian
 | 
			
		||||
	case "trivy:ubuntu":
 | 
			
		||||
		return TrivyUbuntu
 | 
			
		||||
	case "trivy:centos":
 | 
			
		||||
		return TrivyCentOS
 | 
			
		||||
	case "trivy:rocky":
 | 
			
		||||
		return TrivyRocky
 | 
			
		||||
	case "trivy:fedora":
 | 
			
		||||
		return TrivyFedora
 | 
			
		||||
	case "trivy:amazon":
 | 
			
		||||
		return TrivyAmazon
 | 
			
		||||
	case "trivy:oracle-oval":
 | 
			
		||||
		return TrivyOracleOVAL
 | 
			
		||||
	case "trivy:suse-cvrf":
 | 
			
		||||
		return TrivySuseCVRF
 | 
			
		||||
	case "trivy:alpine":
 | 
			
		||||
		return TrivyAlpine
 | 
			
		||||
	case "trivy:arch-linux":
 | 
			
		||||
		return TrivyArchLinux
 | 
			
		||||
	case "trivy:alma":
 | 
			
		||||
		return TrivyAlma
 | 
			
		||||
	case "trivy:cbl-mariner":
 | 
			
		||||
		return TrivyCBLMariner
 | 
			
		||||
	case "trivy:photon":
 | 
			
		||||
		return TrivyPhoton
 | 
			
		||||
	case "trivy:ruby-advisory-db":
 | 
			
		||||
		return TrivyRubySec
 | 
			
		||||
	case "trivy:php-security-advisories":
 | 
			
		||||
		return TrivyPhpSecurityAdvisories
 | 
			
		||||
	case "trivy:nodejs-security-wg":
 | 
			
		||||
		return TrivyNodejsSecurityWg
 | 
			
		||||
	case "trivy:ghsa":
 | 
			
		||||
		return TrivyGHSA
 | 
			
		||||
	case "trivy:glad":
 | 
			
		||||
		return TrivyGLAD
 | 
			
		||||
	case "trivy:osv":
 | 
			
		||||
		return TrivyOSV
 | 
			
		||||
	case "trivy:wolfi":
 | 
			
		||||
		return TrivyWolfi
 | 
			
		||||
	case "trivy:chainguard":
 | 
			
		||||
		return TrivyChainguard
 | 
			
		||||
	case "trivy:bitnami":
 | 
			
		||||
		return TrivyBitnamiVulndb
 | 
			
		||||
	case "trivy:k8s":
 | 
			
		||||
		return TrivyK8sVulnDB
 | 
			
		||||
	case "trivy:govulndb":
 | 
			
		||||
		return TrivyGoVulnDB
 | 
			
		||||
	case "GitHub":
 | 
			
		||||
		return Trivy
 | 
			
		||||
	default:
 | 
			
		||||
@@ -353,6 +407,8 @@ func GetCveContentTypes(family string) []CveContentType {
 | 
			
		||||
		return []CveContentType{SUSE}
 | 
			
		||||
	case constant.Windows:
 | 
			
		||||
		return []CveContentType{Microsoft}
 | 
			
		||||
	case string(Trivy):
 | 
			
		||||
		return []CveContentType{Trivy, TrivyNVD, TrivyRedHat, TrivyRedHatOVAL, TrivyDebian, TrivyUbuntu, TrivyCentOS, TrivyRocky, TrivyFedora, TrivyAmazon, TrivyOracleOVAL, TrivySuseCVRF, TrivyAlpine, TrivyArchLinux, TrivyAlma, TrivyCBLMariner, TrivyPhoton, TrivyRubySec, TrivyPhpSecurityAdvisories, TrivyNodejsSecurityWg, TrivyGHSA, TrivyGLAD, TrivyOSV, TrivyWolfi, TrivyChainguard, TrivyBitnamiVulndb, TrivyK8sVulnDB, TrivyGoVulnDB}
 | 
			
		||||
	default:
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
@@ -407,6 +463,87 @@ const (
 | 
			
		||||
	// Trivy is Trivy
 | 
			
		||||
	Trivy CveContentType = "trivy"
 | 
			
		||||
 | 
			
		||||
	// TrivyNVD is TrivyNVD
 | 
			
		||||
	TrivyNVD CveContentType = "trivy:nvd"
 | 
			
		||||
 | 
			
		||||
	// TrivyRedHat is TrivyRedHat
 | 
			
		||||
	TrivyRedHat CveContentType = "trivy:redhat"
 | 
			
		||||
 | 
			
		||||
	// TrivyRedHatOVAL is TrivyRedHatOVAL
 | 
			
		||||
	TrivyRedHatOVAL CveContentType = "trivy:redhat-oval"
 | 
			
		||||
 | 
			
		||||
	// TrivyDebian is TrivyDebian
 | 
			
		||||
	TrivyDebian CveContentType = "trivy:debian"
 | 
			
		||||
 | 
			
		||||
	// TrivyUbuntu is TrivyUbuntu
 | 
			
		||||
	TrivyUbuntu CveContentType = "trivy:ubuntu"
 | 
			
		||||
 | 
			
		||||
	// TrivyCentOS is TrivyCentOS
 | 
			
		||||
	TrivyCentOS CveContentType = "trivy:centos"
 | 
			
		||||
 | 
			
		||||
	// TrivyRocky is TrivyRocky
 | 
			
		||||
	TrivyRocky CveContentType = "trivy:rocky"
 | 
			
		||||
 | 
			
		||||
	// TrivyFedora is TrivyFedora
 | 
			
		||||
	TrivyFedora CveContentType = "trivy:fedora"
 | 
			
		||||
 | 
			
		||||
	// TrivyAmazon is TrivyAmazon
 | 
			
		||||
	TrivyAmazon CveContentType = "trivy:amazon"
 | 
			
		||||
 | 
			
		||||
	// TrivyOracleOVAL is TrivyOracle
 | 
			
		||||
	TrivyOracleOVAL CveContentType = "trivy:oracle-oval"
 | 
			
		||||
 | 
			
		||||
	// TrivySuseCVRF is TrivySuseCVRF
 | 
			
		||||
	TrivySuseCVRF CveContentType = "trivy:suse-cvrf"
 | 
			
		||||
 | 
			
		||||
	// TrivyAlpine is TrivyAlpine
 | 
			
		||||
	TrivyAlpine CveContentType = "trivy:alpine"
 | 
			
		||||
 | 
			
		||||
	// TrivyArchLinux is TrivyArchLinux
 | 
			
		||||
	TrivyArchLinux CveContentType = "trivy:arch-linux"
 | 
			
		||||
 | 
			
		||||
	// TrivyAlma is TrivyAlma
 | 
			
		||||
	TrivyAlma CveContentType = "trivy:alma"
 | 
			
		||||
 | 
			
		||||
	// TrivyCBLMariner is TrivyCBLMariner
 | 
			
		||||
	TrivyCBLMariner CveContentType = "trivy:cbl-mariner"
 | 
			
		||||
 | 
			
		||||
	// TrivyPhoton is TrivyPhoton
 | 
			
		||||
	TrivyPhoton CveContentType = "trivy:photon"
 | 
			
		||||
 | 
			
		||||
	// TrivyRubySec is TrivyRubySec
 | 
			
		||||
	TrivyRubySec CveContentType = "trivy:ruby-advisory-db"
 | 
			
		||||
 | 
			
		||||
	// TrivyPhpSecurityAdvisories is TrivyPhpSecurityAdvisories
 | 
			
		||||
	TrivyPhpSecurityAdvisories CveContentType = "trivy:php-security-advisories"
 | 
			
		||||
 | 
			
		||||
	// TrivyNodejsSecurityWg is TrivyNodejsSecurityWg
 | 
			
		||||
	TrivyNodejsSecurityWg CveContentType = "trivy:nodejs-security-wg"
 | 
			
		||||
 | 
			
		||||
	// TrivyGHSA is TrivyGHSA
 | 
			
		||||
	TrivyGHSA CveContentType = "trivy:ghsa"
 | 
			
		||||
 | 
			
		||||
	// TrivyGLAD is TrivyGLAD
 | 
			
		||||
	TrivyGLAD CveContentType = "trivy:glad"
 | 
			
		||||
 | 
			
		||||
	// TrivyOSV is TrivyOSV
 | 
			
		||||
	TrivyOSV CveContentType = "trivy:osv"
 | 
			
		||||
 | 
			
		||||
	// TrivyWolfi is TrivyWolfi
 | 
			
		||||
	TrivyWolfi CveContentType = "trivy:wolfi"
 | 
			
		||||
 | 
			
		||||
	// TrivyChainguard is TrivyChainguard
 | 
			
		||||
	TrivyChainguard CveContentType = "trivy:chainguard"
 | 
			
		||||
 | 
			
		||||
	// TrivyBitnamiVulndb is TrivyBitnamiVulndb
 | 
			
		||||
	TrivyBitnamiVulndb CveContentType = "trivy:bitnami"
 | 
			
		||||
 | 
			
		||||
	// TrivyK8sVulnDB is TrivyK8sVulnDB
 | 
			
		||||
	TrivyK8sVulnDB CveContentType = "trivy:k8s"
 | 
			
		||||
 | 
			
		||||
	// TrivyGoVulnDB is TrivyGoVulnDB
 | 
			
		||||
	TrivyGoVulnDB CveContentType = "trivy:govulndb"
 | 
			
		||||
 | 
			
		||||
	// GitHub is GitHub Security Alerts
 | 
			
		||||
	GitHub CveContentType = "github"
 | 
			
		||||
 | 
			
		||||
@@ -433,6 +570,33 @@ var AllCveContetTypes = CveContentTypes{
 | 
			
		||||
	SUSE,
 | 
			
		||||
	WpScan,
 | 
			
		||||
	Trivy,
 | 
			
		||||
	TrivyNVD,
 | 
			
		||||
	TrivyRedHat,
 | 
			
		||||
	TrivyRedHatOVAL,
 | 
			
		||||
	TrivyDebian,
 | 
			
		||||
	TrivyUbuntu,
 | 
			
		||||
	TrivyCentOS,
 | 
			
		||||
	TrivyRocky,
 | 
			
		||||
	TrivyFedora,
 | 
			
		||||
	TrivyAmazon,
 | 
			
		||||
	TrivyOracleOVAL,
 | 
			
		||||
	TrivySuseCVRF,
 | 
			
		||||
	TrivyAlpine,
 | 
			
		||||
	TrivyArchLinux,
 | 
			
		||||
	TrivyAlma,
 | 
			
		||||
	TrivyCBLMariner,
 | 
			
		||||
	TrivyPhoton,
 | 
			
		||||
	TrivyRubySec,
 | 
			
		||||
	TrivyPhpSecurityAdvisories,
 | 
			
		||||
	TrivyNodejsSecurityWg,
 | 
			
		||||
	TrivyGHSA,
 | 
			
		||||
	TrivyGLAD,
 | 
			
		||||
	TrivyOSV,
 | 
			
		||||
	TrivyWolfi,
 | 
			
		||||
	TrivyChainguard,
 | 
			
		||||
	TrivyBitnamiVulndb,
 | 
			
		||||
	TrivyK8sVulnDB,
 | 
			
		||||
	TrivyGoVulnDB,
 | 
			
		||||
	GitHub,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -82,6 +82,7 @@ type Package struct {
 | 
			
		||||
	NewRelease       string               `json:"newRelease"`
 | 
			
		||||
	Arch             string               `json:"arch"`
 | 
			
		||||
	Repository       string               `json:"repository"`
 | 
			
		||||
	ModularityLabel  string               `json:"modularitylabel"`
 | 
			
		||||
	Changelog        *Changelog           `json:"changelog,omitempty"`
 | 
			
		||||
	AffectedProcs    []AffectedProcess    `json:",omitempty"`
 | 
			
		||||
	NeedRestartProcs []NeedRestartProcess `json:",omitempty"`
 | 
			
		||||
 
 | 
			
		||||
@@ -417,7 +417,7 @@ func (v VulnInfo) Titles(lang, myFamily string) (values []CveContentStr) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	order := append(CveContentTypes{Trivy, Fortinet, Nvd}, GetCveContentTypes(myFamily)...)
 | 
			
		||||
	order := append(GetCveContentTypes(string(Trivy)), append(CveContentTypes{Fortinet, Nvd}, GetCveContentTypes(myFamily)...)...)
 | 
			
		||||
	order = append(order, AllCveContetTypes.Except(append(order, Jvn)...)...)
 | 
			
		||||
	for _, ctype := range order {
 | 
			
		||||
		if conts, found := v.CveContents[ctype]; found {
 | 
			
		||||
@@ -464,7 +464,7 @@ func (v VulnInfo) Summaries(lang, myFamily string) (values []CveContentStr) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	order := append(append(CveContentTypes{Trivy}, GetCveContentTypes(myFamily)...), Fortinet, Nvd, GitHub)
 | 
			
		||||
	order := append(append(GetCveContentTypes(string(Trivy)), GetCveContentTypes(myFamily)...), Fortinet, Nvd, GitHub)
 | 
			
		||||
	order = append(order, AllCveContetTypes.Except(append(order, Jvn)...)...)
 | 
			
		||||
	for _, ctype := range order {
 | 
			
		||||
		if conts, found := v.CveContents[ctype]; found {
 | 
			
		||||
@@ -510,7 +510,7 @@ func (v VulnInfo) Summaries(lang, myFamily string) (values []CveContentStr) {
 | 
			
		||||
 | 
			
		||||
// Cvss2Scores returns CVSS V2 Scores
 | 
			
		||||
func (v VulnInfo) Cvss2Scores() (values []CveContentCvss) {
 | 
			
		||||
	order := []CveContentType{RedHatAPI, RedHat, Nvd, Jvn}
 | 
			
		||||
	order := append([]CveContentType{RedHatAPI, RedHat, Nvd, Jvn}, GetCveContentTypes(string(Trivy))...)
 | 
			
		||||
	for _, ctype := range order {
 | 
			
		||||
		if conts, found := v.CveContents[ctype]; found {
 | 
			
		||||
			for _, cont := range conts {
 | 
			
		||||
@@ -535,7 +535,7 @@ func (v VulnInfo) Cvss2Scores() (values []CveContentCvss) {
 | 
			
		||||
 | 
			
		||||
// Cvss3Scores returns CVSS V3 Score
 | 
			
		||||
func (v VulnInfo) Cvss3Scores() (values []CveContentCvss) {
 | 
			
		||||
	order := []CveContentType{RedHatAPI, RedHat, SUSE, Microsoft, Fortinet, Nvd, Jvn}
 | 
			
		||||
	order := append([]CveContentType{RedHatAPI, RedHat, SUSE, Microsoft, Fortinet, Nvd, Jvn}, GetCveContentTypes(string(Trivy))...)
 | 
			
		||||
	for _, ctype := range order {
 | 
			
		||||
		if conts, found := v.CveContents[ctype]; found {
 | 
			
		||||
			for _, cont := range conts {
 | 
			
		||||
@@ -556,19 +556,33 @@ func (v VulnInfo) Cvss3Scores() (values []CveContentCvss) {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, ctype := range []CveContentType{Debian, DebianSecurityTracker, Ubuntu, UbuntuAPI, Amazon, Trivy, GitHub, WpScan} {
 | 
			
		||||
	for _, ctype := range append([]CveContentType{Debian, DebianSecurityTracker, Ubuntu, UbuntuAPI, Amazon, GitHub, WpScan}, GetCveContentTypes(string(Trivy))...) {
 | 
			
		||||
		if conts, found := v.CveContents[ctype]; found {
 | 
			
		||||
			for _, cont := range conts {
 | 
			
		||||
				if cont.Cvss3Severity != "" {
 | 
			
		||||
					values = append(values, CveContentCvss{
 | 
			
		||||
						Type: ctype,
 | 
			
		||||
						Value: Cvss{
 | 
			
		||||
							Type:                 CVSS3,
 | 
			
		||||
							Score:                severityToCvssScoreRoughly(cont.Cvss3Severity),
 | 
			
		||||
							CalculatedBySeverity: true,
 | 
			
		||||
							Severity:             strings.ToUpper(cont.Cvss3Severity),
 | 
			
		||||
						},
 | 
			
		||||
					})
 | 
			
		||||
					switch ctype {
 | 
			
		||||
					case DebianSecurityTracker: // Multiple Severities(sorted) may be listed, and the largest one is used.
 | 
			
		||||
						ss := strings.Split(cont.Cvss3Severity, "|")
 | 
			
		||||
						values = append(values, CveContentCvss{
 | 
			
		||||
							Type: ctype,
 | 
			
		||||
							Value: Cvss{
 | 
			
		||||
								Type:                 CVSS3,
 | 
			
		||||
								Score:                severityToCvssScoreRoughly(ss[len(ss)-1]),
 | 
			
		||||
								CalculatedBySeverity: true,
 | 
			
		||||
								Severity:             strings.ToUpper(cont.Cvss3Severity),
 | 
			
		||||
							},
 | 
			
		||||
						})
 | 
			
		||||
					default:
 | 
			
		||||
						values = append(values, CveContentCvss{
 | 
			
		||||
							Type: ctype,
 | 
			
		||||
							Value: Cvss{
 | 
			
		||||
								Type:                 CVSS3,
 | 
			
		||||
								Score:                severityToCvssScoreRoughly(cont.Cvss3Severity),
 | 
			
		||||
								CalculatedBySeverity: true,
 | 
			
		||||
								Severity:             strings.ToUpper(cont.Cvss3Severity),
 | 
			
		||||
							},
 | 
			
		||||
						})
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -698,6 +698,26 @@ func TestCvss3Scores(t *testing.T) {
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		// [2] Multiple Severities in Debian Security Tracker
 | 
			
		||||
		{
 | 
			
		||||
			in: VulnInfo{
 | 
			
		||||
				CveContents: CveContents{
 | 
			
		||||
					DebianSecurityTracker: []CveContent{{
 | 
			
		||||
						Type:          DebianSecurityTracker,
 | 
			
		||||
						Cvss3Severity: "not yet assigned|low",
 | 
			
		||||
					}},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			out: []CveContentCvss{{
 | 
			
		||||
				Type: DebianSecurityTracker,
 | 
			
		||||
				Value: Cvss{
 | 
			
		||||
					Type:                 CVSS3,
 | 
			
		||||
					Score:                3.9,
 | 
			
		||||
					CalculatedBySeverity: true,
 | 
			
		||||
					Severity:             "NOT YET ASSIGNED|LOW",
 | 
			
		||||
				},
 | 
			
		||||
			}},
 | 
			
		||||
		},
 | 
			
		||||
		// Empty
 | 
			
		||||
		{
 | 
			
		||||
			in:  VulnInfo{},
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								oval/util.go
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								oval/util.go
									
									
									
									
									
								
							@@ -154,6 +154,7 @@ func getDefsByPackNameViaHTTP(r *models.ScanResult, url string) (relatedDefs ova
 | 
			
		||||
				isSrcPack:         false,
 | 
			
		||||
				arch:              pack.Arch,
 | 
			
		||||
				repository:        pack.Repository,
 | 
			
		||||
				modularityLabel:   pack.ModularityLabel,
 | 
			
		||||
			}
 | 
			
		||||
			if ovalFamily == constant.Amazon && ovalRelease == "2" && req.repository == "" {
 | 
			
		||||
				req.repository = "amzn2-core"
 | 
			
		||||
@@ -321,6 +322,7 @@ func getDefsByPackNameFromOvalDB(r *models.ScanResult, driver ovaldb.DB) (relate
 | 
			
		||||
			newVersionRelease: pack.FormatNewVer(),
 | 
			
		||||
			arch:              pack.Arch,
 | 
			
		||||
			repository:        pack.Repository,
 | 
			
		||||
			modularityLabel:   pack.ModularityLabel,
 | 
			
		||||
			isSrcPack:         false,
 | 
			
		||||
		}
 | 
			
		||||
		if ovalFamily == constant.Amazon && ovalRelease == "2" && req.repository == "" {
 | 
			
		||||
@@ -410,25 +412,39 @@ func isOvalDefAffected(def ovalmodels.Definition, req request, family, release s
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// There is a modular package and a non-modular package with the same name. (e.g. fedora 35 community-mysql)
 | 
			
		||||
		var modularityNameStreamLabel string
 | 
			
		||||
		var modularityLabel string
 | 
			
		||||
		if ovalPack.ModularityLabel == "" {
 | 
			
		||||
			if modularVersionPattern.MatchString(req.versionRelease) {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			// expect ovalPack.ModularityLabel e.g. RedHat: nginx:1.16, Fedora: mysql:8.0:3520211031142409:f27b74a8
 | 
			
		||||
			if !modularVersionPattern.MatchString(req.versionRelease) {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// expect ovalPack.ModularityLabel e.g. RedHat: nginx:1.16, Fedora: mysql:8.0:3520211031142409:f27b74a8
 | 
			
		||||
			ss := strings.Split(ovalPack.ModularityLabel, ":")
 | 
			
		||||
			if len(ss) < 2 {
 | 
			
		||||
				logging.Log.Warnf("Invalid modularitylabel format in oval package. Maybe it is necessary to fix modularitylabel of goval-dictionary. expected: ${name}:${stream}(:${version}:${context}:${arch}), actual: %s", ovalPack.ModularityLabel)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			modularityNameStreamLabel = fmt.Sprintf("%s:%s", ss[0], ss[1])
 | 
			
		||||
			if !slices.Contains(enabledMods, modularityNameStreamLabel) {
 | 
			
		||||
				continue
 | 
			
		||||
			modularityLabel = fmt.Sprintf("%s:%s", ss[0], ss[1])
 | 
			
		||||
 | 
			
		||||
			if req.modularityLabel != "" {
 | 
			
		||||
				ss := strings.Split(req.modularityLabel, ":")
 | 
			
		||||
				if len(ss) < 2 {
 | 
			
		||||
					logging.Log.Warnf("Invalid modularitylabel format in request package. expected: ${name}:${stream}(:${version}:${context}:${arch}), actual: %s", req.modularityLabel)
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
				reqModularityLabel := fmt.Sprintf("%s:%s", ss[0], ss[1])
 | 
			
		||||
 | 
			
		||||
				if reqModularityLabel != modularityLabel {
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				if !slices.Contains(enabledMods, modularityLabel) {
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -436,8 +452,8 @@ func isOvalDefAffected(def ovalmodels.Definition, req request, family, release s
 | 
			
		||||
			switch family {
 | 
			
		||||
			case constant.RedHat, constant.CentOS, constant.Alma, constant.Rocky:
 | 
			
		||||
				n := req.packName
 | 
			
		||||
				if modularityNameStreamLabel != "" {
 | 
			
		||||
					n = fmt.Sprintf("%s/%s", modularityNameStreamLabel, req.packName)
 | 
			
		||||
				if modularityLabel != "" {
 | 
			
		||||
					n = fmt.Sprintf("%s/%s", modularityLabel, req.packName)
 | 
			
		||||
				}
 | 
			
		||||
				for _, r := range def.Advisory.AffectedResolution {
 | 
			
		||||
					if slices.ContainsFunc(r.Components, func(c ovalmodels.Component) bool { return c.Component == n }) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1573,6 +1573,29 @@ func TestIsOvalDefAffected(t *testing.T) {
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
			fixedIn:     "1.16.1-1.module+el8.3.0+8844+e5e7039f.1",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
				family: constant.RedHat,
 | 
			
		||||
				def: ovalmodels.Definition{
 | 
			
		||||
					AffectedPacks: []ovalmodels.Package{
 | 
			
		||||
						{
 | 
			
		||||
							Name:            "nginx",
 | 
			
		||||
							Version:         "1.16.1-1.module+el8.3.0+8844+e5e7039f.1",
 | 
			
		||||
							NotFixedYet:     false,
 | 
			
		||||
							ModularityLabel: "nginx:1.16",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				req: request{
 | 
			
		||||
					packName:        "nginx",
 | 
			
		||||
					versionRelease:  "1.16.0-1.module+el8.3.0+8844+e5e7039f.1",
 | 
			
		||||
					modularityLabel: "nginx:1.16:version:context",
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			affected:    true,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
			fixedIn:     "1.16.1-1.module+el8.3.0+8844+e5e7039f.1",
 | 
			
		||||
		},
 | 
			
		||||
		// dnf module 2
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
@@ -1598,6 +1621,28 @@ func TestIsOvalDefAffected(t *testing.T) {
 | 
			
		||||
			affected:    false,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
				family: constant.RedHat,
 | 
			
		||||
				def: ovalmodels.Definition{
 | 
			
		||||
					AffectedPacks: []ovalmodels.Package{
 | 
			
		||||
						{
 | 
			
		||||
							Name:            "nginx",
 | 
			
		||||
							Version:         "1.16.1-1.module+el8.3.0+8844+e5e7039f.1",
 | 
			
		||||
							NotFixedYet:     false,
 | 
			
		||||
							ModularityLabel: "nginx:1.16",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				req: request{
 | 
			
		||||
					packName:        "nginx",
 | 
			
		||||
					versionRelease:  "1.16.2-1.module+el8.3.0+8844+e5e7039f.1",
 | 
			
		||||
					modularityLabel: "nginx:1.16:version:context",
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			affected:    false,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
		},
 | 
			
		||||
		// dnf module 3
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
@@ -1623,6 +1668,28 @@ func TestIsOvalDefAffected(t *testing.T) {
 | 
			
		||||
			affected:    false,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
				family: constant.RedHat,
 | 
			
		||||
				def: ovalmodels.Definition{
 | 
			
		||||
					AffectedPacks: []ovalmodels.Package{
 | 
			
		||||
						{
 | 
			
		||||
							Name:            "nginx",
 | 
			
		||||
							Version:         "1.16.1-1.module+el8.3.0+8844+e5e7039f.1",
 | 
			
		||||
							NotFixedYet:     false,
 | 
			
		||||
							ModularityLabel: "nginx:1.16",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				req: request{
 | 
			
		||||
					packName:        "nginx",
 | 
			
		||||
					versionRelease:  "1.16.0-1.module+el8.3.0+8844+e5e7039f.1",
 | 
			
		||||
					modularityLabel: "nginx:1.14:version:context",
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			affected:    false,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
		},
 | 
			
		||||
		// dnf module 4 (long modularitylabel)
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
@@ -1651,6 +1718,31 @@ func TestIsOvalDefAffected(t *testing.T) {
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
			fixedIn:     "0:8.0.27-1.module_f35+13269+c9322734",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
				family: constant.Fedora,
 | 
			
		||||
				def: ovalmodels.Definition{
 | 
			
		||||
					AffectedPacks: []ovalmodels.Package{
 | 
			
		||||
						{
 | 
			
		||||
							Name:            "community-mysql",
 | 
			
		||||
							Version:         "0:8.0.27-1.module_f35+13269+c9322734",
 | 
			
		||||
							Arch:            "x86_64",
 | 
			
		||||
							NotFixedYet:     false,
 | 
			
		||||
							ModularityLabel: "mysql:8.0:3520211031142409:f27b74a8",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				req: request{
 | 
			
		||||
					packName:        "community-mysql",
 | 
			
		||||
					arch:            "x86_64",
 | 
			
		||||
					versionRelease:  "8.0.26-1.module_f35+12627+b26747dd",
 | 
			
		||||
					modularityLabel: "mysql:8.0:version:context",
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			affected:    true,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
			fixedIn:     "0:8.0.27-1.module_f35+13269+c9322734",
 | 
			
		||||
		},
 | 
			
		||||
		// dnf module 5 (req is non-modular package, oval is modular package)
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
@@ -1678,6 +1770,29 @@ func TestIsOvalDefAffected(t *testing.T) {
 | 
			
		||||
			affected:    false,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
				family: constant.Fedora,
 | 
			
		||||
				def: ovalmodels.Definition{
 | 
			
		||||
					AffectedPacks: []ovalmodels.Package{
 | 
			
		||||
						{
 | 
			
		||||
							Name:            "community-mysql",
 | 
			
		||||
							Version:         "0:8.0.27-1.module_f35+13269+c9322734",
 | 
			
		||||
							Arch:            "x86_64",
 | 
			
		||||
							NotFixedYet:     false,
 | 
			
		||||
							ModularityLabel: "mysql:8.0:3520211031142409:f27b74a8",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				req: request{
 | 
			
		||||
					packName:       "community-mysql",
 | 
			
		||||
					arch:           "x86_64",
 | 
			
		||||
					versionRelease: "8.0.26-1.fc35",
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			affected:    false,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
		},
 | 
			
		||||
		// dnf module 6 (req is modular package, oval is non-modular package)
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
@@ -1705,6 +1820,30 @@ func TestIsOvalDefAffected(t *testing.T) {
 | 
			
		||||
			affected:    false,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
				family: constant.Fedora,
 | 
			
		||||
				def: ovalmodels.Definition{
 | 
			
		||||
					AffectedPacks: []ovalmodels.Package{
 | 
			
		||||
						{
 | 
			
		||||
							Name:            "community-mysql",
 | 
			
		||||
							Version:         "0:8.0.27-1.fc35",
 | 
			
		||||
							Arch:            "x86_64",
 | 
			
		||||
							NotFixedYet:     false,
 | 
			
		||||
							ModularityLabel: "",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				req: request{
 | 
			
		||||
					packName:        "community-mysql",
 | 
			
		||||
					arch:            "x86_64",
 | 
			
		||||
					versionRelease:  "8.0.26-1.module_f35+12627+b26747dd",
 | 
			
		||||
					modularityLabel: "mysql:8.0:3520211031142409:f27b74a8",
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			affected:    false,
 | 
			
		||||
			notFixedYet: false,
 | 
			
		||||
		},
 | 
			
		||||
		// .ksplice1.
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
@@ -2146,6 +2285,43 @@ func TestIsOvalDefAffected(t *testing.T) {
 | 
			
		||||
			fixState:    "Affected",
 | 
			
		||||
			fixedIn:     "",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			in: in{
 | 
			
		||||
				family:  constant.RedHat,
 | 
			
		||||
				release: "8",
 | 
			
		||||
				def: ovalmodels.Definition{
 | 
			
		||||
					Advisory: ovalmodels.Advisory{
 | 
			
		||||
						AffectedResolution: []ovalmodels.Resolution{
 | 
			
		||||
							{
 | 
			
		||||
								State: "Affected",
 | 
			
		||||
								Components: []ovalmodels.Component{
 | 
			
		||||
									{
 | 
			
		||||
										Component: "nodejs:20/nodejs",
 | 
			
		||||
									},
 | 
			
		||||
								},
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					AffectedPacks: []ovalmodels.Package{
 | 
			
		||||
						{
 | 
			
		||||
							Name:            "nodejs",
 | 
			
		||||
							NotFixedYet:     true,
 | 
			
		||||
							ModularityLabel: "nodejs:20",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				req: request{
 | 
			
		||||
					packName:        "nodejs",
 | 
			
		||||
					versionRelease:  "1:20.11.1-1.module+el8.9.0+21380+12032667",
 | 
			
		||||
					modularityLabel: "nodejs:20:version:context",
 | 
			
		||||
					arch:            "x86_64",
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			affected:    true,
 | 
			
		||||
			notFixedYet: true,
 | 
			
		||||
			fixState:    "Affected",
 | 
			
		||||
			fixedIn:     "",
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i, tt := range tests {
 | 
			
		||||
 
 | 
			
		||||
@@ -92,9 +92,6 @@ type osPackages struct {
 | 
			
		||||
	// installed source packages (Debian based only)
 | 
			
		||||
	SrcPackages models.SrcPackages
 | 
			
		||||
 | 
			
		||||
	// enabled dnf modules or packages
 | 
			
		||||
	EnabledDnfModules []string
 | 
			
		||||
 | 
			
		||||
	// Detected Vulnerabilities Key: CVE-ID
 | 
			
		||||
	VulnInfos models.VulnInfos
 | 
			
		||||
 | 
			
		||||
@@ -545,7 +542,6 @@ func (l *base) convertToModel() models.ScanResult {
 | 
			
		||||
		RunningKernel:     l.Kernel,
 | 
			
		||||
		Packages:          l.Packages,
 | 
			
		||||
		SrcPackages:       l.SrcPackages,
 | 
			
		||||
		EnabledDnfModules: l.EnabledDnfModules,
 | 
			
		||||
		WordPressPackages: l.WordPress,
 | 
			
		||||
		LibraryScanners:   l.LibraryScanners,
 | 
			
		||||
		WindowsKB:         l.windowsKB,
 | 
			
		||||
@@ -626,7 +622,7 @@ func (l *base) parseSystemctlStatus(stdout string) string {
 | 
			
		||||
	return ss[1]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var trivyLoggerInit = sync.OnceValue(func() error { return tlog.InitLogger(config.Conf.Debug, config.Conf.Quiet) })
 | 
			
		||||
var trivyLoggerInit = sync.OnceFunc(func() { tlog.InitLogger(config.Conf.Debug, config.Conf.Quiet) })
 | 
			
		||||
 | 
			
		||||
func (l *base) scanLibraries() (err error) {
 | 
			
		||||
	if len(l.LibraryScanners) != 0 {
 | 
			
		||||
@@ -640,9 +636,7 @@ func (l *base) scanLibraries() (err error) {
 | 
			
		||||
 | 
			
		||||
	l.log.Info("Scanning Language-specific Packages...")
 | 
			
		||||
 | 
			
		||||
	if err := trivyLoggerInit(); err != nil {
 | 
			
		||||
		return xerrors.Errorf("Failed to init trivy logger. err: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	trivyLoggerInit()
 | 
			
		||||
 | 
			
		||||
	found := map[string]bool{}
 | 
			
		||||
	detectFiles := l.ServerInfo.Lockfiles
 | 
			
		||||
 
 | 
			
		||||
@@ -422,19 +422,6 @@ func (o *redhatBase) scanPackages() (err error) {
 | 
			
		||||
		return xerrors.Errorf("Failed to scan installed packages: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !(o.getServerInfo().Mode.IsOffline() || (o.Distro.Family == constant.RedHat && o.getServerInfo().Mode.IsFast())) {
 | 
			
		||||
		if err := o.yumMakeCache(); err != nil {
 | 
			
		||||
			err = xerrors.Errorf("Failed to make repository cache: %w", err)
 | 
			
		||||
			o.log.Warnf("err: %+v", err)
 | 
			
		||||
			o.warns = append(o.warns, err)
 | 
			
		||||
			// Only warning this error
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if o.EnabledDnfModules, err = o.detectEnabledDnfModules(); err != nil {
 | 
			
		||||
		return xerrors.Errorf("Failed to detect installed dnf modules: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fn := func(pkgName string) execResult { return o.exec(fmt.Sprintf("rpm -q --last %s", pkgName), noSudo) }
 | 
			
		||||
	o.Kernel.RebootRequired, err = o.rebootRequired(fn)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -520,6 +507,7 @@ func (o *redhatBase) parseInstalledPackages(stdout string) (models.Packages, mod
 | 
			
		||||
	latestKernelRelease := ver.NewVersion("")
 | 
			
		||||
 | 
			
		||||
	// openssl 0 1.0.1e	30.el6.11 x86_64
 | 
			
		||||
	// community-mysql-common 0 8.0.26 1.module_f35+12627+b26747dd x86_64 mysql:8.0:3520210817160118:f27b74a8
 | 
			
		||||
	lines := strings.Split(stdout, "\n")
 | 
			
		||||
	for _, line := range lines {
 | 
			
		||||
		if trimmed := strings.TrimSpace(line); trimmed == "" {
 | 
			
		||||
@@ -579,9 +567,8 @@ func (o *redhatBase) parseInstalledPackages(stdout string) (models.Packages, mod
 | 
			
		||||
 | 
			
		||||
func (o *redhatBase) parseInstalledPackagesLine(line string) (*models.Package, error) {
 | 
			
		||||
	fields := strings.Fields(line)
 | 
			
		||||
	if len(fields) != 5 {
 | 
			
		||||
		return nil,
 | 
			
		||||
			xerrors.Errorf("Failed to parse package line: %s", line)
 | 
			
		||||
	if len(fields) < 5 {
 | 
			
		||||
		return nil, xerrors.Errorf("Failed to parse package line: %s", line)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ver := ""
 | 
			
		||||
@@ -592,11 +579,17 @@ func (o *redhatBase) parseInstalledPackagesLine(line string) (*models.Package, e
 | 
			
		||||
		ver = fmt.Sprintf("%s:%s", epoch, fields[2])
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	modularitylabel := ""
 | 
			
		||||
	if len(fields) == 6 && fields[5] != "(none)" {
 | 
			
		||||
		modularitylabel = fields[5]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &models.Package{
 | 
			
		||||
		Name:    fields[0],
 | 
			
		||||
		Version: ver,
 | 
			
		||||
		Release: fields[3],
 | 
			
		||||
		Arch:    fields[4],
 | 
			
		||||
		Name:            fields[0],
 | 
			
		||||
		Version:         ver,
 | 
			
		||||
		Release:         fields[3],
 | 
			
		||||
		Arch:            fields[4],
 | 
			
		||||
		ModularityLabel: modularitylabel,
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -887,6 +880,7 @@ func (o *redhatBase) getOwnerPkgs(paths []string) (names []string, _ error) {
 | 
			
		||||
func (o *redhatBase) rpmQa() string {
 | 
			
		||||
	const old = `rpm -qa --queryformat "%{NAME} %{EPOCH} %{VERSION} %{RELEASE} %{ARCH}\n"`
 | 
			
		||||
	const newer = `rpm -qa --queryformat "%{NAME} %{EPOCHNUM} %{VERSION} %{RELEASE} %{ARCH}\n"`
 | 
			
		||||
	const modularity = `rpm -qa --queryformat "%{NAME} %{EPOCHNUM} %{VERSION} %{RELEASE} %{ARCH} %{MODULARITYLABEL}\n"`
 | 
			
		||||
	switch o.Distro.Family {
 | 
			
		||||
	case constant.OpenSUSE:
 | 
			
		||||
		if o.Distro.Release == "tumbleweed" {
 | 
			
		||||
@@ -900,17 +894,34 @@ func (o *redhatBase) rpmQa() string {
 | 
			
		||||
			return old
 | 
			
		||||
		}
 | 
			
		||||
		return newer
 | 
			
		||||
	case constant.Fedora:
 | 
			
		||||
		if v, _ := o.Distro.MajorVersion(); v < 30 {
 | 
			
		||||
			return newer
 | 
			
		||||
		}
 | 
			
		||||
		return modularity
 | 
			
		||||
	case constant.Amazon:
 | 
			
		||||
		switch v, _ := o.Distro.MajorVersion(); v {
 | 
			
		||||
		case 1, 2:
 | 
			
		||||
			return newer
 | 
			
		||||
		default:
 | 
			
		||||
			return modularity
 | 
			
		||||
		}
 | 
			
		||||
	default:
 | 
			
		||||
		if v, _ := o.Distro.MajorVersion(); v < 6 {
 | 
			
		||||
		v, _ := o.Distro.MajorVersion()
 | 
			
		||||
		if v < 6 {
 | 
			
		||||
			return old
 | 
			
		||||
		}
 | 
			
		||||
		if v >= 8 {
 | 
			
		||||
			return modularity
 | 
			
		||||
		}
 | 
			
		||||
		return newer
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (o *redhatBase) rpmQf() string {
 | 
			
		||||
	const old = `rpm -qf --queryformat "%{NAME} %{EPOCH} %{VERSION} %{RELEASE} %{ARCH}\n" `
 | 
			
		||||
	const newer = `rpm -qf --queryformat "%{NAME} %{EPOCHNUM} %{VERSION} %{RELEASE} %{ARCH}\n" `
 | 
			
		||||
	const newer = `rpm -qf --queryformat "%{NAME} %{EPOCHNUM} %{VERSION} %{RELEASE} %{ARCH}\n"`
 | 
			
		||||
	const modularity = `rpm -qf --queryformat "%{NAME} %{EPOCHNUM} %{VERSION} %{RELEASE} %{ARCH} %{MODULARITYLABEL}\n"`
 | 
			
		||||
	switch o.Distro.Family {
 | 
			
		||||
	case constant.OpenSUSE:
 | 
			
		||||
		if o.Distro.Release == "tumbleweed" {
 | 
			
		||||
@@ -924,48 +935,26 @@ func (o *redhatBase) rpmQf() string {
 | 
			
		||||
			return old
 | 
			
		||||
		}
 | 
			
		||||
		return newer
 | 
			
		||||
	case constant.Fedora:
 | 
			
		||||
		if v, _ := o.Distro.MajorVersion(); v < 30 {
 | 
			
		||||
			return newer
 | 
			
		||||
		}
 | 
			
		||||
		return modularity
 | 
			
		||||
	case constant.Amazon:
 | 
			
		||||
		switch v, _ := o.Distro.MajorVersion(); v {
 | 
			
		||||
		case 1, 2:
 | 
			
		||||
			return newer
 | 
			
		||||
		default:
 | 
			
		||||
			return modularity
 | 
			
		||||
		}
 | 
			
		||||
	default:
 | 
			
		||||
		if v, _ := o.Distro.MajorVersion(); v < 6 {
 | 
			
		||||
		v, _ := o.Distro.MajorVersion()
 | 
			
		||||
		if v < 6 {
 | 
			
		||||
			return old
 | 
			
		||||
		}
 | 
			
		||||
		if v >= 8 {
 | 
			
		||||
			return modularity
 | 
			
		||||
		}
 | 
			
		||||
		return newer
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (o *redhatBase) detectEnabledDnfModules() ([]string, error) {
 | 
			
		||||
	switch o.Distro.Family {
 | 
			
		||||
	case constant.RedHat, constant.CentOS, constant.Alma, constant.Rocky, constant.Fedora:
 | 
			
		||||
		//TODO OracleLinux
 | 
			
		||||
	default:
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
	if v, _ := o.Distro.MajorVersion(); v < 8 {
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmd := `dnf --nogpgcheck --cacheonly --color=never --quiet module list --enabled`
 | 
			
		||||
	r := o.exec(util.PrependProxyEnv(cmd), noSudo)
 | 
			
		||||
	if !r.isSuccess() {
 | 
			
		||||
		if strings.Contains(r.Stdout, "Cache-only enabled but no cache") {
 | 
			
		||||
			return nil, xerrors.Errorf("sudo yum check-update to make local cache before scanning: %s", r)
 | 
			
		||||
		}
 | 
			
		||||
		return nil, xerrors.Errorf("Failed to dnf module list: %s", r)
 | 
			
		||||
	}
 | 
			
		||||
	return o.parseDnfModuleList(r.Stdout)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (o *redhatBase) parseDnfModuleList(stdout string) (labels []string, err error) {
 | 
			
		||||
	scanner := bufio.NewScanner(strings.NewReader(stdout))
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		line := scanner.Text()
 | 
			
		||||
		if strings.HasPrefix(line, "Hint:") || !strings.Contains(line, "[i]") {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		ss := strings.Fields(line)
 | 
			
		||||
		if len(ss) < 2 {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		labels = append(labels, fmt.Sprintf("%s:%s", ss[0], ss[1]))
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -223,6 +223,26 @@ func TestParseInstalledPackagesLine(t *testing.T) {
 | 
			
		||||
			},
 | 
			
		||||
			false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"community-mysql 0 8.0.26 1.module_f35+12627+b26747dd x86_64 mysql:8.0:3520210817160118:f27b74a8",
 | 
			
		||||
			models.Package{
 | 
			
		||||
				Name:            "community-mysql",
 | 
			
		||||
				Version:         "8.0.26",
 | 
			
		||||
				Release:         "1.module_f35+12627+b26747dd",
 | 
			
		||||
				ModularityLabel: "mysql:8.0:3520210817160118:f27b74a8",
 | 
			
		||||
			},
 | 
			
		||||
			false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"dnf-utils 0 4.0.24 1.fc35 noarch (none)",
 | 
			
		||||
			models.Package{
 | 
			
		||||
				Name:            "dnf-utils",
 | 
			
		||||
				Version:         "4.0.24",
 | 
			
		||||
				Release:         "1.fc35",
 | 
			
		||||
				ModularityLabel: "",
 | 
			
		||||
			},
 | 
			
		||||
			false,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i, tt := range packagetests {
 | 
			
		||||
@@ -242,6 +262,9 @@ func TestParseInstalledPackagesLine(t *testing.T) {
 | 
			
		||||
		if p.Release != tt.pack.Release {
 | 
			
		||||
			t.Errorf("release: expected %s, actual %s", tt.pack.Release, p.Release)
 | 
			
		||||
		}
 | 
			
		||||
		if p.ModularityLabel != tt.pack.ModularityLabel {
 | 
			
		||||
			t.Errorf("modularitylabel: expected %s, actual %s", tt.pack.ModularityLabel, p.ModularityLabel)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -525,47 +548,6 @@ func TestParseNeedsRestarting(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Test_redhatBase_parseDnfModuleList(t *testing.T) {
 | 
			
		||||
	type args struct {
 | 
			
		||||
		stdout string
 | 
			
		||||
	}
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		name       string
 | 
			
		||||
		args       args
 | 
			
		||||
		wantLabels []string
 | 
			
		||||
		wantErr    bool
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			name: "Success",
 | 
			
		||||
			args: args{
 | 
			
		||||
				stdout: `Red Hat Enterprise Linux 8 for x86_64 - AppStream from RHUI (RPMs)
 | 
			
		||||
Name                                     Stream                                         Profiles                                          Summary
 | 
			
		||||
virt                 rhel [d][e] common [d]                               Virtualization module
 | 
			
		||||
nginx                                    1.14 [d][e]                                    common [d] [i]                                    nginx webserver
 | 
			
		||||
 | 
			
		||||
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled`,
 | 
			
		||||
			},
 | 
			
		||||
			wantLabels: []string{
 | 
			
		||||
				"nginx:1.14",
 | 
			
		||||
			},
 | 
			
		||||
			wantErr: false,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	for _, tt := range tests {
 | 
			
		||||
		t.Run(tt.name, func(t *testing.T) {
 | 
			
		||||
			o := &redhatBase{}
 | 
			
		||||
			gotLabels, err := o.parseDnfModuleList(tt.args.stdout)
 | 
			
		||||
			if (err != nil) != tt.wantErr {
 | 
			
		||||
				t.Errorf("redhatBase.parseDnfModuleList() error = %v, wantErr %v", err, tt.wantErr)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			if !reflect.DeepEqual(gotLabels, tt.wantLabels) {
 | 
			
		||||
				t.Errorf("redhatBase.parseDnfModuleList() = %v, want %v", gotLabels, tt.wantLabels)
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Test_redhatBase_parseRpmQfLine(t *testing.T) {
 | 
			
		||||
	type fields struct {
 | 
			
		||||
		base base
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,6 @@ import (
 | 
			
		||||
	"github.com/aquasecurity/trivy/pkg/log"
 | 
			
		||||
	xio "github.com/aquasecurity/trivy/pkg/x/io"
 | 
			
		||||
	"github.com/samber/lo"
 | 
			
		||||
	"go.uber.org/zap"
 | 
			
		||||
	"golang.org/x/xerrors"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -99,7 +98,7 @@ func (p *parser) parse(r xio.ReadSeekerAt) ([]jarLibrary, error) {
 | 
			
		||||
// The least element contains file path and SHA1 digest, they can be used at detect phase to
 | 
			
		||||
// determine actual name and version.
 | 
			
		||||
func (p *parser) parseArtifact(filePath string, size int64, r xio.ReadSeekerAt) ([]jarLibrary, error) {
 | 
			
		||||
	log.Logger.Debugw("Parsing Java artifacts...", zap.String("file", filePath))
 | 
			
		||||
	log.Debug("Parsing Java artifacts...", log.String("file", filePath))
 | 
			
		||||
 | 
			
		||||
	sha1, err := digest.CalcSHA1(r)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -140,7 +139,7 @@ func (p *parser) parseArtifact(filePath string, size int64, r xio.ReadSeekerAt)
 | 
			
		||||
		case isArtifact(fileInJar.Name):
 | 
			
		||||
			innerLibs, err := p.parseInnerJar(fileInJar, filePath) //TODO process inner deps
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Logger.Debugf("Failed to parse %s. err: %s", fileInJar.Name, err)
 | 
			
		||||
				log.Debugf("Failed to parse %s. err: %s", fileInJar.Name, err)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			libs = append(libs, innerLibs...)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								tui/tui.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								tui/tui.go
									
									
									
									
									
								
							@@ -945,10 +945,13 @@ func detailLines() (string, error) {
 | 
			
		||||
			refsMap[ref.Link] = ref
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if conts, found := vinfo.CveContents[models.Trivy]; found {
 | 
			
		||||
		for _, cont := range conts {
 | 
			
		||||
			for _, ref := range cont.References {
 | 
			
		||||
				refsMap[ref.Link] = ref
 | 
			
		||||
 | 
			
		||||
	for _, ctype := range models.GetCveContentTypes(string(models.Trivy)) {
 | 
			
		||||
		if conts, found := vinfo.CveContents[ctype]; found {
 | 
			
		||||
			for _, cont := range conts {
 | 
			
		||||
				for _, ref := range cont.References {
 | 
			
		||||
					refsMap[ref.Link] = ref
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user