Skip to content

Commit 4e04062

Browse files
authored
Merge pull request #358 from sbs2001/collect_ghsa_severity
Collect ghsa severity
2 parents bf75475 + 55f1d84 commit 4e04062

File tree

4 files changed

+228
-132
lines changed

4 files changed

+228
-132
lines changed

vulnerabilities/importers/github.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,13 @@
3838
from vulnerabilities.data_source import DataSource
3939
from vulnerabilities.data_source import DataSourceConfiguration
4040
from vulnerabilities.data_source import Reference
41-
41+
from vulnerabilities.data_source import VulnerabilitySeverity
4242
from vulnerabilities.package_managers import MavenVersionAPI
4343
from vulnerabilities.package_managers import NugetVersionAPI
4444
from vulnerabilities.package_managers import ComposerVersionAPI
4545
from vulnerabilities.package_managers import PypiVersionAPI
4646
from 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,
@@ -63,6 +64,7 @@
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(

vulnerabilities/severity_systems.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,11 @@ def as_score(self, value):
7474
identifier="avgs",
7575
name="Archlinux Vulnerability Group Severity",
7676
url="https://wiki.archlinux.org/index.php/Bug_reporting_guidelines#Severity"
77+
),
78+
"cvssv3.1_qr": ScoringSystem(
79+
identifier="cvssv3.1_qr",
80+
name="CVSSv3.1 Qualitative Severity Rating",
81+
url="https://www.first.org/cvss/specification-document",
82+
notes="A textual interpretation of severity. Has values like HIGH, MODERATE etc"
7783
)
7884
}

vulnerabilities/tests/test_data/github_api/response.json

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
{
2121
"url":"https://github.com/advisories/GHSA-qcxh-w3j9-58qr"
2222
}
23-
]
23+
],
24+
"severity": "MODERATE"
2425
},
2526
"package": {
2627
"name": "org.apache.tomcat.embed:tomcat-embed-core"
@@ -46,7 +47,8 @@
4647
{
4748
"url":"https://github.com/advisories/GHSA-qcxh-w3j9-58qr"
4849
}
49-
]
50+
],
51+
"severity": "HIGH"
5052
},
5153
"package": {
5254
"name": "org.apache.tomcat.embed:tomcat-embed-core"
@@ -72,7 +74,8 @@
7274
{
7375
"url":"https://github.com/advisories/GHSA-c9hw-wf7x-jp9j"
7476
}
75-
]
77+
],
78+
"severity": "LOW"
7679
},
7780
"package": {
7881
"name": "org.apache.tomcat.embed:tomcat-embed-core"
@@ -98,7 +101,8 @@
98101
{
99102
"url":"https://github.com/advisories/GHSA-c9hw-wf7x-jp9j"
100103
}
101-
]
104+
],
105+
"severity": "MODERATE"
102106
},
103107
"package": {
104108
"name": "org.apache.tomcat.embed:tomcat-embed-core"
@@ -124,7 +128,8 @@
124128
{
125129
"url":"https://github.com/advisories/GHSA-c9hw-wf7x-jp9j"
126130
}
127-
]
131+
],
132+
"severity": "LOW"
128133
},
129134
"package": {
130135
"name": "org.apache.tomcat.embed:tomcat-embed-core"

0 commit comments

Comments
 (0)