Limitations & Caveats
The sharp edges, in one place. Read this before production use.
-
FOLLOWEDBYis not matched. It parses, but evaluation returns an explicitUnsupportederror. Status: planned. -
Temporal qualifiers are not matched.
WITHIN,REPEATS, andSTART..STOPparse but returnUnsupportedat match time. Status: planned. -
Timestamps compare as strings. RFC3339 values are not parsed into instants:
2020-01-01T00:00:00Z≠2020-01-01T00:00:00.000Zeven though they denote the same moment. Workaround: normalize timestamp formats on ingest (a custom-type hook is a good place). -
Binding enumeration, not full constraint search. Within an observation the matcher binds one object per referenced type. This gives correct “same object” semantics for the overwhelming majority of patterns, but exotic patterns needing several objects of the same type simultaneously may differ from the MITRE reference. Status: full binding-set semantics are future work.
-
Reference paths need an
ObjectStore. A path throughsrc_ref(or any_ref) resolves via the store; without one it resolves to nothing — a non-match, not an error.match_bundle/match_scosbuild the store for you. -
Typed objects synthesize properties. What
property()returns is not necessarily what the JSON contained (that’s a feature — see Custom Object Types) — but don’t assume a 1:1 mapping. -
[*]expands, per-element.x:list[*] = 'v'passes if any element matches; there is no cross-step backtracking beyond that expansion. -
Integers and floats are distinct in storage, and comparisons promote numerically — but a pattern’s
5and data’s"5"(string) never match. -
LIKEis anchored;MATCHESis not.LIKEmust cover the whole value;MATCHESsearches anywhere in it. An invalid regex never matches (no error). -
ISSUBSET/ISSUPERSETare IP/CIDR-only. IPv4 or IPv6, never mixed families; unparseable input never matches. There is no generic string-set containment.
Also worth knowing: custom-type hooks run only at parse/import time — if you mutate an engine’s registrations, previously parsed bundles are unaffected.