mirror of https://github.com/OISF/suricata
detect/firewall: apply accept if last tx was skipped
In firewall mode, a accept:hook or accept:tx needs to lead to a accept packet when the action is applied to the last TX. For this the code relied of the `DetectTransaction::is_last` field, where the assumption was that there would always be an inspection on the last transaction. This assumption was wrong however, as transactions can be skipped for a few reasons: not updated, fully inspected, unidirectional for the other direction. This would cause the accept not be applied to the packet, leading to a default drop. The reason this wasn't noticed before is that until now the work had focused on protocols that used sequential transactions (http/tls), and/or short lived sequential unidir transactions (dns) This patch addresses the issue by making a simple assumption: if the last available transaction in the main detection loop is skipped, it means it has been accepted before. Therefore we can apply the "accept packet" logic in this case. Bug: #8698.pull/15789/head
parent
ee1b9b9212
commit
9e31a21aba
Loading…
Reference in New Issue