|
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