diff --git a/bbot/core/event/base.py b/bbot/core/event/base.py index 07eb8671cf..3d1e7bdc19 100644 --- a/bbot/core/event/base.py +++ b/bbot/core/event/base.py @@ -1542,6 +1542,7 @@ class FINDING(ClosestHostEvent): } def sanitize_data(self, data): + data = super().sanitize_data(data) self.add_tag(f"severity-{data['severity'].lower()}") self.add_tag(f"confidence-{data['confidence'].lower()}") return data diff --git a/bbot/core/helpers/validators.py b/bbot/core/helpers/validators.py index 0d1b63e6c7..99479b6414 100644 --- a/bbot/core/helpers/validators.py +++ b/bbot/core/helpers/validators.py @@ -129,18 +129,24 @@ def validate_host(host: Union[str, ipaddress.IPv4Address, ipaddress.IPv6Address] raise ValidationError(f'Invalid hostname: "{host}"') +FINDING_SEVERITY_LEVELS = ("INFORMATIONAL", "LOW", "MEDIUM", "HIGH", "CRITICAL") + + @validator def validate_severity(severity: str): severity = str(severity).strip().upper() - if severity not in ("INFORMATIONAL", "LOW", "MEDIUM", "HIGH", "CRITICAL"): + if severity not in FINDING_SEVERITY_LEVELS: raise ValueError(f"Invalid severity: {severity}") return severity +FINDING_CONFIDENCE_LEVELS = ("UNKNOWN", "LOW", "MODERATE", "HIGH", "CONFIRMED") + + @validator def validate_confidence(confidence: str): confidence = str(confidence).strip().upper() - if confidence not in ("UNKNOWN", "LOW", "MODERATE", "HIGH", "CONFIRMED"): + if confidence not in FINDING_CONFIDENCE_LEVELS: raise ValueError(f"Invalid confidence: {confidence}") return confidence diff --git a/bbot/test/test_step_1/test_events.py b/bbot/test/test_step_1/test_events.py index 824ab6d146..9a77ea77dd 100644 --- a/bbot/test/test_step_1/test_events.py +++ b/bbot/test/test_step_1/test_events.py @@ -404,10 +404,21 @@ async def test_events(events, helpers): # test CONFIRMED gets bold formatting confirmed_finding = scan.make_event( - {"host": "test.com", "name": "Test", "description": "Test", "severity": "HIGH", "confidence": "CONFIRMED"}, + { + "host": "test.com", + "name": "Test", + "description": "Test", + "severity": "HIGH", + "confidence": "CONFIRMED", + "url": "http://test.com", + }, "FINDING", dummy=True, ) + assert confirmed_finding.host == "test.com" + assert confirmed_finding.port == 80 + assert confirmed_finding.netloc == "test.com:80" + assert confirmed_finding.parsed_url.geturl() == "http://test.com/" pretty_string = confirmed_finding._pretty_string() assert "[\033[1mCONFIRMED\033[0m]" in pretty_string assert f"confidence-{confirmed_finding.data['confidence'].lower()}" in confirmed_finding.tags