Technology deep-dive
Sigma and detection portability: the fourth foundational standard
Sigma is one of four foundational open standards I name when I describe the security lakehouse, alongside Apache Arrow for in-memory representation, Apache Iceberg for table format, and OCSF for event schema. This is the entry piece for Sigma on this site: what the format is, what ports, and where it leaks. Sigma's atomic-detection portability story is real and useful, the correlation story is not yet at parity with vendor-native engines, and two deeper pieces pick up from there, one measuring the correlation gap and one on why Sigma outlasted the other attempts at sharing detection content.
Reading time: about 13 minutes. Evidence tier: B overall (project documentation, practitioner accounts, vendor product pages I can verify), with Tier A on Sigma's own specification and Tier B for the lab's compile measurements, which live in the correlation essay. Flagged inline.

What Sigma is
An open YAML detection format with an intermediate representation
Sigma is an open, engine-agnostic detection rule format. Detections are written in YAML (a structured description of log sources, field matches, conditions, and metadata) and then converted by a backend compiler into the query language of a target detection engine. Florian Roth and Thomas Patzke originated the format in 2017 out of the German SOC community, and it has been actively developed since. The Sigma project at SigmaHQ on GitHub maintains both the specification and a public rule repository with thousands of community-contributed detections.
The thing that matters architecturally is the intermediate representation. A Sigma rule is not directly executable. It compiles, via the pySigma toolchain, into Splunk SPL, Microsoft Sentinel KQL, Elastic ES|QL or EQL, Google SecOps YARA-L, lakehouse SQL, and around thirty other backends (about 31 pySigma plugins at the last count I checked) depending on which pySigma plugins you install. The single source of truth (the YAML rule) converts to whatever dialect the target engine speaks.
That is the structural argument. Detection content written once should not need to be re-authored every time a SOC swaps SIEMs or adds a second analytical engine. The Sigma specification itself is the only Tier A piece of evidence I cite without qualifier. The spec exists, is published, and is the authoritative description of the format. Everything else in this essay is Tier B or below.
The portability argument
Write once, convert and validate per backend.
The marketing tagline for Sigma is "write once, deploy everywhere," which is sloppy phrasing I won't defend, because the engineering reality is closer to "write once, convert per backend, validate per environment, and accept that some constructs will not round-trip cleanly." That's still a useful property, though it's a weaker one than cross-platform binary compatibility, and an architect evaluating Sigma for a deployment should expect the weaker version.
The cost Sigma is trying to eliminate is the rewrite tax, because today most SOCs I look at maintain the same detection logic in three places. A username-enumeration rule lives once in SPL for Splunk Enterprise Security, once in KQL for Sentinel as the SOAR/cloud target, and once in YARA-L or Chronicle SQL for the long-tail archive, which means three rule files and three change-management workflows, plus three sets of unit tests if you're disciplined and zero if you're not. When a field renames or a log source format shifts, the synchronization cost is per engine, per rule, per change, and that cost is what compounds into the "detection backlog" most SOC managers describe, since the hard part isn't authoring the detections but keeping the same detection consistent across engines.
Sigma's promise is that the YAML rule becomes the source of truth and the engine-specific dialects become compiled artifacts. The synchronization cost drops to one rule per detection, and the conversion to each backend is automated through pySigma. The CI/CD pipeline becomes: lint the YAML, compile to each backend, run regression tests against historical telemetry per backend, deploy.
The hedge is that conversion is lossy in specific places. Vendor-native SPL or KQL is often more expressive than Sigma's intermediate representation, because there are SPL macros, KQL operators, and chained transformations that don't have a Sigma equivalent, so a detection author who needs the full expressive power of SPL is going to write SPL. Sigma covers the common cases well and doesn't reach the long tail, which is how I'd read as a property of the abstraction rather than a defect, since every intermediate representation I've worked with has had the same property.
What Sigma is good at
Atomic detections, well-known patterns, ATT&CK coverage.
The class of detection Sigma handles cleanly is the atomic detection, a single-event match against a known indicator pattern. Suspicious command-line invocations, known-bad process trees, specific registry modifications, anomalous Windows event IDs, exfiltration to specific TLDs, lateral-movement fingerprints that appear in one event record. If the detection answer is "this single event matches the following field conditions," Sigma is well-shaped for it.
The SigmaHQ public rule repository is the largest practical demonstration of this. It contains thousands of community-maintained rules organized by log source (Windows Sysmon, Linux auditd, AWS CloudTrail, Azure activity logs, Office 365, network IDS output) and tagged against MITRE ATT&CK techniques. For an organization that wants a baseline of community detections quickly, downloading the SigmaHQ repo and compiling it against the local engine is a sensible starting point, though it's a starting point rather than a finished detection program, giving you thousands of pre-written examples of the atomic-detection pattern to curate down from.
The MITRE ATT&CK coverage angle deserves its own note, because Sigma rules carry ATT&CK technique tags as metadata, which means a SOC can compile coverage maps mechanically and see which techniques have detections, which don't, and which have multiple detections from independent sources. That mechanical-mapping property is an underappreciated feature, since it supports detection-maturity work that previously required manual spreadsheet maintenance.
A point on how cross-SIEM coverage actually works in practice, because the mental model many people reach for is wrong, since the thing that delivers broad coverage today is aggregation rather than auto-translation. Michael Haag's Security Detections MCP aggregates 8,200-plus community detections and indexes them by MITRE ATT&CK technique, and those detections are written in each platform's native language and curated by the communities that authored them, rather than one canonical rule machine-translated across engines. That distinction matters for what you should expect from a Sigma pilot, because Sigma's compiler gives you per-backend conversion of the rules you author and not a magically translated universal corpus. Where coverage is broad, it's broad because a community wrote and curated the per-engine variants, and that curation is the work the tooling doesn't do for you.
For the SOC capability ladder I describe elsewhere on this site (see detection maturity for the long version), Sigma is the enabler that moves a team from ad-hoc rule authoring (level 1) to repeatable, portable, version-controlled detection content (level 2 and into level 3), though it doesn't by itself get you to the higher levels, and the correlation-maturity gap I describe next is why.
The correlation-maturity caveat
Where Sigma is not yet at parity with vendor-native engines.
I want to be direct about this because it's the central critique of the Sigma story, and I see it underplayed in vendor talks and overplayed in detractor pieces. Sigma's atomic-detection coverage is excellent, while its multi-event correlation coverage is real but uneven across backends.
The kinds of detection that benefit from a correlation engine include time-windowed sequence detection ("four failed logins followed by one success from the same source within sixty seconds"), statistical baselining ("this account's login rate is three standard deviations above its trailing thirty-day baseline"), entity-resolution joins across multiple log sources ("this DNS query, this firewall flow, and this EDR process-start are the same incident"), and graph-shaped correlations across event chains. Splunk Enterprise Security correlation searches, Microsoft Sentinel analytics rules, and Chronicle's multi-event rule constructs all support these constructs as first-class features with mature production tooling around them.
Sigma's response is the correlation extension, published as the Sigma Correlation Rules Specification (version 2.1.0, August 2025), which adds event counts, distinct-value counts, temporal and temporal-ordered correlation to the format. The open question is what the backends do with it, and I measured that rather than guess. Compiling the same five correlation rules with pySigma 1.3.3, Splunk SPL and Elasticsearch ES|QL kept four at full fidelity and refused one, Elasticsearch Lucene refused all five, and OpenSearch PPL compiled three of them as partials that silently drop the time window, while all six single-event rules ported everywhere. The method, the backend census and the caveats are in Sigma 2.0 correlations and the pySigma backend reality; the short version is that correlation now ports to some engines and quietly degrades on others, so a correlation rule has to be checked per backend in a way an atomic rule mostly doesn't.
The write-weak side of Sigma extends past correlation, and the most useful confirmation comes from a party with no reason to flatter the format. Tenzir, building a security data pipeline product, concedes publicly that Sigma's value-typing is thin (IP addresses, CIDR ranges, and timestamps are treated string-first rather than as typed values) and that its taxonomy and field-mapping layer is weak. I read that as a credible Tier B confirmation precisely because Tenzir is a vendor critiquing a standard it otherwise supports. Their own answer is telling, because rather than replacing Sigma they pair it with OCSF and a set of pipeline mapping operators that supply the typing and field normalization Sigma doesn't, so the atomic rule grammar stays while the value-typing and taxonomy get handled in the layer beneath it, which is the same write-side anchoring the correlation gap shows.
What that means for an architect is that Sigma is the right home for the atomic-detection portion of a detection portfolio while it isn't yet a complete replacement for vendor-native correlation features in the analytics tier above atomic detections. A reasonable architecture today authors atomic detections in Sigma, compiles correlation rules only to the backends that measurably keep their semantics, and leaves the highest-value multi-event correlations in vendor-native form elsewhere. I would rather an architect plan around that gap than adopt Sigma on a "write once, correlate everywhere" promise that doesn't hold yet.
The four-pillar argument
Where Sigma fits alongside Arrow, Iceberg, and OCSF.
The four-pillar framing (Arrow, Iceberg, OCSF, Sigma) is a layered argument about which open standards remove which kinds of vendor lock-in: Arrow and Iceberg at the data layer, OCSF at the schema layer, and Sigma at the analysis layer, where it lets the detection content sitting on top of portable data move too. The correlation essay walks the full frame, so here I only want to make two points that matter for a reader new to Sigma.
One clarification, because the two standards get conflated in conversation. OCSF does not compete with Sigma as a detection language, and Sigma's authoring role is not under threat from it. OCSF's Detection Finding class (UID 2004) is an output schema. It describes the shape of a finding a detection emits, not the grammar you author the detection in. The pairing is complementary: Sigma is where you write the rule, OCSF is the normalized field set the rule reads from and the normalized finding it writes to. The Sigma project leans into exactly that pairing. SigmaHQ maintains pySigma-pipeline-ocsf, an official MIT-licensed processing pipeline that maps Sigma's field references onto OCSF-normalized fields so a single rule compiles against an OCSF-shaped lakehouse, which is the stack working as intended rather than the two standards contending.
There's a structural symmetry worth naming, because it runs through every pillar in this stack. Sigma's portability is read-strong and write-weak. The atomic rule grammar ports cleanly to around thirty backends; the things on the write side (value-typing, taxonomy and field mapping, the correlation semantics described above) don't port and stay anchored to whichever engine actually executes them. That's the same asymmetry I described in the lakehouse catalog work, where an open schema reads everywhere but the security-grade write controls (ABAC, provenance, audit-retention) don't travel with the data and stay bound to a specific catalog and engine, so read portability tends to be the easy half of an open standard in security while write portability is where the lock-in retreats to and survives. Sigma sits on the same fault line as Iceberg and OCSF, which is a reason to expect the correlation gap to close slowly rather than a reason to doubt the pillar.
Practical adoption patterns
How teams are actually using Sigma in production.
Three patterns dominate in the deployments I've seen or talked to practitioners about. Each addresses a different point on the build-versus-buy spectrum.
The first is commercial: detection-as-code platforms such as Anvilogic and Panther that treat portability as a product feature. The correlation essay names the vendors and what their public documentation supports, so I won't repeat that here beyond saying that the category exists and customers pay for it.
Hand-rolled detection-as-code with pySigma plus CI/CD
The second pattern is teams that build their own detection-as-code repo with pySigma at the core, GitHub Actions or GitLab CI as the build system, and per-backend deployment jobs that push compiled artifacts into Splunk, Sentinel, Chronicle, or a lakehouse engine. The detection content lives in YAML in version control; the CI pipeline lints, compiles, regression-tests against historical telemetry, and deploys. This is the pattern most aligned with the DetectFlow methodology I describe at /reference-architectures/methodologies/detectflow.
The cost is that this pattern works for teams that already operate engineering discipline, because if your SOC does not have a Git workflow, code review, and a CI mindset, then adopting Sigma plus pySigma plus CI/CD is a cultural transformation more than a tooling decision, and the tooling is the easy part. Teams that adopt the tooling without the discipline end up with a YAML repo that's drifted out of sync with what's deployed in their SIEM, which is the worst of both worlds.
Sigma as a starting baseline plus engine-native authoring on top
The third pattern is a hybrid: SigmaHQ rules compiled and loaded as a baseline, vendor-native rules layered on top for the high-value correlation work that Sigma doesn't cover well yet. This is the pragmatic 2026 approach for most teams I talk to. It accepts Sigma's current strengths (atomic detections, ATT&CK coverage) and its current limits (correlation), and it doesn't pretend the team has to choose between Sigma and vendor-native. Both coexist; the architecture picks the right tool for each detection and says so.
The critique
Where the Sigma story gets oversold.
I write about Sigma as a foundational pillar, which means I have a positive thesis on it. That doesn't excuse me from naming what I don't like, and there are four critiques I'd want any architect to internalize before adopting.
- Community rule quality varies wildly. The SigmaHQ repo has thousands of rules of widely different quality. Some are excellent. Some are stale. Some encode assumptions about a specific Sysmon configuration that doesn't match your environment. Loading the entire repo without curation is a false-positive disaster waiting to happen. The starting-baseline pattern requires curation as a discipline, not as a one-time setup task.
- Backend conversions need per-environment validation. A Sigma rule that compiles cleanly to SPL may produce a query that performs poorly on your specific Splunk indexer configuration, or matches differently because your field extractions differ from the rule author's. The conversion is not a contract; it's a starting point that needs validation per backend, per environment. Treat regression testing against historical telemetry as mandatory, not optional.
- Vendor incentives push against true portability. Splunk and Microsoft do not benefit commercially from detection content being trivially portable away from their platforms. Lock-in is a revenue model. Even when vendors offer Sigma import support, the path of least resistance (pricing, tooling, native authoring surfaces, partner integrations) favors staying on the vendor-native authoring path. I would not expect any SIEM vendor to make the Sigma path easier than their proprietary path. That's a structural reality, not a complaint about specific vendors.
- Sigma is community-led, which is both a feature and a risk. The format and the rule repo depend on volunteer maintainership. The project has been active and well-maintained for years, but it is not backed by a single foundation with a large engineering team in the way Arrow and Iceberg are. That's not a reason to avoid Sigma so much as a reason to track project health as part of your foundational-standards risk register.
None of these are reasons to dismiss Sigma, but they are reasons to size expectations and to plan the adoption work around them rather than discovering them in production.
Where to read next
Two deeper pieces, depending on your question.
If your question is whether your correlation rules will survive the move to a particular engine, read Sigma 2.0 correlations and the pySigma backend reality. It measures what pySigma emits for each correlation type on each backend, carries the backend-ecosystem census, and ends with a ninety-day pilot plan; the lab's conversion-parity harness behind it is at sigma-portability in the lab, and the place to start is ten to twenty atomic rules you already maintain in two engines, compiled and compared against your hand-written versions.
If your question is whether Sigma is worth betting on at all, read Why Sigma won the detection-sharing decade, which looks at a decade of attempts to share detection content, from Sysmon configs to MITRE CAR to Atomic Red Team, and at the structural properties that separated the ones that lasted from the ones that didn't, which is also the test I'd apply to whatever comes next.
Closing
The fourth pillar, with the gap named.
Summed up, Sigma's atomic-detection portability is real, useful, and the foundation of a detection program that can survive a SIEM swap without rewriting hundreds of rules. The correlation extension is specified and compiles at full fidelity on some backends, but not on all of them, so it needs checking per engine. The rule repository is a starting point rather than a finished detection program, and vendor adoption claims should be tracked but not trusted at face value. For an architect making a decision this quarter, I'd pilot pySigma on a slice of your own backlog, treat Sigma as portable IR for the atomic-detection layer, and pair the adoption with the DetectFlow discipline, because even if correlation portability matures slower than I expect, you'll still have removed a real lock-in vector from your detection program.
Related
- Sigma 2.0 correlations and the pySigma backend reality →
- Why Sigma won the detection-sharing decade →
- Detection maturity: the HMM ladder →
- What's real vs marketed in the agentic SOC →
- LLM-assisted OCSF mapping →
- Iceberg vs Delta Lake for security data →
- Arrow and ADBC: a foundational pillar →
- DetectFlow: detections without operational debt →
- Foundation: source health, flow health, data quality →