Skip to content

Commit 0b62062

Browse files
committed
upd
1 parent 7b1a2a0 commit 0b62062

File tree

7 files changed

+15
-10
lines changed

7 files changed

+15
-10
lines changed

uncoder-core/app/translator/core/mixins/rule.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import json
2-
from typing import Optional, Union
2+
from typing import Union
33

44
import xmltodict
55
import yaml
@@ -29,7 +29,7 @@ def load_rule(text: str) -> dict:
2929
except yaml.YAMLError as err:
3030
raise InvalidYamlStructure(error=str(err)) from err
3131

32-
def parse_mitre_attack(self, tags: list[str]) -> Optional[MitreInfoContainer]:
32+
def parse_mitre_attack(self, tags: list[str]) -> MitreInfoContainer:
3333
parsed_techniques = []
3434
parsed_tactics = []
3535
for tag in set(tags):

uncoder-core/app/translator/core/render.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ def wrap_with_meta_info(self, query: str, meta_info: Optional[MetaInfoContainer]
320320
meta_info_dict = {
321321
"name: ": meta_info.title,
322322
"uuid: ": meta_info.id,
323-
"author: ": ", ".join(meta_info.author) if meta_info.author else "not defined in query/rule",
323+
"author: ": meta_info.author_str or "not defined in query/rule",
324324
"licence: ": meta_info.license,
325325
}
326326
query_meta_info = "\n".join(

uncoder-core/app/translator/platforms/elasticsearch/parsers/detection_rule.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def parse_raw_query(self, text: str, language: str) -> RawQueryContainer:
4646
title=rule.get("name"),
4747
description=parsed_description.get("description") or rule.get("description"),
4848
references=rule.get("references", []),
49-
author=parsed_description.get("author") or rule.get("author", ""),
49+
author=parsed_description.get("author") or rule.get("author"),
5050
severity=rule.get("severity"),
5151
license_=parsed_description.get("license"),
5252
tags=rule.get("tags"),

uncoder-core/app/translator/platforms/forti_siem/renders/forti_siem_rule.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
)
4040
from app.translator.platforms.forti_siem.mapping import FortiSiemMappings, forti_siem_rule_mappings
4141
from app.translator.platforms.forti_siem.str_value_manager import forti_siem_str_value_manager
42-
from app.translator.tools.utils import concatenate_str
42+
from app.translator.tools.utils import concatenate_str, get_rule_description_str
4343

4444
_AUTOGENERATED_TEMPLATE = "Autogenerated FortiSIEM Rule"
4545
_EVENT_TYPE_FIELD = "eventType"
@@ -314,7 +314,12 @@ def finalize_query(
314314
title = meta_info.title or _AUTOGENERATED_TEMPLATE
315315
rule = rule.replace("<name_placeholder>", self.generate_rule_name(title))
316316
rule = rule.replace("<title_placeholder>", self.generate_title(title))
317-
description = meta_info.description.replace("\n", " ") or _AUTOGENERATED_TEMPLATE
317+
description = get_rule_description_str(
318+
description=meta_info.description.replace("\n", " ") or _AUTOGENERATED_TEMPLATE,
319+
author=meta_info.author,
320+
license_=meta_info.license,
321+
references=meta_info.references,
322+
)
318323
rule = rule.replace("<description_placeholder>", description)
319324
rule = rule.replace("<incident_def_placeholder>", self.generate_event_type(title, meta_info.severity))
320325
args_list = self.get_args_list(fields.copy())

uncoder-core/app/translator/platforms/microsoft/parsers/microsoft_sentinel_rule.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def parse_raw_query(self, text: str, language: str) -> RawQueryContainer:
6868
timeframe=self.__parse_timeframe(rule.get("queryFrequency", "")),
6969
severity=rule.get("severity", "medium"),
7070
mitre_attack=mitre_attack,
71-
author=parsed_description.get("author") or rule.get("author", ""),
71+
author=parsed_description.get("author") or rule.get("author"),
7272
license_=parsed_description.get("license"),
7373
tags=tags,
7474
references=parsed_description.get("references"),

uncoder-core/app/translator/platforms/sigma/parsers/sigma.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def _get_meta_info(
7979
title=rule.get("title"),
8080
id_=rule.get("id"),
8181
description=rule.get("description"),
82-
author=rule.get("author"),
82+
author=rule.get("author", '').split(', '),
8383
date=rule.get("date"),
8484
output_table_fields=sigma_fields_tokens,
8585
query_fields=fields_tokens,

uncoder-core/app/translator/tools/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ def parse_rule_description_str(description: str) -> dict:
8585
pattern = r"___name___:\s*(?P<value>.+)\."
8686
for key, name in keys_map.items():
8787
if search := re.search(pattern.replace("___name___", name), description):
88-
if key == "author":
89-
parsed[key] = [author.strip() for author in search.group("value").split(",")]
88+
if key in ("author", "references"):
89+
parsed[key] = [value.strip() for value in search.group("value").split(",")]
9090
else:
9191
parsed[key] = search.group("value")
9292
description = description[: search.start()]

0 commit comments

Comments
 (0)