Detection Rules Module

Complete

Overview

The Detection Rules module provides the rule engine that powers ThreatOps alert detection. It includes 372 pre-built Sigma-format detection rules covering all 14 MITRE ATT&CK tactics, mapped across 5 SIEM platforms. Rules range from critical severity (ransomware, C2 beacons) to informational (audit events), and tenants can create their own custom rules on top of the engine defaults.

This is a foundational module -- every alert generated by the platform traces back to a detection rule. The rule optimizer service continuously tracks false positive rates to recommend rule tuning.

372 detection rules across 20+ modules covering Initial Access, Execution, Persistence, Privilege Escalation, Defense Evasion, Credential Access, Discovery, Lateral Movement, Collection, C2, Exfiltration, Impact, and more.

What Was Proposed

What's Built

372 Sigma detection rules (20+ modules)✓ Complete
5 SIEM platform targets✓ Complete
All 14 MITRE ATT&CK tactics covered✓ Complete
Custom rule CRUD (create, read, update, delete)✓ Complete
Rule enable/disable API✓ Complete
Statistics and summary endpoint✓ Complete
Data sources connector endpoint✓ Complete
Engine + DB rule merging✓ Complete
Frontend table with toggle switches✓ Complete
Expandable rule detail rows✓ Complete
Gov/compliance rule modules (FedRAMP, CISA, Zero-Trust)✓ Complete

Architecture

API Router

File: app/routers/detection_rules.py — Prefix: /api/v1/detection-rules

GET    /api/v1/detection-rules/                    # List all rules (engine + DB, filters: severity, mitre_tactic, enabled)
GET    /api/v1/detection-rules/{rule_id}            # Get single rule by ID
POST   /api/v1/detection-rules/                    # Create custom tenant rule
PATCH  /api/v1/detection-rules/{rule_id}           # Update rule (DB or in-memory engine rules)
DELETE /api/v1/detection-rules/{rule_id}           # Delete custom rule
GET    /api/v1/detection-rules/stats/summary       # Rule statistics (counts by severity, tactic, data sources)
GET    /api/v1/detection-rules/connectors/data-sources  # List all configured data source connectors

Rule Loading Architecture

The router merges two rule sources:

  1. Rules Engine — 372 rules loaded from app/rules/ Python modules via get_all_rules(). These are cached in memory on first access.
  2. Database Rules — Tenant-specific custom rules stored in PostgreSQL. Merged at query time; DB rules with IDs matching engine rules are deduplicated.

The PATCH endpoint handles both: for DB rules it updates via ORM, for engine rules it modifies the cached in-memory copy.

Rules Engine Modules

Located at platform/api/app/rules/, the engine contains 20+ Python modules:

ModuleCategory
high_severity.pyHigh severity cross-tactic detections
high_identity.pyIdentity and credential attacks
high_network_endpoint.pyNetwork and endpoint threats
high_remote_ransom.pyRemote access and ransomware
high_threat_devops.pyThreat intelligence and DevOps CI/CD
high_vuln_endpoint2.pyVulnerability exploitation and endpoint
medium_severity.py / medium_part2.py / medium_part3.pyMedium severity detections
low_severity.py / low_auth_account.py / low_cloud_devops.pyLow severity detections
low_data_firewall.py / low_sharepoint_network.py / low_vpn_aws.pyLow severity infrastructure rules
informational.pyInformational / audit events
gov_fedramp.pyFedRAMP compliance rules
gov_cisa_pam.pyCISA PAM compliance rules
gov_zerotrust.pyZero-trust architecture rules
gov_azure.pyAzure government rules
gov_dlp_supply_ir.pyDLP, supply chain, and IR rules
data_sources.pyData source connector definitions

Routing

LayerPath
/detection-rulesFrontend list page (Next.js App Router)
/api/v1/detection-rulesAPI prefix (FastAPI router)

Prerequisites

Data Model

Model: app/models/detection_rule.py — Table: detection_rules (extends Base)

FieldTypeDescription
idString(36) PKUUID primary key
tenant_idString(36) nullableTenant scope (null for engine rules)
nameString(500)Rule name (required)
sigma_yamlTextSigma rule definition in YAML format
severityEnum(RuleSeverity)critical / high / medium / low / informational
mitre_tacticString(100)MITRE ATT&CK tactic
mitre_technique_idString(20)MITRE technique ID
enabledBooleanRule enabled/disabled (default: true)
siem_targetsJSONTarget SIEM platforms (default: ["sentinel", "splunk"])
false_positive_notesTextKnown FP guidance
authorString(255)Rule author (default: "ThreatOps")
tagsJSONRule tags (e.g., ["sigma", "production"])
created_atDateTimeCreation timestamp
updated_atDateTimeLast update timestamp

UI Layout

Detection Rules Page