3838from vulnerabilities .data_source import DataSource
3939from vulnerabilities .data_source import DataSourceConfiguration
4040from vulnerabilities .data_source import Reference
41-
41+ from vulnerabilities . data_source import VulnerabilitySeverity
4242from vulnerabilities .package_managers import MavenVersionAPI
4343from vulnerabilities .package_managers import NugetVersionAPI
4444from vulnerabilities .package_managers import ComposerVersionAPI
4545from vulnerabilities .package_managers import PypiVersionAPI
4646from vulnerabilities .package_managers import RubyVersionAPI
47+ from vulnerabilities .severity_systems import scoring_systems
4748
4849# set of all possible values of first '%s' = {'MAVEN','COMPOSER', 'NUGET', 'RUBYGEMS', 'PYPI'}
4950# second '%s' is interesting, it will have the value '' for the first request,
6364 references {
6465 url
6566 }
67+ severity
6668 }
6769 package {
6870 name
@@ -222,9 +224,24 @@ def process_response(self) -> List[Advisory]:
222224 vuln_references = self .extract_references (adv ["node" ]["advisory" ]["references" ])
223225 vuln_desc = adv ["node" ]["advisory" ]["summary" ]
224226
225- for vuln in adv ["node" ]["advisory" ]["identifiers" ]:
226- if vuln ["type" ] == "CVE" :
227- cve_ids .add (vuln ["value" ])
227+ for identifier in adv ["node" ]["advisory" ]["identifiers" ]:
228+ # collect CVEs
229+ if identifier ["type" ] == "CVE" :
230+ cve_ids .add (identifier ["value" ])
231+
232+ # attach the GHSA with severity score
233+ if identifier ["type" ] == "GHSA" :
234+ for ref in vuln_references :
235+ if ref .reference_id == identifier ["value" ]:
236+ ref .severities = [
237+ VulnerabilitySeverity (
238+ system = scoring_systems ["cvssv3.1_qr" ],
239+ value = adv ["node" ]["advisory" ]["severity" ]
240+ )
241+ ]
242+ # Each Node has only one GHSA, hence exit after attaching
243+ # score to this GHSA
244+ break
228245
229246 for cve_id in cve_ids :
230247 adv_list .append (
@@ -236,6 +253,7 @@ def process_response(self) -> List[Advisory]:
236253 vuln_references = vuln_references ,
237254 )
238255 )
256+ print (adv_list [- 1 ])
239257 return adv_list
240258
241259 @staticmethod
0 commit comments