From 8f764d8e3975693c37279a8c480a43bab48d370f Mon Sep 17 00:00:00 2001 From: Kitos Date: Tue, 17 Feb 2026 17:53:15 +0100 Subject: [PATCH] fix: auto-detect kill chain phase when adding tests to custom campaigns --- backend/app/routers/campaigns.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/app/routers/campaigns.py b/backend/app/routers/campaigns.py index d1b3da4..082fae2 100644 --- a/backend/app/routers/campaigns.py +++ b/backend/app/routers/campaigns.py @@ -24,6 +24,7 @@ from app.services.campaign_service import ( validate_no_circular_dependency, get_campaign_progress, generate_campaign_from_threat_actor, + TACTIC_TO_PHASE, ) from app.services.campaign_scheduler_service import calculate_next_run from app.services.notification_service import create_notification @@ -331,13 +332,20 @@ def add_test_to_campaign( if depends_on: validate_no_circular_dependency(db, uuid.UUID(campaign_id), ct_id, depends_on) + # Auto-detect kill chain phase from the test's technique tactic if not provided + phase = payload.phase + if not phase and test.technique_id: + technique = db.query(Technique).filter(Technique.id == test.technique_id).first() + if technique and technique.tactic: + phase = TACTIC_TO_PHASE.get(technique.tactic, None) + campaign_test = CampaignTest( id=ct_id, campaign_id=campaign_id, test_id=payload.test_id, order_index=order_index, depends_on=depends_on, - phase=payload.phase, + phase=phase, ) db.add(campaign_test) db.commit()