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.
{ "binaries": [ { "binary_version": "3.2-2ubuntu3", "binary_name": "libhtp-0.5.23-1" }, { "binary_version": "3.2-2ubuntu3", "binary_name": "suricata" }, { "binary_version": "3.2-2ubuntu3", "binary_name": "suricata-hyperscan" }, { "binary_version": "3.2-2ubuntu3", "binary_name": "suricata-oinkmaster" } ] }