Skip to content

Commit 186e69f

Browse files
committed
fix: add validation for cvss severity scores
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 7d977b7 commit 186e69f

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

vulnerabilities/importer.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333

3434
from vulnerabilities import severity_systems
3535
from vulnerabilities.oval_parser import OvalParser
36+
from vulnerabilities.severity_systems import CVSSV3
37+
from vulnerabilities.severity_systems import CVSSV4
38+
from vulnerabilities.severity_systems import CVSSV31
3639
from vulnerabilities.severity_systems import SCORING_SYSTEMS
3740
from vulnerabilities.severity_systems import ScoringSystem
3841
from vulnerabilities.utils import classproperty
@@ -67,6 +70,15 @@ def __post_init__(self):
6770
if not isinstance(self.value, str):
6871
self.value = str(self.value)
6972

73+
if self.scoring_elements and self.system in [CVSSV3, CVSSV31, CVSSV4]:
74+
cvss_score = self.system.compute(self.scoring_elements)
75+
if not self.value:
76+
self.value = cvss_score
77+
elif float(cvss_score) != float(self.value):
78+
raise ValueError(
79+
f"CVSS vector and score do not match: {self.scoring_elements} != {self.value}"
80+
)
81+
7082
def to_dict(self):
7183
data = {
7284
"system": self.system.identifier,

vulnerabilities/importers/postgresql.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,9 @@ def to_advisories(data):
113113
severities = []
114114
if "support/security/CVE" in link and vector_link_tag:
115115
parsed_link = urlparse.urlparse(vector_link_tag["href"])
116-
cvss3_vector = urlparse.parse_qs(parsed_link.query)["vector"]
116+
cvss3_vector = urlparse.parse_qs(parsed_link.query).get("vector", [""])[0]
117117
cvss3_base_score = vector_link_tag.text
118+
cvss3_vector = "CVSS:3.0/" + cvss3_vector.removeprefix("CVSS:3.0/")
118119
severity = VulnerabilitySeverity(
119120
system=severity_systems.CVSSV3,
120121
value=cvss3_base_score,

0 commit comments

Comments
 (0)