Actions
Bug #3925
closeddcerpc: crash in eve logging
Description
Affected 6.0-rc1
Chasing it to get a usable core but this is what i have so far.
-- 20:56:02 - <Perf> - AF_PACKET V3 RX Ring params: block_size=1048576 block_nr=318 frame_size=1664 frame_nr=200340 (mem: 333447168)
-- 20:56:02 - <Perf> - AF_PACKET V3 RX Ring params: block_size=1048576 block_nr=318 frame_size=1664 frame_nr=200340 (mem: 333447168)
-- 20:56:02 - <Info> - All AFP capture threads are running.
-- 03:13:46 - <Notice> - Flow emergency mode entered...
-- 03:13:46 - <Notice> - Flow emergency mode entered...
-- 03:13:46 - <Notice> - Flow emergency mode entered...
-- 03:13:46 - <Notice> - Flow emergency mode entered...
-- 03:13:46 - <Notice> - Flow emergency mode entered...
-- 03:13:46 - <Notice> - Flow emergency mode entered...
-- 03:13:46 - <Notice> - Flow emergency mode entered...
-- 03:13:46 - <Notice> - Flow emergency mode entered...
AddressSanitizer:DEADLYSIGNAL
=================================================================
==37045==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000010 (pc 0x000000e0b343 bp 0x7f1856ff11f8 sp 0x7f1856ff0fe0 T2)
==37045==The signal is caused by a READ memory access.
==37045==Hint: address points to the zero page.
#0 0xe0b342 in suricata::dcerpc::log::log_dcerpc_header::h26d5fd104f0ee8ce /opt/suricata/rust/src/dcerpc/log.rs:39:43
#1 0xe0d809 in rs_dcerpc_log_json_record /opt/suricata/rust/src/dcerpc/log.rs:86:5
#2 0xa4e5c2 in JsonDCERPCLogger /opt/suricata/src/output-json-dcerpc.c:55:10
#3 0xa5f283 in OutputTxLog /opt/suricata/src/output-tx.c:298:17
#4 0x9dabcf in OutputLoggerLog /opt/suricata/src/output.c:882:9
#5 0x984b80 in FlowWorker /opt/suricata/src/flow-worker.c:545:5
#6 0xb8e24e in TmThreadsSlotVarRun /opt/suricata/src/tm-threads.c:117:21
#7 0xaaf1b2 in TmThreadsSlotProcessPkt /opt/suricata/src/./tm-threads.h:192:17
#8 0xaa80a0 in AFPParsePacketV3 /opt/suricata/src/source-af-packet.c:1113:9
#9 0xaa6717 in AFPWalkBlock /opt/suricata/src/source-af-packet.c:1128:15
#10 0xa9e040 in AFPReadFromRingV3 /opt/suricata/src/source-af-packet.c:1178:15
#11 0xa9bc17 in ReceiveAFPLoop /opt/suricata/src/source-af-packet.c:1571:17
#12 0xb9baaf in TmThreadsSlotPktAcqLoop /opt/suricata/src/tm-threads.c:312:13
#13 0x7f18679ecfa2 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x7fa2)
#14 0x7f18669404ce in clone (/lib/x86_64-linux-gnu/libc.so.6+0xf94ce)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /opt/suricata/rust/src/dcerpc/log.rs:39:43 in suricata::dcerpc::log::log_dcerpc_header::h26d5fd104f0ee8ce
Thread T2 (W#02-ens1np0) created by T0 (Suricata-Main) here:
#0 0x564dfd in pthread_create (/usr/local/bin/suricata+0x564dfd)
#1 0xb95b74 in TmThreadSpawn /opt/suricata/src/tm-threads.c:1721:14
#2 0xcb4079 in RunModeSetLiveCaptureWorkersForDevice /opt/suricata/src/util-runmodes.c:323:13
#3 0xcb383c in RunModeSetLiveCaptureWorkers /opt/suricata/src/util-runmodes.c:353:9
#4 0xa7c2e2 in RunModeIdsAFPWorkers /opt/suricata/src/runmode-af-packet.c:903:11
#5 0xa93369 in RunModeDispatch /opt/suricata/src/runmodes.c:391:5
#6 0xb76d91 in SuricataMain /opt/suricata/src/suricata.c:2800:5
#7 0x5ab6be in main /opt/suricata/src/main.c:22:12
#8 0x7f186686b09a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
==37045==ABORTING
/usr/local/bin/suricata --build-info
This is Suricata version 6.0.0-rc1 RELEASE
Features: 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 4.2.1 Compatible Clang 7.0.1 (tags/RELEASE_701/final), C version 201112
compiled with _FORTIFY_SOURCE=0
L1 cache line size (CLS)=64
thread local storage method: _Thread_local
compiled with LibHTP v0.5.34, linked against LibHTP v0.5.34
Suricata Configuration:
AF_PACKET support: yes
eBPF support: yes
XDP support: yes
PF_RING support: no
NFQueue support: no
NFLOG support: no
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
Old barnyard2 support:
Hyperscan support: yes
Libnet support: yes
liblz4 support: yes
Rust support: yes
Rust strict mode: yes
Rust compiler path: /root/.cargo/bin/rustc
Rust compiler version: rustc 1.46.0 (04488afe3 2020-08-24)
Cargo path: /root/.cargo/bin/cargo
Cargo version: cargo 1.46.0 (149022b1d 2020-07-17)
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: no
Debug output enabled: no
Debug validation enabled: no
Generic build parameters:
Installation prefix: /usr/local
Configuration directory: /usr/local/etc/suricata/
Log directory: /usr/local/var/log/suricata/
--prefix /usr/local
--sysconfdir /usr/local/etc
--localstatedir /usr/local/var
--datarootdir /usr/local/share
Host: x86_64-pc-linux-gnu
Compiler: clang (exec name) / g++ (real)
GCC Protect enabled: no
GCC march native enabled: yes
GCC Profile enabled: no
Position Independent Executable enabled: no
CFLAGS -ggdb3 -O0 -Werror -Wchar-subscripts -Wshadow -Wall -Wextra -Werror -Wno-unused-parameter -Wno-unused-function -fno-strict-aliasing -fstack-protector-all -fsanitize=address -fno-omit-frame-pointer -Wno-unused-parameter -Wno-unused-function -std=c11 -march=native -I${srcdir}/../rust/gen -I${srcdir}/../rust/dist
PCAP_CFLAGS -I/usr/include
SECCFLAGS
Files
Updated by Victor Julien about 5 years ago
- Status changed from New to Assigned
- Assignee set to Shivani Bhardwaj
- Target version set to 6.0.0
- Affected Versions 6.0.0rc1 added
Updated by Victor Julien about 5 years ago
The SEGV seems to be a null pointer deref, but in a strange location
fn log_dcerpc_header(
jsb: &mut JsonBuilder, state: &DCERPCState, tx: &DCERPCTransaction,
) -> Result<(), JsonError> {
if tx.req_done == true && tx.req_lost == false {
jsb.set_string("request", &dcerpc_type_string(tx.req_cmd))?;
match tx.req_cmd {
DCERPC_TYPE_REQUEST => {
jsb.open_object("req")?;
jsb.set_uint("opnum", tx.opnum as u64)?;
jsb.set_uint("frag_cnt", tx.frag_cnt_ts as u64)?;
jsb.set_uint("stub_data_size", tx.stub_data_buffer_len_ts as u64)?;
jsb.close()?;
}
DCERPC_TYPE_BIND => match &state.bind {
Some(bind) => {
jsb.open_array("interfaces")?;
for uuid in &bind.uuid_list {
jsb.start_object()?; <- line 39
It's almost like
jsb is null, but there have been operations on it before and it seems like all paths leading to this check if we have a non-null JsonBuilder object.Updated by Victor Julien about 5 years ago
- Target version changed from 6.0.0 to 6.0.1
Updated by Victor Julien almost 5 years ago
- Assignee changed from Shivani Bhardwaj to Victor Julien
- Priority changed from Normal to High
Updated by Victor Julien almost 5 years ago
- Subject changed from SEGV dcerpc to dcerpc: crash in eve logging
- Affected Versions 6.0.0 added
Updated by Victor Julien almost 5 years ago
- Related to Bug #4069: dcerpc: fix UDP transaction handling, free_tx, etc added
Updated by Victor Julien almost 5 years ago
- Status changed from Assigned to Closed
- Priority changed from High to Normal
Actions