Actions
Bug #4914
openFLOW_DIR_REVERSED is not handled in multiple places
Affected Versions:
Effort:
Difficulty:
low
Label:
Description
FLOW_DIR_REVERSED may be set if a midstream flow is picked up.
However at least in the following cases, the flag is not being handled (there may be more cases).
Do we actually need this flag? i.e. is it too expensive to flip the actual values?
It seems expensive to maintain this odd case using a flag.
stream-tcp.c:StreamTcpPseudoPacketCreateDetectLogFlush
util-lua-common.c:LuaCallbackTuplePushToStackFromFlow
Steps to reproduce:¶
- create a test lua script that implements the match callback and print out the SCFlowTuple returns
- create a rule like
reject ip $HOME_NET any -> any any (msg:"Blocked"; flow:to_server,not_established; luajit:test.lua; classtype:block; sid:1; rev:1;)
- set stream.midstream=true in config
- replay the a tcp stream pcap with the first SYN packet removed
We should expect the lua script print the correct source and destination.
Build info:¶
This is Suricata version 6.0.4 RELEASE Features: DEBUG UNITTESTS NFQ PCAP_SET_BUFF AF_PACKET HAVE_PACKET_FANOUT LIBCAP_NG LIBNET1.1 HAVE_HTP_URI_NORMALIZE_HOOK PCRE_JIT HAVE_NSS HAVE_LUA HAVE_LUAJIT HAVE_LIBJANSSON TLS TLS_C11 MAGIC RUST SIMD support: SSE_4_2 SSE_4_1 SSE_3 Atomic intrinsics: 1 2 4 8 16 byte(s) 64-bits, Little-endian architecture GCC version 10.2.1 20210110, C version 201112 compiled with -fstack-protector compiled with _FORTIFY_SOURCE=2 L1 cache line size (CLS)=64 thread local storage method: _Thread_local compiled with LibHTP v0.5.39, linked against LibHTP v0.5.39 Suricata Configuration: AF_PACKET support: yes eBPF support: yes XDP support: yes PF_RING support: no NFQueue support: yes NFLOG support: yes IPFW support: no Netmap support: no DAG enabled: no Napatech enabled: no WinDivert enabled: no Unix socket enabled: yes Detection enabled: yes Libmagic support: yes libnss support: yes libnspr support: yes libjansson support: yes hiredis support: no hiredis async with libevent: no Prelude support: no PCRE jit: yes LUA support: yes, through luajit libluajit: yes GeoIP2 support: yes Non-bundled htp: no Hyperscan support: yes Libnet support: yes liblz4 support: yes HTTP2 decompression: no Rust support: yes Rust strict mode: no Rust compiler path: /root/.cargo/bin/rustc Rust compiler version: rustc 1.55.0 (c8dfcfe04 2021-09-06) Cargo path: /root/.cargo/bin/cargo Cargo version: cargo 1.55.0 (32da73ab1 2021-08-23) Cargo vendor: yes Python support: yes Python path: /usr/bin/python3 Python distutils yes Python yaml yes Install suricatactl: yes Install suricatasc: yes Install suricata-update: not bundled Profiling enabled: no Profiling locks enabled: no Plugin support (experimental): yes Development settings: Coccinelle / spatch: no Unit tests enabled: yes Debug output enabled: yes Debug validation enabled: no Generic build parameters: Installation prefix: /suricata/install Configuration directory: /etc/suricata/ Log directory: /var/log/suricata/ --prefix /suricata/install --sysconfdir /etc --localstatedir /var --datarootdir /suricata/install/share Host: x86_64-pc-linux-gnu Compiler: gcc (exec name) / g++ (real) GCC Protect enabled: yes GCC march native enabled: no GCC Profile enabled: no Position Independent Executable enabled: no CFLAGS -DUNITTESTS -march=broadwell -O0 -std=c11 -I${srcdir}/../rust/gen -I${srcdir}/../rust/dist PCAP_CFLAGS -I/usr/include SECCFLAGS -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
Actions