Skip to content

Commit 7f120f5

Browse files
committed
add new triage rule based on SSVC decision tree
Signed-off-by: tdruez <tdruez@aboutcode.org>
1 parent b756179 commit 7f120f5

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

vulnerabilities/triage/rules.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from django.apps import apps
1212
from django.db.models import Exists
1313
from django.db.models import OuterRef
14+
from django.db.models import Q
1415
from django.utils import timezone
1516

1617
from policy.rules import BaseRule
@@ -94,6 +95,26 @@ def get_matching_vulnerabilities(self, product, parameters=None):
9495
).distinct()
9596

9697

98+
class SSVCDecisionTriageRule(BaseTriageRule):
99+
rule_type = "ssvc_decision"
100+
label = "SSVC Decision"
101+
description = (
102+
"Vulnerabilities whose SSVC decision tree recommends Attend or Act"
103+
" (immediate attention required)."
104+
)
105+
106+
def get_matching_vulnerabilities(self, product, parameters=None):
107+
Vulnerability = apps.get_model("vulnerabilities", "Vulnerability")
108+
return (
109+
Vulnerability.objects.filter(affected_packages__productpackages__product=product)
110+
.filter(
111+
Q(ssvc_trees__contains=[{"decision": "Attend"}])
112+
| Q(ssvc_trees__contains=[{"decision": "Act"}])
113+
)
114+
.distinct()
115+
)
116+
117+
97118
class ReachableVulnerabilityTriageRule(BaseTriageRule):
98119
rule_type = "reachable_vulnerability"
99120
label = "Reachable Vulnerability"
@@ -229,6 +250,7 @@ def get_matching_vulnerabilities(self, product, parameters=None):
229250
RiskScoreTriageRule.rule_type: RiskScoreTriageRule(),
230251
WeightedRiskTriageRule.rule_type: WeightedRiskTriageRule(),
231252
ExploitedVulnerabilityTriageRule.rule_type: ExploitedVulnerabilityTriageRule(),
253+
SSVCDecisionTriageRule.rule_type: SSVCDecisionTriageRule(),
232254
ReachableVulnerabilityTriageRule.rule_type: ReachableVulnerabilityTriageRule(),
233255
UnresolvedVulnerabilityTriageRule.rule_type: UnresolvedVulnerabilityTriageRule(),
234256
StaleVulnerabilityTriageRule.rule_type: StaleVulnerabilityTriageRule(),

0 commit comments

Comments
 (0)