Security #6987
closedmodbus: txs without responses are never freed
Description
Found by oss-fuzz:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68270
This can be abused by setting txs with alerts (like app-layer event invalid length) up to the 500 max txs, and then reiterating the 500 alerts for each tx at each packet...
Also, this shows a more generic attack :
A rule like alert modbus any any -> any any (msg:"SURICATA Modbus invalid Length"; app-layer-event:modbus.invalid_length; classtype:protocol-command-decode; sid:2250003; rev:2;) will be triggered multiple times for the same transaction if the transaction lives long
Files
OT Updated by OISF Ticketbot almost 2 years ago
- Subtask #6988 added
OT Updated by OISF Ticketbot almost 2 years ago
- Label deleted (
Needs backport to 7.0)
PA Updated by Philippe Antoine almost 2 years ago
- File flood.pcap flood.pcap added
- Label Needs backport to 7.0 added
Reproducer with ./src/suricata -S rules/modbus-events.rules -r flood.pcap -c fuzz.yaml -k none
PA Updated by Philippe Antoine almost 2 years ago
- Label deleted (
Needs backport to 7.0)
PA Updated by Philippe Antoine almost 2 years ago
- Related to Optimization #6728: detect: prefilter for events (decode, stream, app-layer, etc...) added
PA Updated by Philippe Antoine almost 2 years ago
- Status changed from New to In Review
Gitlab MR
JI Updated by Jason Ish almost 2 years ago
Does this require a rule to be present?
PA Updated by Philippe Antoine almost 2 years ago
PA Updated by Philippe Antoine almost 2 years ago
Preferred fix would be to track modified txs and iterate only over them
PA Updated by Philippe Antoine almost 2 years ago
- Related to Security #6770: log: arbitrary-length value can be logged added
PA Updated by Philippe Antoine almost 2 years ago
New Gitlab MR
PA Updated by Philippe Antoine almost 2 years ago
- Related to Optimization #7087: app-layer: track modified transactions added
VJ Updated by Victor Julien almost 2 years ago
- Status changed from In Review to Resolved
VJ Updated by Victor Julien almost 2 years ago
- Status changed from Resolved to Closed
JF Updated by Juliana Fajardini Reichow almost 2 years ago
- CVE set to 2024-38534
VJ Updated by Victor Julien over 1 year ago
- Private changed from Yes to No