Threat Mitigation Mapping
custom
security

Mapeo de amenazas identificadas a controles de seguridad apropiados. Usar al priorizar inversiones de seguridad o crear planes de remediaci├│n.

ID: threat-mitigation-mapping
Preview
Codigo

---

name: threat-mitigation-mapping

description: Map identified threats to appropriate security controls and mitigations. Use when prioritizing security investments, creating remediation plans, or validating control effectiveness.

---


Threat Mitigation Mapping


Connect threats to controls for effective security planning.


When to Use This Skill


  • Prioritizing security investments
  • Creating remediation roadmaps
  • Validating control coverage
  • Designing defense-in-depth
  • Security architecture review
  • Risk treatment planning

Core Concepts


1. Control Categories


``

Preventive ????? Stop attacks before they occur

? (Firewall, Input validation)

?

Detective ?????? Identify attacks in progress

? (IDS, Log monitoring)

?

Corrective ????? Respond and recover from attacks

(Incident response, Backup restore)

`


2. Control Layers


| Layer | Examples |

|-------|----------|

| Network | Firewall, WAF, DDoS protection |

| Application | Input validation, authentication |

| Data | Encryption, access controls |

| Endpoint | EDR, patch management |

| Process | Security training, incident response |


3. Defense in Depth


`

????????????????????????

? Perimeter ? ? Firewall, WAF

? ???????????????? ?

? ? Network ? ? ? Segmentation, IDS

? ? ?????????? ? ?

? ? ? Host ? ? ? ? EDR, Hardening

? ? ? ?????? ? ? ?

? ? ? ?App ? ? ? ? ? Auth, Validation

? ? ? ?Data? ? ? ? ? Encryption

? ? ? ?????? ? ? ?

? ? ?????????? ? ?

? ???????????????? ?

????????????????????????

`


Templates


Template 1: Mitigation Model


`python

from dataclasses import dataclass, field

from enum import Enum

from typing import List, Dict, Optional, Set

from datetime import datetime


class ControlType(Enum):

PREVENTIVE = "preventive"

DETECTIVE = "detective"

CORRECTIVE = "corrective"



class ControlLayer(Enum):

NETWORK = "network"

APPLICATION = "application"

DATA = "data"

ENDPOINT = "endpoint"

PROCESS = "process"

PHYSICAL = "physical"



class ImplementationStatus(Enum):

NOT_IMPLEMENTED = "not_implemented"

PARTIAL = "partial"

IMPLEMENTED = "implemented"

VERIFIED = "verified"



class Effectiveness(Enum):

NONE = 0

LOW = 1

MEDIUM = 2

HIGH = 3

VERY_HIGH = 4



@dataclass

class SecurityControl:

id: str

name: str

description: str

control_type: ControlType

layer: ControlLayer

effectiveness: Effectiveness

implementation_cost: str # Low, Medium, High

maintenance_cost: str

status: ImplementationStatus = ImplementationStatus.NOT_IMPLEMENTED

mitigates_threats: List[str] = field(default_factory=list)

dependencies: List[str] = field(default_factory=list)

technologies: List[str] = field(default_factory=list)

compliance_refs: List[str] = field(default_factory=list)


def coverage_score(self) -> float:

"""Calculate coverage score based on status and effectiveness."""

status_multiplier = {

ImplementationStatus.NOT_IMPLEMENTED: 0.0,

ImplementationStatus.PARTIAL: 0.5,

ImplementationStatus.IMPLEMENTED: 0.8,

ImplementationStatus.VERIFIED: 1.0,

}

return self.effectiveness.value * status_multiplier[self.status]



@dataclass

class Threat:

id: str

name: str

category: str # STRIDE category

description: str

impact: str # Critical, High, Medium, Low

likelihood: str

risk_score: float



@dataclass

class MitigationMapping:

threat: Threat

controls: List[SecurityControl]

residual_risk: str = "Unknown"

notes: str = ""


def calculate_coverage(self) -> float:

"""Calculate how well controls cover the threat."""

if not self.controls:

return 0.0


total_score = sum(c.coverage_score() for c in self.controls)

max_possible = len(self.controls) * Effectiveness.VERY_HIGH.value


return (total_score / max_possible) * 100 if max_possible > 0 else 0


def has_defense_in_depth(self) -> bool:

"""Check if multiple layers are covered."""

layers = set(c.layer for c in self.controls if c.status != ImplementationStatus.NOT_IMPLEMENTED)

return len(layers) >= 2


def has_control_diversity(self) -> bool:

"""Check if multiple control types are present."""

types = set(c.control_type for c in self.controls if c.status != ImplementationStatus.NOT_IMPLEMENTED)

return len(types) >= 2



@dataclass

class MitigationPlan:

name: str

threats: List[Threat] = field(default_factory=list)

controls: List[SecurityControl] = field(default_factory=list)

mappings: List[MitigationMapping] = field(default_factory=list)


def get_unmapped_threats(self) -> List[Threat]:

"""Find threats without mitigations."""

mapped_ids = {m.threat.id for m in self.mappings}

return [t for t in self.threats if t.id not in mapped_ids]


def get_control_coverage(self) -> Dict[str, float]:

"""Get coverage percentage for each threat."""

return {

m.threat.id: m.calculate_coverage()

for m in self.mappings

}


def get_gaps(self) -> List[Dict]:

"""Identify mitigation gaps."""

gaps = []

for mapping in self.mappings:

coverage = mapping.calculate_coverage()

if coverage < 50:

gaps.append({

"threat": mapping.threat.id,

"threat_name": mapping.threat.name,

"coverage": coverage,

"issue": "Insufficient control coverage",

"recommendation": "Add more controls or improve existing ones"

})

if not mapping.has_defense_in_depth():

gaps.append({

"threat": mapping.threat.id,

"threat_name": mapping.threat.name,

"coverage": coverage,

"issue": "No defense in depth",

"recommendation": "Add controls at different layers"

})

if not mapping.has_control_diversity():

gaps.append({

"threat": mapping.threat.id,

"threat_name": mapping.threat.name,

"coverage": coverage,

"issue": "No control diversity",

"recommendation": "Add detective/corrective controls"

})

return gaps

`


Template 2: Control Library


`python

class ControlLibrary:

"""Library of standard security controls."""


STANDARD_CONTROLS = {

# Authentication Controls

"AUTH-001": SecurityControl(

id="AUTH-001",

name="Multi-Factor Authentication",

description="Require MFA for all user authentication",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.APPLICATION,

effectiveness=Effectiveness.HIGH,

implementation_cost="Medium",

maintenance_cost="Low",

mitigates_threats=["SPOOFING"],

technologies=["TOTP", "WebAuthn", "SMS OTP"],

compliance_refs=["PCI-DSS 8.3", "NIST 800-63B"]

),

"AUTH-002": SecurityControl(

id="AUTH-002",

name="Account Lockout Policy",

description="Lock accounts after failed authentication attempts",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.APPLICATION,

effectiveness=Effectiveness.MEDIUM,

implementation_cost="Low",

maintenance_cost="Low",

mitigates_threats=["SPOOFING"],

technologies=["Custom implementation"],

compliance_refs=["PCI-DSS 8.1.6"]

),


# Input Validation Controls

"VAL-001": SecurityControl(

id="VAL-001",

name="Input Validation Framework",

description="Validate and sanitize all user input",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.APPLICATION,

effectiveness=Effectiveness.HIGH,

implementation_cost="Medium",

maintenance_cost="Medium",

mitigates_threats=["TAMPERING", "INJECTION"],

technologies=["Joi", "Yup", "Pydantic"],

compliance_refs=["OWASP ASVS V5"]

),

"VAL-002": SecurityControl(

id="VAL-002",

name="Web Application Firewall",

description="Deploy WAF to filter malicious requests",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.NETWORK,

effectiveness=Effectiveness.MEDIUM,

implementation_cost="Medium",

maintenance_cost="Medium",

mitigates_threats=["TAMPERING", "INJECTION", "DOS"],

technologies=["AWS WAF", "Cloudflare", "ModSecurity"],

compliance_refs=["PCI-DSS 6.6"]

),


# Encryption Controls

"ENC-001": SecurityControl(

id="ENC-001",

name="Data Encryption at Rest",

description="Encrypt sensitive data in storage",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.DATA,

effectiveness=Effectiveness.HIGH,

implementation_cost="Medium",

maintenance_cost="Low",

mitigates_threats=["INFORMATION_DISCLOSURE"],

technologies=["AES-256", "KMS", "HSM"],

compliance_refs=["PCI-DSS 3.4", "GDPR Art. 32"]

),

"ENC-002": SecurityControl(

id="ENC-002",

name="TLS Encryption",

description="Encrypt data in transit using TLS 1.3",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.NETWORK,

effectiveness=Effectiveness.HIGH,

implementation_cost="Low",

maintenance_cost="Low",

mitigates_threats=["INFORMATION_DISCLOSURE", "TAMPERING"],

technologies=["TLS 1.3", "Certificate management"],

compliance_refs=["PCI-DSS 4.1", "HIPAA"]

),


# Logging Controls

"LOG-001": SecurityControl(

id="LOG-001",

name="Security Event Logging",

description="Log all security-relevant events",

control_type=ControlType.DETECTIVE,

layer=ControlLayer.APPLICATION,

effectiveness=Effectiveness.MEDIUM,

implementation_cost="Low",

maintenance_cost="Medium",

mitigates_threats=["REPUDIATION"],

technologies=["ELK Stack", "Splunk", "CloudWatch"],

compliance_refs=["PCI-DSS 10.2", "SOC2"]

),

"LOG-002": SecurityControl(

id="LOG-002",

name="Log Integrity Protection",

description="Protect logs from tampering",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.DATA,

effectiveness=Effectiveness.MEDIUM,

implementation_cost="Medium",

maintenance_cost="Low",

mitigates_threats=["REPUDIATION", "TAMPERING"],

technologies=["Immutable storage", "Log signing"],

compliance_refs=["PCI-DSS 10.5"]

),


# Access Control

"ACC-001": SecurityControl(

id="ACC-001",

name="Role-Based Access Control",

description="Implement RBAC for authorization",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.APPLICATION,

effectiveness=Effectiveness.HIGH,

implementation_cost="Medium",

maintenance_cost="Medium",

mitigates_threats=["ELEVATION_OF_PRIVILEGE", "INFORMATION_DISCLOSURE"],

technologies=["RBAC", "ABAC", "Policy engines"],

compliance_refs=["PCI-DSS 7.1", "SOC2"]

),


# Availability Controls

"AVL-001": SecurityControl(

id="AVL-001",

name="Rate Limiting",

description="Limit request rates to prevent abuse",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.APPLICATION,

effectiveness=Effectiveness.MEDIUM,

implementation_cost="Low",

maintenance_cost="Low",

mitigates_threats=["DENIAL_OF_SERVICE"],

technologies=["API Gateway", "Redis", "Token bucket"],

compliance_refs=["OWASP API Security"]

),

"AVL-002": SecurityControl(

id="AVL-002",

name="DDoS Protection",

description="Deploy DDoS mitigation services",

control_type=ControlType.PREVENTIVE,

layer=ControlLayer.NETWORK,

effectiveness=Effectiveness.HIGH,

implementation_cost="High",

maintenance_cost="Medium",

mitigates_threats=["DENIAL_OF_SERVICE"],

technologies=["Cloudflare", "AWS Shield", "Akamai"],

compliance_refs=["NIST CSF"]

),

}


def get_controls_for_threat(self, threat_category: str) -> List[SecurityControl]:

"""Get all controls that mitigate a threat category."""

return [

c for c in self.STANDARD_CONTROLS.values()

if threat_category in c.mitigates_threats

]


def get_controls_by_layer(self, layer: ControlLayer) -> List[SecurityControl]:

"""Get controls for a specific layer."""

return [c for c in self.STANDARD_CONTROLS.values() if c.layer == layer]


def get_control(self, control_id: str) -> Optional[SecurityControl]:

"""Get a specific control by ID."""

return self.STANDARD_CONTROLS.get(control_id)


def recommend_controls(

self,

threat: Threat,

existing_controls: List[str]

) -> List[SecurityControl]:

"""Recommend additional controls for a threat."""

available = self.get_controls_for_threat(threat.category)

return [c for c in available if c.id not in existing_controls]

`


Template 3: Mitigation Analysis


`python

class MitigationAnalyzer:

"""Analyze and optimize mitigation strategies."""


def __init__(self, plan: MitigationPlan, library: ControlLibrary):

self.plan = plan

self.library = library


def calculate_overall_risk_reduction(self) -> float:

"""Calculate overall risk reduction percentage."""

if not self.plan.mappings:

return 0.0


weighted_coverage = 0

total_weight = 0


for mapping in self.plan.mappings:

# Weight by threat risk score

weight = mapping.threat.risk_score

coverage = mapping.calculate_coverage()

weighted_coverage += weight * coverage

total_weight += weight


return weighted_coverage / total_weight if total_weight > 0 else 0


def get_critical_gaps(self) -> List[Dict]:

"""Find critical gaps that need immediate attention."""

gaps = self.plan.get_gaps()

critical_threats = {t.id for t in self.plan.threats if t.impact == "Critical"}


return [g for g in gaps if g["threat"] in critical_threats]


def optimize_budget(

self,

budget: float,

cost_map: Dict[str, float]

) -> List[SecurityControl]:

"""Select controls that maximize risk reduction within budget."""

# Simple greedy approach - can be replaced with optimization algorithm

recommended = []

remaining_budget = budget

unmapped = self.plan.get_unmapped_threats()


# Sort controls by effectiveness/cost ratio

all_controls = list(self.library.STANDARD_CONTROLS.values())

controls_with_value = []


for control in all_controls:

if control.status == ImplementationStatus.NOT_IMPLEMENTED:

cost = cost_map.get(control.id, float('inf'))

if cost <= remaining_budget:

# Calculate value as threats covered * effectiveness / cost

threats_covered = len([

t for t in unmapped

if t.category in control.mitigates_threats

])

if threats_covered > 0:

value = (threats_covered * control.effectiveness.value) / cost

controls_with_value.append((control, value, cost))


# Sort by value (higher is better)

controls_with_value.sort(key=lambda x: x[1], reverse=True)


for control, value, cost in controls_with_value:

if cost <= remaining_budget:

recommended.append(control)

remaining_budget -= cost


return recommended


def generate_roadmap(self) -> List[Dict]:

"""Generate implementation roadmap by priority."""

roadmap = []

gaps = self.plan.get_gaps()


# Phase 1: Critical threats with low coverage

phase1 = []

for gap in gaps:

mapping = next(

(m for m in self.plan.mappings if m.threat.id == gap["threat"]),

None

)

if mapping and mapping.threat.impact == "Critical":

controls = self.library.get_controls_for_threat(mapping.threat.category)

phase1.extend([

{

"threat": gap["threat"],

"control": c.id,

"control_name": c.name,

"phase": 1,

"priority": "Critical"

}

for c in controls

if c.status == ImplementationStatus.NOT_IMPLEMENTED

])


roadmap.extend(phase1[:5]) # Top 5 for phase 1


# Phase 2: High impact threats

phase2 = []

for gap in gaps:

mapping = next(

(m for m in self.plan.mappings if m.threat.id == gap["threat"]),

None

)

if mapping and mapping.threat.impact == "High":

controls = self.library.get_controls_for_threat(mapping.threat.category)

phase2.extend([

{

"threat": gap["threat"],

"control": c.id,

"control_name": c.name,

"phase": 2,

"priority": "High"

}

for c in controls

if c.status == ImplementationStatus.NOT_IMPLEMENTED

])


roadmap.extend(phase2[:5]) # Top 5 for phase 2


return roadmap


def defense_in_depth_analysis(self) -> Dict[str, List[str]]:

"""Analyze defense in depth coverage."""

layer_coverage = {layer.value: [] for layer in ControlLayer}


for mapping in self.plan.mappings:

for control in mapping.controls:

if control.status in [ImplementationStatus.IMPLEMENTED, ImplementationStatus.VERIFIED]:

layer_coverage[control.layer.value].append(control.id)


return layer_coverage


def generate_report(self) -> str:

"""Generate comprehensive mitigation report."""

risk_reduction = self.calculate_overall_risk_reduction()

gaps = self.plan.get_gaps()

critical_gaps = self.get_critical_gaps()

layer_coverage = self.defense_in_depth_analysis()


report = f"""

Threat Mitigation Report


Executive Summary

  • Overall Risk Reduction: {risk_reduction:.1f}%
  • Total Threats: {len(self.plan.threats)}
  • Total Controls: {len(self.plan.controls)}
  • Identified Gaps: {len(gaps)}
  • Critical Gaps: {len(critical_gaps)}

Defense in Depth Coverage

{self._format_layer_coverage(layer_coverage)}


Critical Gaps Requiring Immediate Action

{self._format_gaps(critical_gaps)}


Recommendations

{self._format_recommendations()}


Implementation Roadmap

{self._format_roadmap()}

"""

return report


def _format_layer_coverage(self, coverage: Dict[str, List[str]]) -> str:

lines = []

for layer, controls in coverage.items():

status = "?" if controls else "?"

lines.append(f"- {layer}: {status} ({len(controls)} controls)")

return "\n".join(lines)


def _format_gaps(self, gaps: List[Dict]) -> str:

if not gaps:

return "No critical gaps identified."

lines = []

for gap in gaps:

lines.append(f"- {gap['threat_name']}: {gap['issue']}")

lines.append(f" - Coverage: {gap['coverage']:.1f}%")

lines.append(f" - Recommendation: {gap['recommendation']}")

return "\n".join(lines)


def _format_recommendations(self) -> str:

recommendations = []

layer_coverage = self.defense_in_depth_analysis()


for layer, controls in layer_coverage.items():

if not controls:

recommendations.append(f"- Add {layer} layer controls")


gaps = self.plan.get_gaps()

if any(g["issue"] == "No control diversity" for g in gaps):

recommendations.append("- Add more detective and corrective controls")


return "\n".join(recommendations) if recommendations else "Current coverage is adequate."


def _format_roadmap(self) -> str:

roadmap = self.generate_roadmap()

if not roadmap:

return "No additional controls recommended at this time."


lines = []

current_phase = 0

for item in roadmap:

if item["phase"] != current_phase:

current_phase = item["phase"]

lines.append(f"\n### Phase {current_phase}")

lines.append(f"- [{item['priority']}] {item['control_name']} (for {item['threat']})")


return "\n".join(lines)

`


Template 4: Control Effectiveness Testing


`python

from dataclasses import dataclass

from typing import List, Callable, Any

import asyncio


@dataclass

class ControlTest:

control_id: str

test_name: str

test_function: Callable[[], bool]

expected_result: bool

description: str



class ControlTester:

"""Test control effectiveness."""


def __init__(self):

self.tests: List[ControlTest] = []

self.results: List[Dict] = []


def add_test(self, test: ControlTest) -> None:

self.tests.append(test)


async def run_tests(self) -> List[Dict]:

"""Run all control tests."""

self.results = []


for test in self.tests:

try:

result = test.test_function()

passed = result == test.expected_result

self.results.append({

"control_id": test.control_id,

"test_name": test.test_name,

"passed": passed,

"actual_result": result,

"expected_result": test.expected_result,

"description": test.description,

"error": None

})

except Exception as e:

self.results.append({

"control_id": test.control_id,

"test_name": test.test_name,

"passed": False,

"actual_result": None,

"expected_result": test.expected_result,

"description": test.description,

"error": str(e)

})


return self.results


def get_effectiveness_score(self, control_id: str) -> float:

"""Calculate effectiveness score for a control."""

control_results = [r for r in self.results if r["control_id"] == control_id]

if not control_results:

return 0.0


passed = sum(1 for r in control_results if r["passed"])

return (passed / len(control_results)) * 100


def generate_test_report(self) -> str:

"""Generate test results report."""

if not self.results:

return "No tests have been run."


total = len(self.results)

passed = sum(1 for r in self.results if r["passed"])


report = f"""

Control Effectiveness Test Report


Summary

  • Total Tests: {total}
  • Passed: {passed}
  • Failed: {total - passed}
  • Pass Rate: {(passed/total)*100:.1f}%

Results by Control

"""

# Group by control

controls = {}

for result in self.results:

cid = result["control_id"]

if cid not in controls:

controls[cid] = []

controls[cid].append(result)


for control_id, results in controls.items():

score = self.get_effectiveness_score(control_id)

report += f"\n### {control_id} (Effectiveness: {score:.1f}%)\n"

for r in results:

status = "?" if r["passed"] else "?"

report += f"- {status} {r['test_name']}\n"

if r["error"]:

report += f" - Error: {r['error']}\n"


return report

``


Best Practices


Do's

  • Map all threats - No threat should be unmapped
  • Layer controls - Defense in depth is essential
  • Mix control types - Preventive, detective, corrective
  • Track effectiveness - Measure and improve
  • Review regularly - Controls degrade over time

Don'ts

  • Don't rely on single controls - Single points of failure
  • Don't ignore cost - ROI matters
  • Don't skip testing - Untested controls may fail
  • Don't set and forget - Continuous improvement
  • Don't ignore people/process - Technology alone isn't enough

Resources


  • [NIST Cybersecurity Framework](https://www.nist.gov/cyberframework)
  • [CIS Controls](https://www.cisecurity.org/controls)
  • [MITRE D3FEND](https://d3fend.mitre.org/)

Informacion

Estado
Activo
Origen custom
Usos 3
Ultimo uso 23/01 16:57
Actualizado 09/01/2026 00:10

Archivo origen

Z:\Repositorios\platform\docs\.ai\skills\threat-mitigation-mapping\SKILL.md