4.8 KiB
4.8 KiB
13. Cross-Service Threat Correlation Scoring and Unified Alert Feed
meta: id: core-services-13 feature: core-services-implementation priority: P2 depends_on: [core-services-05, core-services-07, core-services-08] tags: [correlation, threat-scoring, unified-alerts, intelligence, dashboard]
objective:
- Activate the correlation service to cross-reference findings across VoicePrint, DarkWatch, SpamShield, HomeTitle, and RemoveBrokers, generating unified threat scores and correlated alert narratives that explain multi-vector attacks.
deliverables:
- Cross-service correlation rules (e.g., breached email + spam call from same source = coordinated attack)
- Unified threat score algorithm (0–100) per user and per family member
- Correlated alert narratives: "Your email was breached on Monday, and today you received a spam call to that number — this may be a targeted attack"
- Dashboard threat score widget with historical trend
steps:
- Analyze existing correlation service (
services/correlation/):- Review current schema and logic in
correlation.service.ts - Identify data sources available from each service
- Review current schema and logic in
- Define correlation rules:
- Rule 1: Same email found in HIBP breach AND receiving spam calls → coordinated attack (+30 threat score)
- Rule 2: Property lien filed AND data broker listing active → identity theft in progress (+40 threat score)
- Rule 3: Voice clone detected AND family member SSN on dark web → targeted family scam (+50 threat score)
- Rule 4: Multiple breaches in 30 days → compromised identity (+20 threat score)
- Rule 5: Spam call from number associated with known scam campaign → high risk (+25 threat score)
- Implement correlation detection pipeline:
- Subscribe to alert creation events from all 5 services
- Window function: look back 30 days for related findings
- Match on shared entities (email, phone, SSN, address, name)
- Implement threat scoring algorithm:
- Base score: sum of individual alert severities (info=1, warning=3, critical=5)
- Correlation bonus: +10–50 per matched rule
- Time decay: scores decrease by 10% per week (old alerts matter less)
- Family aggregation: highest individual score + average of others / 2
- Cap at 100, floor at 0
- Implement unified alert feed:
- Merge individual service alerts into chronological feed
- Group correlated alerts into "attack narratives"
- Show narrative summary: "3 related events detected — possible coordinated attack"
- Update dashboard widgets:
- Threat Score widget: current score with color coding (green <30, yellow 30–60, red >60)
- Trend graph: score over last 90 days
- Alert Feed widget: unified feed with narrative grouping
- Add proactive recommendations:
- If score > 60: recommend password changes, credit freeze, family notification
- If HomeTitle + RemoveBrokers correlated: recommend title insurance review
- If VoicePrint detected: recommend warning family members, filing FTC report
tests:
- Unit: Mock alerts from multiple services, verify correlation rules fire correctly
- Integration: Create correlated alerts in database, verify threat score calculation
- E2E: Trigger breach alert + spam alert for same email → verify unified narrative created
acceptance_criteria:
- Correlation rules detect cross-service relationships within 30-day window
- Threat score is calculated from individual alert severities + correlation bonuses
- Score decays by 10% per week (time-weighted relevance)
- Family plan aggregates scores across members
- Unified alert feed groups correlated events into narrative summaries
- Dashboard threat score widget updates in real-time as new alerts arrive
- Proactive recommendations appear based on current threat score and active correlations
- Correlation engine doesn't create false positives (test with 100 random alerts, <5% false correlation rate)
- Historical trend graph shows score changes over 90 days
- Each correlated narrative links to individual alert details
validation:
- Run
vitest run correlation.test.ts— all tests pass - Manual: Create test alerts (breached email + spam call), verify correlation detected
- Dashboard: Threat score updates from 15 to 55 after correlation bonus applied
- Trend: 90-day graph shows spike during test period
notes:
- The existing
correlation.service.tsandcorrelation.tsrouter need activation — not just stubs - Correlation is the key differentiator from point-solution competitors (Aura, LifeLock)
- False positive rate must be low — users will ignore alerts if too many are irrelevant
- Consider using graph database (Neo4j) for complex relationship queries at scale
- The existing
normalizedAlertstable already stores cross-service alerts — use this as correlation source - Mobile apps should show simplified threat score and latest narrative, not full correlation graph