forked from p15670423/monkey
ScoutSuite performance upgrades.
This commit is contained in:
parent
aaf6a33f92
commit
2c1e89c7b3
|
@ -1,5 +1,8 @@
|
|||
# abstract, static method decorator
|
||||
# noinspection PyPep8Naming
|
||||
from typing import List
|
||||
|
||||
|
||||
class abstractstatic(staticmethod):
|
||||
__slots__ = ()
|
||||
|
||||
|
@ -8,3 +11,10 @@ class abstractstatic(staticmethod):
|
|||
function.__isabstractmethod__ = True
|
||||
|
||||
__isabstractmethod__ = True
|
||||
|
||||
|
||||
def get_value_from_dict(dict_data: dict, path: List[str]):
|
||||
current_data = dict_data
|
||||
for key in path:
|
||||
current_data = current_data[key]
|
||||
return current_data
|
||||
|
|
|
@ -3,6 +3,7 @@ import json
|
|||
from monkey_island.cc.database import mongo
|
||||
from monkey_island.cc.models.zero_trust.scoutsuite_data_json import ScoutSuiteRawDataJson
|
||||
from monkey_island.cc.services.zero_trust.scoutsuite.consts.scoutsuite_findings_list import SCOUTSUITE_FINDINGS
|
||||
from monkey_island.cc.services.zero_trust.scoutsuite.consts.service_consts import SERVICES
|
||||
from monkey_island.cc.services.zero_trust.scoutsuite.data_parsing.rule_parser import RuleParser
|
||||
from monkey_island.cc.services.zero_trust.scoutsuite.scoutsuite_rule_service import ScoutSuiteRuleService
|
||||
from monkey_island.cc.services.zero_trust.scoutsuite.scoutsuite_zt_finding_service import ScoutSuiteZTFindingService
|
||||
|
@ -13,14 +14,14 @@ def process_scoutsuite_telemetry(telemetry_json):
|
|||
telemetry_json['data'] = json.dumps(telemetry_json['data'])
|
||||
ScoutSuiteRawDataJson.add_scoutsuite_data(telemetry_json['data'])
|
||||
scoutsuite_data = json.loads(telemetry_json['data'])['data']
|
||||
create_scoutsuite_findings(scoutsuite_data)
|
||||
create_scoutsuite_findings(scoutsuite_data[SERVICES])
|
||||
update_data(telemetry_json)
|
||||
|
||||
|
||||
def create_scoutsuite_findings(scoutsuite_data):
|
||||
def create_scoutsuite_findings(cloud_services: dict):
|
||||
for finding in SCOUTSUITE_FINDINGS:
|
||||
for rule in finding.rules:
|
||||
rule_data = RuleParser.get_rule_data(scoutsuite_data, rule)
|
||||
rule_data = RuleParser.get_rule_data(cloud_services, rule)
|
||||
rule = ScoutSuiteRuleService.get_rule_from_rule_data(rule_data)
|
||||
ScoutSuiteZTFindingService.process_rule(finding, rule)
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
from enum import Enum
|
||||
|
||||
import dpath.util
|
||||
|
||||
from common.utils.code_utils import get_value_from_dict
|
||||
from common.utils.exceptions import RulePathCreatorNotFound
|
||||
from monkey_island.cc.services.zero_trust.scoutsuite.data_parsing.rule_path_building.rule_path_creators_list import \
|
||||
RULE_PATH_CREATORS_LIST
|
||||
|
@ -23,7 +22,7 @@ class RuleParser:
|
|||
@staticmethod
|
||||
def get_rule_data(scoutsuite_data: dict, rule_name: Enum) -> dict:
|
||||
rule_path = RuleParser._get_rule_path(rule_name)
|
||||
return dpath.util.get(scoutsuite_data, rule_path)
|
||||
return get_value_from_dict(scoutsuite_data, rule_path)
|
||||
|
||||
@staticmethod
|
||||
def _get_rule_path(rule_name: Enum):
|
||||
|
|
|
@ -3,7 +3,7 @@ from enum import Enum
|
|||
from typing import List, Type
|
||||
|
||||
from monkey_island.cc.services.zero_trust.scoutsuite.consts.rule_names.rule_name_enum import RuleNameEnum
|
||||
from monkey_island.cc.services.zero_trust.scoutsuite.consts.service_consts import FINDINGS, SERVICES, SERVICE_TYPES
|
||||
from monkey_island.cc.services.zero_trust.scoutsuite.consts.service_consts import FINDINGS, SERVICE_TYPES
|
||||
|
||||
|
||||
class AbstractRulePathCreator(ABC):
|
||||
|
@ -21,4 +21,4 @@ class AbstractRulePathCreator(ABC):
|
|||
@classmethod
|
||||
def build_rule_path(cls, rule_name: Enum) -> List[str]:
|
||||
assert(rule_name in cls.supported_rules)
|
||||
return [SERVICES, cls.service_type.value, FINDINGS, rule_name.value]
|
||||
return [cls.service_type.value, FINDINGS, rule_name.value]
|
||||
|
|
Loading…
Reference in New Issue