maltoolbox.attackgraph.node module

MAL-Toolbox Attack Graph Node

class maltoolbox.attackgraph.node.AttackGraphNode(node_id: int, lg_attack_step: LanguageGraphAttackStep, model_asset: ModelAsset | None = None, defense_status: float | None = None, existence_status: bool | None = None)[source]

Bases: object

Node part of AttackGraph

compromise(attacker: Attacker) None[source]

Have the attacker given as a parameter compromise this node.

Arguments: attacker - the attacker that will compromise the node

property full_name: str

Return the full name of the attack step. This is a combination of the asset name to which the attack step belongs and attack step name itself.

property info: dict[str, str]
is_available_defense() bool[source]

Return True if this node is a defense node and it is not fully enabled and not suppressed via tags. False otherwise.

is_compromised() bool[source]

Return True if any attackers have compromised this node. False, otherwise.

is_compromised_by(attacker: Attacker) bool[source]

Return True if the attacker given as an argument has compromised this node. False, otherwise.

Arguments: attacker - the attacker we are interested in

is_enabled_defense() bool[source]

Return True if this node is a defense node and it is enabled and not suppressed via tags. False, otherwise.

to_dict() dict[source]

Convert node to dictionary

undo_compromise(attacker: Attacker) None[source]

Remove the attacker given as a parameter from the list of attackers that have compromised this node.

Arguments: attacker - the attacker that we wish to remove from the compromised

list.