Skip to content

Commit 9632e46

Browse files
frack113nasbench
andauthored
feat: ✨ Add SigmahqFieldsExistenceValidator (#63)
* feat: ✨ Add SigmahqFieldsExistenceValidator * Apply suggestions from code review Co-authored-by: Nasreddine Bencherchali <monsteroffire2@gmail.com> --------- Co-authored-by: Nasreddine Bencherchali <monsteroffire2@gmail.com>
1 parent 61c10ed commit 9632e46

2 files changed

Lines changed: 59 additions & 0 deletions

File tree

sigma/validators/sigmahq/metadata.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,22 @@ def validate(self, rule: SigmaRule | SigmaCorrelationRule) -> List[SigmaValidati
7878
return []
7979

8080

81+
@dataclass
82+
class SigmahqFieldsExistenceIssue(SigmaValidationIssue):
83+
description: ClassVar[str] = "Rule is using the deprecated field fields"
84+
severity: ClassVar[SigmaValidationIssueSeverity] = SigmaValidationIssueSeverity.MEDIUM
85+
86+
87+
class SigmahqFieldsExistenceValidator(SigmaRuleValidator):
88+
"""Checks if a rule is using the deprecated field fields."""
89+
90+
def validate(self, rule: SigmaRule | SigmaCorrelationRule) -> List[SigmaValidationIssue]:
91+
if len(rule.fields) > 0:
92+
return [SigmahqFieldsExistenceIssue([rule])]
93+
else:
94+
return []
95+
96+
8197
@dataclass
8298
class SigmahqModifiedDateOrderIssue(SigmaValidationIssue):
8399
description: ClassVar[str] = (
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from sigma.rule import SigmaRule
2+
from sigma.validators.sigmahq.metadata import (
3+
SigmahqFieldsExistenceIssue,
4+
SigmahqFieldsExistenceValidator,
5+
)
6+
7+
8+
def test_validator_SigmahqFieldsExistence():
9+
validator = SigmahqFieldsExistenceValidator()
10+
rule = SigmaRule.from_yaml(
11+
"""
12+
title: test
13+
status: stable
14+
logsource:
15+
category: test
16+
detection:
17+
sel:
18+
field: path\\*something
19+
condition: sel
20+
fields:
21+
- eventid
22+
- CommandLine
23+
"""
24+
)
25+
assert validator.validate(rule) == [SigmahqFieldsExistenceIssue([rule])]
26+
27+
28+
def test_validator_SigmahqFieldsExistence_valid():
29+
validator = SigmahqFieldsExistenceValidator()
30+
rule = SigmaRule.from_yaml(
31+
"""
32+
title: test
33+
status: stable
34+
date: 2023-12-10
35+
logsource:
36+
category: test
37+
detection:
38+
sel:
39+
field: path\\*something
40+
condition: sel
41+
"""
42+
)
43+
assert validator.validate(rule) == []

0 commit comments

Comments
 (0)