|
15 | 15 | class CvssSourceProvider:
|
16 | 16 | NVD = "NVD"
|
17 | 17 | MITRE = "MITRE"
|
| 18 | + GITHUB = "GITHUB" |
| 19 | + GITLAB = "GITLAB" |
| 20 | + REDHAT_CVE = "REDHAT_CVE" |
| 21 | + UBUNTU_CVE = "UBUNTU_CVE" |
18 | 22 | AMAZON_INSPECTOR = "AMAZON_INSPECTOR"
|
19 |
| - |
20 | 23 | DEFAULT_PROVIDER = NVD
|
21 | 24 |
|
| 25 | +def get_rating_providers(): |
| 26 | + """ |
| 27 | + get_rating_providers returns a list of vulnerability |
| 28 | + severity providers. The action uses this information |
| 29 | + to determine which vuln severity to render when |
| 30 | + multiple severity values are present from different |
| 31 | + vendors. See the function definition to view the |
| 32 | + order in which severity providers are preferred. |
| 33 | + """ |
| 34 | + |
| 35 | + # NVD is most preferred, followed by everything |
| 36 | + # else in the order listed. |
| 37 | + providers = [CvssSourceProvider.NVD, |
| 38 | + CvssSourceProvider.MITRE, |
| 39 | + CvssSourceProvider.GITHUB, |
| 40 | + CvssSourceProvider.GITLAB, |
| 41 | + CvssSourceProvider.AMAZON_INSPECTOR |
| 42 | + ] |
| 43 | + return providers |
22 | 44 |
|
23 | 45 | class CvssSeverity:
|
24 | 46 | UNTRIAGED = "untriaged"
|
@@ -255,7 +277,7 @@ def get_cwes(v) -> str:
|
255 | 277 |
|
256 | 278 |
|
257 | 279 | def get_cvss_rating(ratings, vulnerability) -> CvssRating:
|
258 |
| - rating_provider_priority = [CvssSourceProvider.NVD, CvssSourceProvider.MITRE, CvssSourceProvider.AMAZON_INSPECTOR] |
| 280 | + rating_provider_priority = get_rating_providers() |
259 | 281 | for provider in rating_provider_priority:
|
260 | 282 | for rating in ratings:
|
261 | 283 | if rating["source"]["name"] != provider:
|
|
0 commit comments