Replies: 1 comment
-
|
Sorry, totally missed that!
The rule specification was intentionally made vague at this point to keep it agnostic against concepts used in the target systems and environments. It's indeed intended that the user or conversion tool finally decides what to do with them. Even with a target system that supports lookups there can be valid reasons that the user just wants to have the list of possible values in the query.
No backend actually needs to implement placeholders because processing pipelines implement various handling operations in a backend-agnostic way 😉 The placeholders are transformed into lists of values, raw query expressions in the target query language or just wildcards (if the user really wants to ignore the placeholder or as fallback) and these get then passed to the backend. This blog post describes the details.
The query_expression_placeholders solves the lookup use case at least for query languages where this is expressed somehow with an expression, function etc, e.g.
Disagree on this (or better said: agree with you 😉), the detection logic might be standalone, but finally the operationalization requires processing pipelines and in case of placeholders some definition how to handle them.
In my opinion, placeholders are the enabler for sharing of some detections that are scoped somehow, e.g. "only on clients" etc.
I agree, but SigmaHQ doesn't equals the Sigma rule specification. The SigmaHQ rule repository is more strict, even has an extended set of validators that the rules have to pass, but this doesn't means that certain features might not be used outside of the SigmaHQ context. There's even a place for rules with placeholders in the SigmaHQ repository. My personal preference was to integrate them with "normal" rules. But finally, we decided it this way because many users expect all rules to convert with minimal effort and having placeholders in the rules means also that it must be defined how these are handled in processing pipelines. The conversion stops on unhandled placeholders. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I'd like to discuss the possibility of adding reference sets/lookups into the Sigma specification.
What are reference sets/lookups?
It's a list external to a query that you use into a query/detection.
Example of a rule that would use lookups
Here is a rule that would match when someone is added to a critical AD group:
Why are they helpful and needed?
Don't placeholders already solve this?
Here is the relevant part for the placeholders documentation:
This is close from the use case I'm describing, but not quite it either:
This goes against the SigmaHQ philosophy of "rules should be standalone and easily sharable"
This is true. However:
Implementation proposal
Reference sets would be separate YAML files with a simple structure such as:
Rules could then reference them with something like a
|lookupmodifier:More things that need discussions:
sigma convertsigma-clishould not be responsible for deployment of such reference sets, butsigma convertcould take into account reference sets for output types like plugins or bundled applications like some backends support.Personal experience
We internally have implemented reference sets for our custom QRadar backend using placeholders. It works with a custom internal specification that looks like this:
TargetGroupName|expand: '%refset:Critical AD Groups%'. This theoretically respects the Sigma specification, but there is a lot of custom stuff I needed to code to make it happen and think about it myself. I feel this is a common enough use case that we should standardize it into the Sigma specification, hence my proposal.Let me know what you think!
Beta Was this translation helpful? Give feedback.
All reactions