Source code for mythril.analysis.security

"""This module contains functionality for hooking in detection modules and
executing them."""

from mythril.analysis.module import ModuleLoader, reset_callback_modules
from mythril.analysis.module.base import EntryPoint
from mythril.analysis.report import Issue

from typing import Optional, List
import logging

log = logging.getLogger(__name__)


[docs]def retrieve_callback_issues(white_list: Optional[List[str]] = None) -> List[Issue]: """Get the issues discovered by callback type detection modules""" issues = [] # type: List[Issue] for module in ModuleLoader().get_detection_modules( entry_point=EntryPoint.CALLBACK, white_list=white_list ): log.debug("Retrieving results for " + module.name) issues += module.issues reset_callback_modules(module_names=white_list) return issues
[docs]def fire_lasers(statespace, white_list: Optional[List[str]] = None) -> List[Issue]: """Fire lasers at analysed statespace object :param statespace: Symbolic statespace to analyze :param white_list: Optionally whitelist modules to use for the analysis :return: Discovered issues """ log.info("Starting analysis") issues = [] # type: List[Issue] for module in ModuleLoader().get_detection_modules( entry_point=EntryPoint.POST, white_list=white_list ): log.info("Executing " + module.name) issues += module.execute(statespace) issues += retrieve_callback_issues(white_list) return issues