diff --git a/backend/app/services/attck_evaluations_service.py b/backend/app/services/attck_evaluations_service.py index 3cc6e74..90ec6b2 100644 --- a/backend/app/services/attck_evaluations_service.py +++ b/backend/app/services/attck_evaluations_service.py @@ -64,10 +64,20 @@ _HEADERS = { # --------------------------------------------------------------------------- # Fallback: hardcoded public CrowdStrike ENTERPRISE rounds -# Used when evals.mitre.org API is unreachable (Cloudflare, outage, etc.) -# These are well-known, publicly documented rounds — safe to hardcode. +# Used when evals.mitre.org API is unreachable (Cloudflare 502, outage, etc.) +# +# Names use the EXACT slugs the live API returns (hyphens, not underscores). +# Verified from live API response on 2025-06-05. +# CrowdStrike did NOT participate in Round 6 (OilRig) — not included. # --------------------------------------------------------------------------- _FALLBACK_ROUNDS: list[dict[str, Any]] = [ + { + "name": "apt3", + "display_name": "APT3", + "eval_round": 1, + "domain": "ENTERPRISE", + "status": "PUBLIC", + }, { "name": "apt29", "display_name": "APT29", @@ -76,14 +86,14 @@ _FALLBACK_ROUNDS: list[dict[str, Any]] = [ "status": "PUBLIC", }, { - "name": "carbanak_fin7", + "name": "carbanak-fin7", "display_name": "Carbanak+FIN7", "eval_round": 3, "domain": "ENTERPRISE", "status": "PUBLIC", }, { - "name": "wizard_spider_sandworm", + "name": "wizard-spider-sandworm", "display_name": "Wizard Spider + Sandworm", "eval_round": 4, "domain": "ENTERPRISE", @@ -97,9 +107,9 @@ _FALLBACK_ROUNDS: list[dict[str, Any]] = [ "status": "PUBLIC", }, { - "name": "oilrig", - "display_name": "OilRig", - "eval_round": 6, + "name": "er7", + "display_name": "Enterprise 2025", + "eval_round": 7, "domain": "ENTERPRISE", "status": "PUBLIC", }, diff --git a/frontend/src/pages/SystemPage.tsx b/frontend/src/pages/SystemPage.tsx index 49147fc..1182dd1 100644 --- a/frontend/src/pages/SystemPage.tsx +++ b/frontend/src/pages/SystemPage.tsx @@ -438,18 +438,24 @@ export default function SystemPage() { - {/* API fallback warning */} - {!evalApiReachable && evalApiError && ( + {/* API fallback warning — only when no rounds loaded at all */} + {!evalApiReachable && evalApiError && (!evalRounds || evalRounds.length === 0) && (