detect: investigation on single-pkt flows inspection (5180) - v3#14747
Closed
jufajardini wants to merge 3 commits intoOISF:mainfrom
Closed
detect: investigation on single-pkt flows inspection (5180) - v3#14747jufajardini wants to merge 3 commits intoOISF:mainfrom
jufajardini wants to merge 3 commits intoOISF:mainfrom
Conversation
During initialization, the engine reports how many rules were loaded, as well as which types. Pkt-only or stream-pkt rules would cause a "hole" in such stats, as they're not counted.
Commit 497394e removed inspection of app-proto txs for packets without an established TCP connection. But this meant that the first packet seen in a session pick mid-stream could go without inspection (previous bug 5510 seemed to point towards this behavior, too). If a flow has more packets, the stream will be inspected as part of the upcoming packets and this would go unnoticed. In a single-packet flow, however, the inspection for the packed would be skipped. Although this might not affect alerts -- as they could be processed as part of the flow timeout logic, the actual traffic could be evaded in IPS, in case of a drop rule. From the above, the most visible scenario is when there is only one packet on the flow, as then the engine doesn't have "more time" to pick-up real-packets to inspect for that given flow. But certain tests show that this can also happen for more than one packet scenarios: there will be one less drop event, or traffic from a packet that should have been already dropped will be logged. This led to the possibility of a real packet not being blocked, in IPS, or matched against rules, as the corresponding portion of the stream was only inspected later, as part of the stream/flow-timeout logic. To ensure that we correctly flag the first packet seen for a given mid-stream session, we must check for the session state *after* we have dealt with TCP flags and state. Related to Bug OISF#5510 As part of Bug OISF#5180
jufajardini
commented
Feb 4, 2026
Comment on lines
-5807
to
-5810
|
|
||
| if (ssn->state >= TCP_ESTABLISHED) { | ||
| p->flags |= PKT_STREAM_EST; | ||
| } |
Contributor
Author
There was a problem hiding this comment.
Should this change go in a separate commit?
Member
There was a problem hiding this comment.
Yeah I think that is cleaner.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #14747 +/- ##
==========================================
- Coverage 82.17% 82.16% -0.01%
==========================================
Files 1008 1008
Lines 263938 263952 +14
==========================================
+ Hits 216878 216883 +5
- Misses 47060 47069 +9
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
|
Information: QA ran without warnings. Pipeline = 29408 |
Member
|
Passed my QA. Ran this PR with SV PR OISF/suricata-verify#2901. Local pipeline 6175, run 1203. |
victorjulien
requested changes
Feb 4, 2026
Member
victorjulien
left a comment
There was a problem hiding this comment.
I think this looks good. Can you do a non-draft PR with the commit split you suggested?
Contributor
Author
|
Followed by: #14752 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Link to ticket: https://redmine.openinfosecfoundation.org/issues/
https://redmine.openinfosecfoundation.org/issues/5180
Previous PR: #14704
Describe changes:
To consider:
I assumed that, with this approach, we shouldn't need to flag the packet stream as established in the TCP fast open scenario (done here
suricata/src/stream-tcp.c
Line 1467 in c1d6958
pcap_cnt 3, instead ofpcap_cnt 1Could this be related to this being non-IPS mode?For now, then, I have not removed that bit. But this might need further investigation -- for this patch, or for a follow-up work?
Provide values to any of the below to override the defaults.
SV_BRANCH=OISF/suricata-verify#2901