Skip to content

Commit 79cd8f4

Browse files
committed
fix: add validation for cvss severity scores
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent d316aaf commit 79cd8f4

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

vulnerabilities/importer.py

Lines changed: 16 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,19 @@ 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+
vector_value = self.value
75+
try:
76+
vector_value = float(vector_value)
77+
except (TypeError, ValueError):
78+
vector_value = None
79+
80+
cvss_score = self.system.compute(self.scoring_elements)
81+
if vector_value and float(cvss_score) != vector_value:
82+
raise ValueError(
83+
f"CVSS vector and base score do not match: {self.scoring_elements} != {self.value}"
84+
)
85+
7086
def to_dict(self):
7187
data = {
7288
"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)