OPEN BETA
OPEN BETA
KASKADIERENDE AUSWIRKUNGSANALYSE

Blast Radius Engine

Graphentheoretische Analyse von Infrastruktur-Abhängigkeiten. Quantifiziert, wie weit ein einzelner kompromittierter Host durch gemeinsame IP-Blöcke, ASNs, TLS-Zertifikate und DNS-Cluster kaskadieren kann.

BFSErreichbarkeit
HubZentralität
SPOFErkennung
O(V+E)Komplexität

// Infrastruktur-Gravitationsmodell

Traditionelles Vulnerability-Scoring bewertet jeden Host isoliert. Die Blast Radius Engine modelliert Infrastruktur als gewichteten gerichteten Graphen, bei dem Kanten gemeinsame physische oder logische Abhängigkeiten repräsentieren. Ein Host mit niedrigem Schweregrad, der im Zentrum eines gemeinsamen CDN-Clusters liegt, kann einen höheren realen Einfluss haben als ein isolierter kritischer Host ohne ausgehende Konnektivität.

Kantentypen & Gewichte

Gemeinsames /24-Subnetzw = 0.80
Gemeinsamer ASNw = 0.60
Identische TLS-Zertifikat-Seriennummerw = 0.95
Gemeinsamer CDN-Edge-Nodew = 0.50
Gleicher DNS-Nameserver-Clusterw = 0.70
Gemeinsame MX-Infrastrukturw = 0.65

Hub-Score-Formel

Jeder Knoten erhält einen Hub-Score aus Erreichbarkeit und Zentralität:

Hub Score (H) H(v) = reach(v) × 0.6 + betweenness(v) × 0.4

Wobei reach(v) = BFS-erreichbare Knotenanzahl, betweenness(v) normiert auf [0,1].

Kaskaden-Simulation

Für jeden als Einstiegspunkt markierten Knoten propagiert eine Kaskaden-Simulation mit Dämpfung:

Auswirkung bei Hop k I_k = I₀ × ∏ w(Kanten auf Pfad)

Propagation endet bei I_k < 0.05 (5%-Residual-Schwelle).

// BFS-Erreichbarkeitsberechnung

Erreichbarkeit wird pro Knoten mit Standard-BFS über den gerichteten Infrastruktur-Graphen berechnet. Das Ergebnis erfasst, wie viele eindeutige Ziele von einem Host durch Infrastruktur-Abhängigkeiten erreichbar sind — das laterale Bewegungspotenzial des Angreifers bei Kompromittierung dieses Hosts.

def compute_blast_radius(G: nx.DiGraph) -> dict[int, BlastRadiusResult]: results = {} for node in G.nodes(): # BFS-erreichbare Menge (ohne Self) reachable = set(nx.descendants(G, node)) reach_count = len(reachable) # Gewichtete Auswirkung: Summe der Kaskaden-Gewichte zu jedem erreichbaren Knoten weighted_impact = sum( _path_weight(G, node, r) for r in reachable ) # Betweenness Centrality (vorab für den gesamten Graphen berechnet) betweenness = G.nodes[node].get("betweenness", 0.0) hub_score = reach_count * 0.6 + betweenness * 0.4 * len(G.nodes) results[node] = BlastRadiusResult( node_id=node, reachable_count=reach_count, reachable_nodes=list(reachable), weighted_impact=weighted_impact, hub_score=hub_score, is_spof=(betweenness > 0.15 and reach_count > 10), ) return results

// SPOF-Klassifizierung

Ein Single Point of Failure wird durch die Kombination hoher Betweenness-Zentralität (viele Pfade laufen durch ihn) und hoher Erreichbarkeit (viele Knoten hängen von ihm ab) klassifiziert. SPOFs werden unabhängig von ihrem individuellen CVE-Score als Priority-1-Remediationsziele markiert.

KlassifizierungBetweennessErreichbarkeitMaßnahme
Kritischer SPOF> 0.30> 25P1-Remediation, Executive-Alert
Hoher SPOF> 0.15> 10P2-Remediation innerhalb SLA
Moderater Hub> 0.05> 5Monitoren, in nächsten Hardening-Sprint aufnehmen
Peripherer Knoten≤ 0.05≤ 5Normale schweregrad-basierte Remediationspriorität

// Remediation-Impact-Simulation

Die Engine simuliert den Effekt der Remediation eines beliebigen Knotens — entfernt ihn aus dem Graphen und berechnet flotten-weite Metriken neu. Das produziert eine priorisierte Liste, welche Fixes die größte Risikoreduktion liefern — über rohe CVSS-Scores hinaus.

API-EndpointBeschreibung
POST /analytics/blast-radius/simulateVollständige Blast-Radius-Analyse für aktuellen Tenant ausführen
GET /analytics/blast-radius/resultLetztes gecachtes Ergebnis mit SPOF-Liste und Hub-Scores
POST /analytics/blast-radius/remediation-impactEntfernung eines spezifischen Knotens simulieren — gibt Delta-Metriken zurück
GET /analytics/blast-radius/graphD3-kompatibles JSON des vollständigen Blast-Radius-Graphen
# Beispiel Remediation-Impact-Response { "node": "cdn-proxy.example.com", "current_metrics": { "fleet_blast_radius_avg": 14.3, "spof_count": 3, "max_reach": 41 }, "after_remediation": { "fleet_blast_radius_avg": 8.1, // -43% "spof_count": 1, // -2 SPOFs gelöst "max_reach": 22 // -46% }, "risk_delta_score": -31.4, "recommendation": "CDN-Proxy isolieren — Netzwerksegmentierung + WAF-Regel hinzufügen." }