Actions
Bug #2762
closedSSLv3 - AddressSanitizer heap-buffer-overflow
Affected Versions:
Effort:
Difficulty:
Label:
Description
Compiled with:
git clone https://github.com/OISF/suricata.git \ && cd suricata && git clone https://github.com/OISF/libhtp.git -b 0.5.x ./autogen.sh && ./configure \ --prefix=/opt/suricata-asan/ --sysconfdir=/opt/suricata-asan/etc --localstatedir=/opt/suricata-asan/var \ --enable-unittests \ CC=clang \ CFLAGS="-ggdb3 -Werror -Wchar-subscripts -fno-strict-aliasing -fstack-protector-all -fsanitize=address -fno-omit-frame-pointer -Wno-unused-parameter -Wno-unused-function" \ ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes \ --enable-geoip --enable-rust-strict --enable-luajit \ && make clean && make -j4 && make install-full && ldconfig
Run:
LSAN_OPTIONS=suppressions=/home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata-current/qa/lsan.suppress ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-symbolizer /opt/suricata-asan/bin/suricata -c /home/pmanev/inthetrenches/test/asan-ginfiz-runs/fuzz.suricata.warfare.socket.yaml -r /home/pmanev/inthetrenches/test/asan-ginfiz-runs/logs/sidhere.pcap-fuzz -l tmplog/ -S /dev/null
[6828] 28/12/2018 -- 04:04:59 - (suricata.c:1085) <Notice> (LogVersion) -- This is Suricata version 4.1.0-dev (rev b51e4a39)
[6828] 28/12/2018 -- 04:04:59 - (tm-threads.c:2172) <Notice> (TmThreadWaitOnThreadInit) -- all 41 packet processing threads, 2 management threads initialized, engine started.
=================================================================
==6828==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60c0000f2041 at pc 0x00000044f4fe bp 0x7fce44edc090 sp 0x7fce44edb840
WRITE of size 2 at 0x60c0000f2041 thread T27 (W#26)
[6828] 28/12/2018 -- 04:05:01 - (suricata.c:2847) <Notice> (SuricataMainLoop) -- Signal Received. Stopping engine.
#0 0x44f4fd in __interceptor_vsnprintf (/opt/suricata-asan/bin/suricata+0x44f4fd)
#1 0x44f836 in snprintf (/opt/suricata-asan/bin/suricata+0x44f836)
#2 0x19437ca in Ja3BufferAppendBuffer /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/util-ja3.c:134:29
#3 0x8bf827 in TLSDecodeHSHelloExtensions /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:1260:14
#4 0x8bb8ec in TLSDecodeHandshakeHello /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:1336:11
#5 0x8b7d77 in SSLv3ParseHandshakeType /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:1370:22
#6 0x8b692e in SSLv3ParseHandshakeProtocol /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:1603:14
#7 0x8b2db2 in SSLv3Decode /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:2276:22
#8 0x8af0d2 in SSLDecode /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:2443:30
#9 0x881d9d in SSLParseClientRecord /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:2530:12
#10 0x7f35ca in AppLayerParserParse /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-parser.c:1188:13
#11 0x56fbf1 in TCPProtoDetect /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer.c:431:17
#12 0x56e5d8 in AppLayerHandleTCPData /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer.c:590:13
#13 0x17a8330 in ReassembleUpdateAppLayer /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp-reassemble.c:1068:13
#14 0x17a715c in StreamTcpReassembleAppLayer /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp-reassemble.c:1138:12
#15 0x17ae1d7 in StreamTcpReassembleHandleSegmentUpdateACK /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp-reassemble.c:1704:9
#16 0x17ade60 in StreamTcpReassembleHandleSegment /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp-reassemble.c:1747:9
#17 0x174c1a9 in HandleEstablishedPacketToClient /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:2371:9
#18 0x170fa31 in StreamTcpPacketStateEstablished /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:2608:13
#19 0x1681229 in StreamTcpStateDispatch /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:4613:17
#20 0x167848d in StreamTcpPacket /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:4790:13
#21 0x168233c in StreamTcp /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:5126:11
#22 0x1446fff in FlowWorker /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/flow-worker.c:216:9
#23 0x185069e in TmThreadsSlotVarRun /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/tm-threads.c:143:17
#24 0x186258e in TmThreadsSlotVar /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/tm-threads.c:598:17
#25 0x4ef3ce in __asan::AsanThread::ThreadStart(unsigned long, __sanitizer::atomic_uintptr_t*) (/opt/suricata-asan/bin/suricata+0x4ef3ce)
#26 0x7fce598726da in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
#27 0x7fce56f7588e in clone /build/glibc-OTsEL5/glibc-2.27/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
0x60c0000f2041 is located 1 bytes to the right of 128-byte region [0x60c0000f1fc0,0x60c0000f2040)
allocated by thread T27 (W#26) here:
#0 0x4e17a0 in __interceptor_malloc (/opt/suricata-asan/bin/suricata+0x4e17a0)
#1 0x1944e93 in Ja3BufferAddValue /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/util-ja3.c:181:27
#2 0x8bcd84 in TLSDecodeHSHelloVersion /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:678:18
#3 0x8bb579 in TLSDecodeHandshakeHello /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:1291:11
#4 0x8b7d77 in SSLv3ParseHandshakeType /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:1370:22
#5 0x8b692e in SSLv3ParseHandshakeProtocol /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:1603:14
#6 0x8b2db2 in SSLv3Decode /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:2276:22
#7 0x8af0d2 in SSLDecode /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:2443:30
#8 0x881d9d in SSLParseClientRecord /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-ssl.c:2530:12
#9 0x7f35ca in AppLayerParserParse /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer-parser.c:1188:13
#10 0x56fbf1 in TCPProtoDetect /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer.c:431:17
#11 0x56e5d8 in AppLayerHandleTCPData /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/app-layer.c:590:13
#12 0x17a8330 in ReassembleUpdateAppLayer /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp-reassemble.c:1068:13
#13 0x17a715c in StreamTcpReassembleAppLayer /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp-reassemble.c:1138:12
#14 0x17ae1d7 in StreamTcpReassembleHandleSegmentUpdateACK /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp-reassemble.c:1704:9
#15 0x17ade60 in StreamTcpReassembleHandleSegment /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp-reassemble.c:1747:9
#16 0x174c1a9 in HandleEstablishedPacketToClient /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:2371:9
#17 0x170fa31 in StreamTcpPacketStateEstablished /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:2608:13
#18 0x1681229 in StreamTcpStateDispatch /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:4613:17
#19 0x167848d in StreamTcpPacket /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:4790:13
#20 0x168233c in StreamTcp /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/stream-tcp.c:5126:11
#21 0x1446fff in FlowWorker /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/flow-worker.c:216:9
#22 0x185069e in TmThreadsSlotVarRun /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/tm-threads.c:143:17
#23 0x186258e in TmThreadsSlotVar /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/tm-threads.c:598:17
#24 0x4ef3ce in __asan::AsanThread::ThreadStart(unsigned long, __sanitizer::atomic_uintptr_t*) (/opt/suricata-asan/bin/suricata+0x4ef3ce)
Thread T27 (W#26) created by T0 (Suricata-Main) here:
#0 0x43a970 in pthread_create (/opt/suricata-asan/bin/suricata+0x43a970)
#1 0x185df13 in TmThreadSpawn /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/tm-threads.c:1895:14
#2 0x15f8a25 in RunModeFilePcapAutoFp /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/runmode-pcap-file.c:255:13
#3 0x160f6a1 in RunModeDispatch /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/runmodes.c:384:5
#4 0x181f8d7 in main /home/pmanev/inthetrenches/test/asan-ginfiz-runs/suricata/src/suricata.c:2999:5
#5 0x7fce56e75b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310
SUMMARY: AddressSanitizer: heap-buffer-overflow (/opt/suricata-asan/bin/suricata+0x44f4fd) in __interceptor_vsnprintf
Shadow bytes around the buggy address:
0x0c18800163b0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c18800163c0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0x0c18800163d0: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
0x0c18800163e0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c18800163f0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
=>0x0c1880016400: 00 00 00 00 00 00 00 00[fa]fa fa fa fa fa fa fa
0x0c1880016410: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c1880016420: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c1880016430: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c1880016440: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c1880016450: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==6828==ABORTING
Build-info:
This is Suricata version 4.1.0-dev (rev b51e4a39)
Features: UNITTESTS 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 MAGIC RUST
SIMD support: SSE_4_2 SSE_4_1 SSE_3
Atomic intrisics: 1 2 4 8 16 byte(s)
64-bits, Little-endian architecture
GCC version 4.2.1 Compatible Clang 6.0.0 (tags/RELEASE_600/final), C version 199901
compiled with _FORTIFY_SOURCE=0
L1 cache line size (CLS)=64
thread local storage method: __thread
compiled with LibHTP v0.5.28, linked against LibHTP v0.5.28
Suricata Configuration:
AF_PACKET support: yes
eBPF support: no
XDP support: no
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
liblzma support: yes
hiredis support: no
hiredis async with libevent: no
Prelude support: no
PCRE jit: yes
LUA support: yes, through luajit
libluajit: yes
libgeoip: yes
Non-bundled htp: no
Old barnyard2 support: no
Hyperscan support: yes
Libnet support: yes
liblz4 support: yes
Rust support: yes (default)
Rust strict mode: yes
Rust debug mode: no
Rust compiler: rustc 1.30.0
Rust cargo: cargo 1.30.0
Install suricatasc: yes
Install suricata-update: no
Profiling enabled: no
Profiling locks enabled: no
Development settings:
Coccinelle / spatch: yes
Unit tests enabled: yes
Debug output enabled: no
Debug validation enabled: no
Generic build parameters:
Installation prefix: /opt/suricata-asan
Configuration directory: /opt/suricata-asan/etc/suricata/
Log directory: /opt/suricata-asan/var/log/suricata/
--prefix /opt/suricata-asan
--sysconfdir /opt/suricata-asan/etc
--localstatedir /opt/suricata-asan/var
--datarootdir /opt/suricata-asan/share
Host: x86_64-pc-linux-gnu
Compiler: clang (exec name) / clang (real)
GCC Protect enabled: no
GCC march native enabled: yes
GCC Profile enabled: no
Position Independent Executable enabled: no
CFLAGS -ggdb3 -Werror -Wchar-subscripts -fno-strict-aliasing -fstack-protector-all -fsanitize=address -fno-omit-frame-pointer -Wno-unused-parameter -Wno-unused-function -march
=native -I${srcdir}/../rust/gen/c-headers
PCAP_CFLAGS -I/usr/include
SECCFLAGS
Actions