Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions bbot/core/event/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 8 additions & 2 deletions bbot/core/helpers/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
13 changes: 12 additions & 1 deletion bbot/test/test_step_1/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading