DOS Quadratic complexity when having too many transactions
Kind of found by oss-fuzz
This is true for protocols such as MQTT, Modbus or HTTP2, where each packet/PDU has a transaction identifier (called stream for HTTP2), and we loop over our whole list of transactions to find the right one.
Attack si to start many requests, and do not finish them, so that Suricata keeps them.
There may be more protocols
Updated by Philippe Antoine 12 months ago
See https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39774 for MQTT variant
Updated by Shivani Bhardwaj 9 months ago
Philippe Antoine wrote in #note-5:
Another fix could be to have a hash table instead of a list for transactions for MQTT and such...
I remember having come up with this and then Jeff also suggested it long ago. Don't recall the reason why it was not considered though. Maybe Jeff does..