An issue was discovered in Suricata 4.1.4. By sending multiple IPv4 packets that have invalid IPv4Options, the function IPV4OptValidateTimestamp in decode-ipv4.c tries to access a memory region that is not allocated. There is a check for o->len < 5 (corresponding to 2 bytes of header and 3 bytes of data). Then, "flag = *(o->data + 3)" places one beyond the 3 bytes, because the code should have been "flag = *(o->data + 1)" instead.
The product reads data past the end, or before the beginning, of the intended buffer.
Link | Tags |
---|---|
https://lists.openinfosecfoundation.org/pipermail/oisf-announce/ | third party advisory |
https://suricata-ids.org/2019/09/24/suricata-4-1-5-released/ | release notes vendor advisory |
https://www.code-intelligence.com/cve-2019-16411 |