kitos
080ce56de7
Aegis CI / lint-and-test (push) Has been cancelled
feat(attack-paths): Phase 10 — Attack Paths & Advanced Purple Team [FASE-10]
Models (5 tables):
- AttackPath: named reusable attack scenario with template flag
- AttackPathStep: ordered kill-chain step (technique + test link)
- AttackPathExecution: a run with Red/Blue leads, timing, stored metrics
- AttackPathStepResult: per-step detected/not_detected/skipped result
- TimelineEntry: timestamped Red/Blue/system actions for MTTD/MTTR
Migration b036atk: raw SQL to avoid SQLAlchemy DDL hook issues
Service (attack_path_service.py):
- Full CRUD for paths + steps (add, update, delete, reorder)
- Execution lifecycle: create → start → execute steps → complete/abort
- Pre-creates pending step results on execution creation
- Auto-adds system timeline entries on key state transitions
- complete_execution() computes: detection_rate, mttd_seconds,
furthest_undetected_step, detected/not_detected/skipped counts
- get_kill_chain_metrics(): per-step breakdown + phase summary
Router /api/v1/attack-paths (20 endpoints):
POST/GET/PATCH/DELETE attack paths
GET/POST/PATCH/DELETE steps + reorder
POST/GET executions per path
GET/POST/start/complete/abort executions
POST/GET step results
POST/GET timeline entries
GET kill-chain metrics
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:11:01 +02:00
..
2026-02-06 12:26:26 +01:00
2026-05-18 14:00:48 +02:00
2026-02-20 14:28:52 +01:00
2026-02-20 15:33:23 +01:00
2026-05-20 13:11:01 +02:00
2026-02-20 13:28:14 +01:00
2026-05-19 12:05:35 +02:00
2026-02-20 14:28:52 +01:00
2026-02-20 15:33:23 +01:00
2026-02-19 19:04:32 +01:00
2026-02-20 15:33:23 +01:00
2026-02-17 15:43:05 +01:00
2026-02-10 13:22:23 +01:00
2026-02-19 17:06:32 +01:00
2026-02-19 15:56:42 +01:00
2026-02-10 15:53:24 +01:00
2026-02-20 14:34:24 +01:00
2026-02-20 13:31:18 +01:00
2026-05-19 16:35:02 +02:00
2026-05-19 16:29:04 +02:00
2026-02-19 17:39:31 +01:00
2026-02-20 15:33:23 +01:00
2026-05-19 15:10:31 +02:00
2026-02-19 19:02:36 +01:00
2026-02-20 16:07:36 +01:00
2026-02-20 15:33:23 +01:00
2026-02-20 14:34:24 +01:00
2026-02-20 15:33:23 +01:00
2026-02-19 17:06:07 +01:00
2026-02-20 15:33:23 +01:00
2026-05-19 13:40:45 +02:00
2026-02-09 17:24:44 +01:00
2026-02-20 14:42:20 +01:00
2026-05-19 16:48:47 +02:00
2026-05-18 14:00:37 +02:00
2026-05-18 14:00:42 +02:00
2026-05-19 16:48:47 +02:00
2026-02-10 09:21:35 +01:00
2026-05-18 15:07:12 +02:00
2026-05-18 15:07:12 +02:00
2026-02-20 15:33:23 +01:00
2026-05-18 15:07:12 +02:00
2026-05-18 14:50:31 +02:00
2026-02-19 15:23:01 +01:00
2026-02-20 14:34:24 +01:00
2026-05-18 13:36:26 +02:00
2026-02-19 18:35:09 +01:00
2026-02-20 14:28:52 +01:00
2026-02-18 15:49:59 +01:00
2026-02-20 15:33:23 +01:00
2026-02-19 17:40:00 +01:00
2026-02-20 13:28:14 +01:00
2026-05-19 13:40:45 +02:00
2026-02-20 14:42:20 +01:00