diff --git a/detection_rules/rule.py b/detection_rules/rule.py index 5e3b0fd5f..6b4ee994e 100644 --- a/detection_rules/rule.py +++ b/detection_rules/rule.py @@ -1405,7 +1405,7 @@ def get_unique_query_fields(rule: TOMLRule) -> List[str]: cfg = set_eql_config(rule.contents.metadata.get('min_stack_version')) with eql.parser.elasticsearch_syntax, eql.parser.ignore_missing_functions, eql.parser.skip_optimizations, cfg: - parsed = kql.parse(query, normalize_kql_keywords=True) if language == 'kuery' else eql.parse_query(query) + parsed = kql.parse(query) if language == 'kuery' else eql.parse_query(query) return sorted(set(str(f) for f in parsed if isinstance(f, (eql.ast.Field, kql.ast.Field)))) diff --git a/detection_rules/rule_validators.py b/detection_rules/rule_validators.py index 86d200863..6631db83e 100644 --- a/detection_rules/rule_validators.py +++ b/detection_rules/rule_validators.py @@ -36,7 +36,7 @@ class KQLValidator(QueryValidator): @cached_property def ast(self) -> kql.ast.Expression: - return kql.parse(self.query, normalize_kql_keywords=True) + return kql.parse(self.query) @cached_property def unique_fields(self) -> List[str]: @@ -80,7 +80,7 @@ class KQLValidator(QueryValidator): beats_version, ecs_version) try: - kql.parse(self.query, schema=schema, normalize_kql_keywords=True) + kql.parse(self.query, schema=schema) except kql.KqlParseError as exc: message = exc.error_msg trailer = err_trailer @@ -135,7 +135,7 @@ class KQLValidator(QueryValidator): # Validate the query against the schema try: - kql.parse(self.query, schema=integration_schema, normalize_kql_keywords=True) + kql.parse(self.query, schema=integration_schema) except kql.KqlParseError as exc: if exc.error_msg == "Unknown field": field = extract_error_field(self.query, exc) diff --git a/detection_rules/utils.py b/detection_rules/utils.py index d09f16675..6bc7e527f 100644 --- a/detection_rules/utils.py +++ b/detection_rules/utils.py @@ -241,7 +241,7 @@ def convert_time_span(span: str) -> int: def evaluate(rule, events): """Evaluate a query against events.""" - evaluator = kql.get_evaluator(kql.parse(rule.query, normalize_kql_keywords=True)) + evaluator = kql.get_evaluator(kql.parse(rule.query)) filtered = list(filter(evaluator, events)) return filtered diff --git a/tests/test_all_rules.py b/tests/test_all_rules.py index 39fe344cb..c66563c34 100644 --- a/tests/test_all_rules.py +++ b/tests/test_all_rules.py @@ -67,7 +67,7 @@ class TestValidRules(BaseRuleTest): ) ): source = rule.contents.data.query - tree = kql.parse(source, optimize=False, normalize_kql_keywords=True) + tree = kql.parse(source, optimize=False) optimized = tree.optimize(recursive=True) err_message = f'\n{self.rule_str(rule)} Query not optimized for rule\n' \ f'Expected: {optimized}\nActual: {source}'