// AttackSurface.jsx — animated radial map of the 9 attack surfaces we cover,
// with a live ATT&CK-aligned tactic counter beneath.
const SURFACES = [
{ id: 'web', label: 'Web Apps', icon: 'globe', cves: 47, vectors: 24 },
{ id: 'api', label: 'APIs', icon: 'code', cves: 38, vectors: 18 },
{ id: 'mobile', label: 'Mobile', icon: 'fingerprint', cves: 22, vectors: 16 },
{ id: 'ext', label: 'External net', icon: 'network', cves: 56, vectors: 21 },
{ id: 'int', label: 'Internal AD', icon: 'server', cves: 41, vectors: 28 },
{ id: 'cloud', label: 'Cloud', icon: 'cloud', cves: 29, vectors: 19 },
{ id: 'iot', label: 'IoT / OT', icon: 'radar', cves: 17, vectors: 14 },
{ id: 'redteam', label: 'Red Team', icon: 'target', cves: 8, vectors: 32 },
{ id: 'ai', label: 'AI · LLM', icon: 'sparkle', cves: 12, vectors: 11 },
];
const ATTCK_TACTICS = [
{ code: 'TA0043', name: 'Reconnaissance', count: 247 },
{ code: 'TA0042', name: 'Resource Dev', count: 84 },
{ code: 'TA0001', name: 'Initial Access', count: 631 },
{ code: 'TA0002', name: 'Execution', count: 902 },
{ code: 'TA0003', name: 'Persistence', count: 458 },
{ code: 'TA0004', name: 'Privilege Esc.', count: 712 },
{ code: 'TA0005', name: 'Defense Evasion', count: 489 },
{ code: 'TA0006', name: 'Credential Access', count: 814 },
{ code: 'TA0007', name: 'Discovery', count: 1024 },
{ code: 'TA0008', name: 'Lateral Movement', count: 396 },
{ code: 'TA0009', name: 'Collection', count: 287 },
{ code: 'TA0010', name: 'Exfiltration', count: 142 },
{ code: 'TA0040', name: 'Impact', count: 173 },
{ code: 'TA0011', name: 'Command & Control', count: 318 },
];
const AttackSurface = () => {
return (
Coverage
We cover nine attack surfaces and all fourteen MITRE ATT&CK tactics. Every test is logged and every finding is reproducible.
Every part of your attack surface