In BPF instructions that load/store a value from/to a scratch memory register the register index is an unsigned 32-bit integer and must not exceed 15, but libpcap BPF interpreter does not validate the value. In particular uncommon use cases a crafted filter program can cause the interpreter to try reading and writing the OS process memory in the 16GiB starting at the current stack frame on 64-bit architectures and in the entire address space on 32-bit architectures.
The problem is specific to applications that use pcap_offline_filter() or bpf_filter() with an externally-supplied compiled filter program without validating the program first.
A functional exploit exists.
Validate every filter program that has not been produced by a local call to pcap_compile().
Upgrade to libpcap 1.10.7.