-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Dataset set postmatch 5576 v19 #13264
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dataset set postmatch 5576 v19 #13264
Conversation
Will be useful for dataset, when it needs to find a transaction buffer again.
Buffers can be put at the tail of inspections whatever their progress. This will allow dataset/set to be inspected in the context of the final packet matching or not, and thus use the ephemeral data from DetectThreadCtxGetKeywordThreadCtx
DETECT_ENGINE_INSPECT_SIG_MATCH_MORE_BUF is the new return status to allow dataset/set to pick all matching and only the matching buffers in case of a multi-buffer
The set operation of dataset keyword was done even if signature did not fully match, which is not the expected behavior. We want dataset to behave like flowbits for instance. This patch changes the behavior of the dataset keyword to do a match and a post match for the set operation. The postmatch retrieves the data, using the list identifier associated to the buffer for this signature. This avoids to store the buffer(s), when we do not have a dedicated storage (per signature and per tx) that can own and clean arbitrary buffers over multiple packets, in the case the transaction spans over multiple packets with different tx progresses for instance. Thanks to delay_postmatch, the callback DetectDatasetTxMatch should be called on the last packet taking the final match decision. At this point, the inspection buffers are cached and easy to get. The most complex case is for multi-buffers, where we need to know which buffers/local_ids matched. We use the ephemeral storage (lives with one packet detection) provided by DetectThreadCtxGetKeywordThreadCtx For multi-buffers, we also return DETECT_ENGINE_INSPECT_SIG_MATCH_MORE_BUF to indicate that we want to know all the instances which match. Ticket: OISF#5576
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #13264 +/- ##
========================================
Coverage 83.39% 83.40%
========================================
Files 995 995
Lines 272676 272808 +132
========================================
+ Hits 227396 227526 +130
- Misses 45280 45282 +2
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
ERROR: ERROR: QA failed on build_fetch. Pipeline 26189 |
ERROR: ERROR: QA failed on build_fetch. Pipeline 26196 |
WARNING:
Pipeline 26199 |
Rebased in #13324 |
Link to ticket: https://redmine.openinfosecfoundation.org/issues/
https://redmine.openinfosecfoundation.org/issues/5576
Describe changes:
SV_BRANCH=OISF/suricata-verify#2093
#13247 greener with fix of commit
detect: postmatch can run AppLayerTxMatch callbacks
by checking if there is a tx to tun the postmatch onThe design is :