]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
5 years agoflowbits: Allow support for flowbit ORing 4847/head
Shivani Bhardwaj [Wed, 29 Jan 2020 14:50:24 +0000 (20:20 +0530)] 
flowbits: Allow support for flowbit ORing

This patch allows to OR multiple flowbits on isset and isnotset flowbit
actions.

e.g.
Earlier in order to check if either fb1 or fb2 was set, it was required
to write two rules,
```
alert ip any any -> any any (msg:\"Flowbit fb1 isset\"; flowbits:isset,fb1; sid:1;)
alert ip any any -> any any (msg:\"Flowbit fb2 isset\"; flowbits:isset,fb2; sid:2;)
```

now, the same can be achieved with
```
alert ip any any -> any any (msg:\"Flowbit fb2 isset\"; flowbits:isset,fb1|fb2; sid:23;)
```

This operator can be used to check if one of the many flowbits is set
and also if one of the many flowbits is not set.

5 years agodoc/perf: minor improvements 4839/head
Victor Julien [Mon, 20 Apr 2020 13:39:32 +0000 (15:39 +0200)] 
doc/perf: minor improvements

5 years agodoc: add performance analysis section
Andreas Herz [Thu, 9 Apr 2020 13:23:40 +0000 (15:23 +0200)] 
doc: add performance analysis section

5 years agoftp: use switch for ftp commands for style
Philippe Antoine [Mon, 16 Mar 2020 13:52:32 +0000 (14:52 +0100)] 
ftp: use switch for ftp commands for style

5 years agoftp: FTPGetAlstateProgress for done port commands
Philippe Antoine [Mon, 16 Mar 2020 13:48:40 +0000 (14:48 +0100)] 
ftp: FTPGetAlstateProgress for done port commands

For a done transaction with command PORT,
we expect FTP_STATE_FINISHED
and we got FTP_STATE_PORT_DONE instead
which prevented logging of these transactions

We change the order of the evaluations to get the right result

5 years agoftp: indent FTPParseResponse again
Philippe Antoine [Fri, 20 Mar 2020 13:42:50 +0000 (14:42 +0100)] 
ftp: indent FTPParseResponse again

5 years agoftp: FTPParseResponse bufferizes lines
Philippe Antoine [Mon, 16 Mar 2020 13:46:51 +0000 (14:46 +0100)] 
ftp: FTPParseResponse bufferizes lines

Protects against evasion by TCP packet splitting

The problem arised if the FTP response is split on multiple packets

The fix is to bufferize the content, until we get a complete line

5 years agodetect: fix insertion in linked list for fast pattern
Philippe Antoine [Mon, 20 Apr 2020 11:57:44 +0000 (13:57 +0200)] 
detect: fix insertion in linked list for fast pattern

Make sure we do not add the same list_id twice
by checking at least all the lists with the current priority

5 years agoconf/datadir: fix possible out of bounds array access
Victor Julien [Fri, 17 Apr 2020 13:00:40 +0000 (15:00 +0200)] 
conf/datadir: fix possible out of bounds array access

5 years agodatasets: remove useless variables
Victor Julien [Fri, 17 Apr 2020 12:58:06 +0000 (14:58 +0200)] 
datasets: remove useless variables

5 years agodatasets: add 'dataset-remove' unix command
Victor Julien [Tue, 14 Apr 2020 12:21:31 +0000 (14:21 +0200)] 
datasets: add 'dataset-remove' unix command

5 years agodatasets: add 'remove' support
Victor Julien [Mon, 13 Apr 2020 14:31:50 +0000 (16:31 +0200)] 
datasets: add 'remove' support

5 years agothash: add 'remove' support
Victor Julien [Mon, 13 Apr 2020 14:31:35 +0000 (16:31 +0200)] 
thash: add 'remove' support

5 years agodatasets: improve 'dataset-add' error checking
Victor Julien [Mon, 13 Apr 2020 13:47:18 +0000 (15:47 +0200)] 
datasets: improve 'dataset-add' error checking

5 years agodatasets: fix return values for 'add's
Victor Julien [Tue, 14 Apr 2020 19:49:33 +0000 (21:49 +0200)] 
datasets: fix return values for 'add's

5 years agodatasets: fix ref cnt handling
Victor Julien [Tue, 14 Apr 2020 19:44:34 +0000 (21:44 +0200)] 
datasets: fix ref cnt handling

Each 'add' and 'lookup' would increment the use_cnt, without anything
bringing it back down.

Since there is no removal yet, nothing is actually affected by it yet.

5 years agodatasets: silence noisy 'dataset-add' log
Victor Julien [Tue, 14 Apr 2020 19:57:06 +0000 (21:57 +0200)] 
datasets: silence noisy 'dataset-add' log

5 years agobuild: default to c11 standard 4832/head
Victor Julien [Mon, 13 Apr 2020 07:10:20 +0000 (09:10 +0200)] 
build: default to c11 standard

Rearrange pcap includes to fix builds on MinGW

5 years agobuild: don't limit C std to c99 (gnu99)
Victor Julien [Mon, 13 Apr 2020 05:47:02 +0000 (07:47 +0200)] 
build: don't limit C std to c99 (gnu99)

Now that C11 atomics and thread local storage are supported, the
compiler can figure out what version to use.

5 years agoconfigure: check for u_int and friends
Victor Julien [Mon, 13 Apr 2020 19:04:45 +0000 (21:04 +0200)] 
configure: check for u_int and friends

5 years agofuzz: include pcap headers through suricata-common.h
Victor Julien [Tue, 14 Apr 2020 09:06:17 +0000 (11:06 +0200)] 
fuzz: include pcap headers through suricata-common.h

5 years agothreads: remove u_long usage
Victor Julien [Tue, 14 Apr 2020 11:19:01 +0000 (13:19 +0200)] 
threads: remove u_long usage

5 years agothreads: make thread local storage manadatory
Victor Julien [Sun, 12 Apr 2020 12:03:24 +0000 (14:03 +0200)] 
threads: make thread local storage manadatory

Support either the __thread GNUism or the C11 _Thread_local.

Use 'thread_local' to point to the one that is used. Convert existing
__thread user to 'thread_local'.

Remove non-thread-local code from the packet pool code.

5 years agoatomics: stdatomics.h version of SC_ATOMIC_* wrappers
Victor Julien [Sun, 12 Apr 2020 09:12:28 +0000 (11:12 +0200)] 
atomics: stdatomics.h version of SC_ATOMIC_* wrappers

5 years agodetect-engine/tags: avoid confusion over data type
Victor Julien [Sun, 12 Apr 2020 09:25:45 +0000 (11:25 +0200)] 
detect-engine/tags: avoid confusion over data type

5 years agoatomics: remove unused macros
Victor Julien [Sun, 12 Apr 2020 10:00:57 +0000 (12:00 +0200)] 
atomics: remove unused macros

5 years agoatomics: add SC_ATOMIC_INITPTR macro
Victor Julien [Sun, 12 Apr 2020 09:09:34 +0000 (11:09 +0200)] 
atomics: add SC_ATOMIC_INITPTR macro

Until now both atomic ints and pointers were initialized by SC_ATOMIC_INIT
by setting them to 0. However, C11's atomic pointer type cannot be
initialized this way w/o causing compiler warnings.

As a preparation to supporting C11's atomics, this patch introduces a
new macro to initialize atomic pointers and updates the relevant callers
to use it.

5 years agoatomics: change SC_ATOMIC_ADD to 'fetch_add'
Victor Julien [Sun, 12 Apr 2020 09:06:32 +0000 (11:06 +0200)] 
atomics: change SC_ATOMIC_ADD to 'fetch_add'

Until this point the SC_ATOMIC_ADD macro pointed to a 'add_fetch'
intrinsic. This patch changes it to a 'fetch_add'.

There are 2 reasons for this:

1. C11 stdatomics.h has only 'atomic_fetch_add' and no 'add_fetch'
   So this patch prepares for adding support for C11 atomics.

2. It was not consistent with SC_ATOMIC_SUB, which did use 'fetch_sub'
   and not 'sub_fetch'.

Most callers are not using the return value, so these are unaffected.
The callers that do use the return value are updated.

5 years agoatomics: avoid unnecessary (direct) CAS use
Victor Julien [Sun, 12 Apr 2020 09:25:12 +0000 (11:25 +0200)] 
atomics: avoid unnecessary (direct) CAS use

5 years agoatomics: remove useless SC_ATOMIC_DESTROY
Victor Julien [Sun, 12 Apr 2020 10:02:56 +0000 (12:02 +0200)] 
atomics: remove useless SC_ATOMIC_DESTROY

5 years agoatomics: remove spinlocked fallback
Victor Julien [Wed, 4 Mar 2020 14:45:15 +0000 (15:45 +0100)] 
atomics: remove spinlocked fallback

5 years agofuzz: fix applayer eof check segv
Victor Julien [Wed, 15 Apr 2020 20:46:19 +0000 (22:46 +0200)] 
fuzz: fix applayer eof check segv

5 years agofuzz: stop app layer target as Suricata
Philippe Antoine [Wed, 15 Apr 2020 12:30:48 +0000 (14:30 +0200)] 
fuzz: stop app layer target as Suricata

Before being overwhelmed by successive errors

5 years agoconf: returns instead of exiting in ConfYamlParse
Philippe Antoine [Wed, 15 Apr 2020 09:48:13 +0000 (11:48 +0200)] 
conf: returns instead of exiting in ConfYamlParse

So that we can keep on fuzzing even on too much recursion

5 years agofuzz: add missing debug validation to configure
Victor Julien [Tue, 14 Apr 2020 12:42:17 +0000 (14:42 +0200)] 
fuzz: add missing debug validation to configure

5 years agofuzz: add configure wrapper for oss-fuzz 4813/head
Victor Julien [Tue, 14 Apr 2020 09:02:50 +0000 (11:02 +0200)] 
fuzz: add configure wrapper for oss-fuzz

5 years agoincludes: don't include sys/types.h twice 4811/head
Victor Julien [Mon, 13 Apr 2020 08:22:43 +0000 (10:22 +0200)] 
includes: don't include sys/types.h twice

5 years agoprivs: include headers in suricata-common.h
Victor Julien [Mon, 13 Apr 2020 08:21:46 +0000 (10:21 +0200)] 
privs: include headers in suricata-common.h

5 years agoconf/yaml: include yaml.h after suricata-common.h
Victor Julien [Mon, 13 Apr 2020 08:21:07 +0000 (10:21 +0200)] 
conf/yaml: include yaml.h after suricata-common.h

5 years agodoc/install: refer to buster as Debian stable
Sascha Steinbiss [Fri, 10 Apr 2020 09:53:54 +0000 (11:53 +0200)] 
doc/install: refer to buster as Debian stable

5 years agofuzz/sigpcap: enable all of eve
Victor Julien [Mon, 13 Apr 2020 06:19:14 +0000 (08:19 +0200)] 
fuzz/sigpcap: enable all of eve

5 years agodetect/iponly: fix parsing of '0' valued netmask
Victor Julien [Sat, 11 Apr 2020 11:54:00 +0000 (13:54 +0200)] 
detect/iponly: fix parsing of '0' valued netmask

5 years agoutil/mem: reduce scope of win32 specific include 4806/head
Victor Julien [Thu, 28 Nov 2019 14:05:05 +0000 (15:05 +0100)] 
util/mem: reduce scope of win32 specific include

5 years agoutil/mem: cleanup by moving atomic from mem hdr
Victor Julien [Wed, 27 Nov 2019 19:03:44 +0000 (20:03 +0100)] 
util/mem: cleanup by moving atomic from mem hdr

5 years agoutil/mem: move most logic to functions
Victor Julien [Wed, 27 Nov 2019 16:37:37 +0000 (17:37 +0100)] 
util/mem: move most logic to functions

Reduce macro use and simplify code. Also reduces compiled code
size.

5 years agoutil/mem: remove old debug code for counting allocs
Victor Julien [Wed, 27 Nov 2019 17:13:32 +0000 (18:13 +0100)] 
util/mem: remove old debug code for counting allocs

5 years agologging: turn SCLog and SCLogErr into funcs
Victor Julien [Wed, 27 Nov 2019 11:01:01 +0000 (12:01 +0100)] 
logging: turn SCLog and SCLogErr into funcs

Reduces compiled code size.

5 years agocommon: add ATTR_FMT_PRINTF wrapper
Victor Julien [Thu, 28 Nov 2019 13:55:29 +0000 (14:55 +0100)] 
common: add ATTR_FMT_PRINTF wrapper

Wraps around __attribute__((format(printf, (x), (y))))

5 years agocommon: use suricata-common.h in more places
Victor Julien [Thu, 28 Nov 2019 13:47:53 +0000 (14:47 +0100)] 
common: use suricata-common.h in more places

5 years agocommon: use WARN_UNUSED macro
Victor Julien [Thu, 28 Nov 2019 13:18:59 +0000 (14:18 +0100)] 
common: use WARN_UNUSED macro

5 years agodetect/mpm: don't process empty store
Victor Julien [Thu, 28 Nov 2019 10:47:56 +0000 (11:47 +0100)] 
detect/mpm: don't process empty store

5 years agodns/tests: comment typo fixes 4802/head
Victor Julien [Fri, 10 Apr 2020 11:50:33 +0000 (13:50 +0200)] 
dns/tests: comment typo fixes

5 years agodecode: return bool network layer
Victor Julien [Mon, 2 Mar 2020 14:45:25 +0000 (15:45 +0100)] 
decode: return bool network layer

So that the caller can set the correct event type on error.

5 years agodecode/hdlc: initial support
Victor Julien [Thu, 13 Feb 2020 20:43:30 +0000 (21:43 +0100)] 
decode/hdlc: initial support

5 years agodecode: single network layer entrypoint
Victor Julien [Wed, 26 Feb 2020 13:06:26 +0000 (14:06 +0100)] 
decode: single network layer entrypoint

This way new layers can be added in a single place.

5 years agodecode: create linklayer entry point
Victor Julien [Fri, 21 Feb 2020 15:07:57 +0000 (16:07 +0100)] 
decode: create linklayer entry point

Make AF_PACKET and PCAP mode use it.

5 years agodecode/ieee8021ah: fix possible packet truncation
Victor Julien [Wed, 26 Feb 2020 19:34:25 +0000 (20:34 +0100)] 
decode/ieee8021ah: fix possible packet truncation

5 years agofuzz/siginit: cleanup detect engine every 1024 runs
Victor Julien [Thu, 9 Apr 2020 08:05:21 +0000 (10:05 +0200)] 
fuzz/siginit: cleanup detect engine every 1024 runs

5 years agoapp-layer-template: fix log typo
Andreas Herz [Thu, 9 Apr 2020 13:24:14 +0000 (15:24 +0200)] 
app-layer-template: fix log typo

5 years agoconf/yaml: limit recursion depth while paring YAML
Jason Ish [Thu, 9 Apr 2020 21:59:23 +0000 (15:59 -0600)] 
conf/yaml: limit recursion depth while paring YAML

A deeply nested YAML file can cause a stack-overflow while
reading in the configuration to do the recursive parser. Limit
the recursion level to something sane (128) to prevent this
from happening.

The default Suricata configuration has a recursion level of 128
so there is still lots of room to grow (not that we should).

Redmine ticket:
https://redmine.openinfosecfoundation.org/issues/3630

5 years agodetect/parse: properly free bidir sigs in error path
Victor Julien [Fri, 10 Apr 2020 08:02:43 +0000 (10:02 +0200)] 
detect/parse: properly free bidir sigs in error path

5 years agodetect/parse: fix minor memory leak in error path
Victor Julien [Fri, 10 Apr 2020 07:55:36 +0000 (09:55 +0200)] 
detect/parse: fix minor memory leak in error path

Only reachable on SCMalloc so should be unlikely to be reached.

5 years agofuzz: allow uninitialized stats api 4793/head
Victor Julien [Wed, 8 Apr 2020 20:08:39 +0000 (22:08 +0200)] 
fuzz: allow uninitialized stats api

5 years agofuzz: remove UNITTEST dependency
Victor Julien [Tue, 7 Apr 2020 10:41:12 +0000 (12:41 +0200)] 
fuzz: remove UNITTEST dependency

Expose UTH flow builder to new 'FUZZ' define as well. Move UTHbufferToFile
as well and rename it to a more generic 'TestHelperBufferToFile'.

This way UNITTESTS can be disabled. This leads to smaller code size
and more realistic testing as in some parts of the code things
behave slightly differently when UNITTESTS are enabled.

5 years agodns: improve probe_tcp handling of incomplete data
Philippe Antoine [Mon, 16 Mar 2020 09:22:35 +0000 (10:22 +0100)] 
dns: improve probe_tcp handling of incomplete data

5 years agosource/erf: validate record length before read
Jason Ish [Mon, 6 Apr 2020 16:50:36 +0000 (10:50 -0600)] 
source/erf: validate record length before read

Check the ERF record length before attempting to read it as
a record length less than the size of the record header
is invalid.

Redmine ticket:
https://redmine.openinfosecfoundation.org/issues/3593

5 years agofuzz/sigpcap: initialize empty packet pool 4785/head
Victor Julien [Tue, 7 Apr 2020 05:01:59 +0000 (07:01 +0200)] 
fuzz/sigpcap: initialize empty packet pool

Fixes runs with --enable-debug-validation. The target did not init a
packet pool, so for a tunnel packet would try to get a packet from
an uninitialized pool. In non-debug mode, this silently works by
falling back to a packet from alloc.

    (gdb) bt
    #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
    #1  0x00007ffff35a6801 in __GI_abort () at abort.c:79
    #2  0x00007ffff359639a in __assert_fail_base (fmt=0x7ffff371d7d8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x555557fe7260 "!(pool->initialized == 0)",
        file=file@entry=0x555557fe7220 "tmqh-packetpool.c", line=line@entry=253, function=function@entry=0x555557fe7500 <__PRETTY_FUNCTION__.21181> "PacketPoolGetPacket") at assert.c:92
    #3  0x00007ffff3596412 in __GI___assert_fail (assertion=0x555557fe7260 "!(pool->initialized == 0)", file=0x555557fe7220 "tmqh-packetpool.c", line=253,
        function=0x555557fe7500 <__PRETTY_FUNCTION__.21181> "PacketPoolGetPacket") at assert.c:101
    #4  0x00005555577e24be in PacketPoolGetPacket () at tmqh-packetpool.c:253
    #5  0x0000555556914ecd in PacketGetFromQueueOrAlloc () at decode.c:183
    #6  0x00005555569161e1 in PacketTunnelPktSetup (tv=0x555559863980 <tv>, dtv=0x614000068e40, parent=0x61e0000fc080, pkt=0x61e0000fc470 "LL", len=72, proto=DECODE_TUNNEL_IPV4) at decode.c:286
    #7  0x00005555569de694 in DecodeIPv4inIPv6 (tv=0x555559863980 <tv>, dtv=0x614000068e40, p=0x61e0000fc080, pkt=0x61e0000fc470 "LL", plen=72) at decode-ipv6.c:59
    #8  0x00005555569e60b5 in DecodeIPV6ExtHdrs (tv=0x555559863980 <tv>, dtv=0x614000068e40, p=0x61e0000fc080, pkt=0x61e0000fc470 "LL", len=112) at decode-ipv6.c:522
    #9  0x00005555569e846f in DecodeIPV6 (tv=0x555559863980 <tv>, dtv=0x614000068e40, p=0x61e0000fc080, pkt=0x61e0000fc420 "cLL", len=255) at decode-ipv6.c:641
    #10 0x0000555556a032f9 in DecodeRaw (tv=0x555559863980 <tv>, dtv=0x614000068e40, p=0x61e0000fc080, pkt=0x61e0000fc420 "cLL", len=255) at decode-raw.c:70
    #11 0x0000555557659ba8 in DecodePcapFile (tv=0x555559863980 <tv>, p=0x61e0000fc080, data=0x614000068e40) at source-pcap-file.c:412
    #12 0x0000555556573401 in LLVMFuzzerTestOneInput (data=0x613000000047 "\241\262\315\064", size=339) at tests/fuzz/fuzz_sigpcap.c:158
    #13 0x0000555557a4dc66 in main (argc=2, argv=0x7fffffffdfa8) at tests/fuzz/onefile.c:51

That line:

    BUG_ON(pool->initialized == 0);

5 years agodoc: Update documentation for by_rule and by_both thresholds.
Todd Mortimer [Mon, 30 Mar 2020 23:49:32 +0000 (23:49 +0000)] 
doc: Update documentation for by_rule and by_both thresholds.

5 years agodetect/threshold: Add tests for thresholding by_rule and by_both.
Todd Mortimer [Mon, 30 Mar 2020 23:49:04 +0000 (23:49 +0000)] 
detect/threshold: Add tests for thresholding by_rule and by_both.

5 years agodetect/threshold: Add a common function to (re)allocate the by_rule threshold table.
Todd Mortimer [Mon, 30 Mar 2020 23:47:47 +0000 (23:47 +0000)] 
detect/threshold: Add a common function to (re)allocate the by_rule threshold table.

Ensure that the by_rule threshold table is initialized if a rule
is thresholded by_rule. Replace manual table reallocaton with calls
to the common function.

5 years agodetect/threshold: Refactor threshold calculation to handle by_rule and by_both.
Todd Mortimer [Mon, 30 Mar 2020 23:45:50 +0000 (23:45 +0000)] 
detect/threshold: Refactor threshold calculation to handle by_rule and by_both.

The only difference between threshold calculations for by_src/by_dst,
by_rule or by_both is which table stores the DetectThresholdEntry.
Refactor the ThresholdHandlePacket* functions to do table lookup and
storage individually, but calculate thresholds in a common function.

5 years agotime: Add TIMEVAL_EARLIER and TIMEVAL_DIFF_SEC macros.
Todd Mortimer [Mon, 30 Mar 2020 23:38:24 +0000 (23:38 +0000)] 
time: Add TIMEVAL_EARLIER and TIMEVAL_DIFF_SEC macros.

Make it easy to compare 'struct timeval's and get their difference.

5 years agodetect/threshold: Parse by_rule and by_both in rules.
Todd Mortimer [Mon, 30 Mar 2020 23:36:12 +0000 (23:36 +0000)] 
detect/threshold: Parse by_rule and by_both in rules.

Also add tests for parsing them.

5 years agoapp-layer/proto-detect: minor cleanup 4784/head
Victor Julien [Mon, 6 Apr 2020 17:35:24 +0000 (19:35 +0200)] 
app-layer/proto-detect: minor cleanup

Make sure the mask calculation is u32.

5 years agodetect/pktvar: fix memory leaks
Victor Julien [Sun, 5 Apr 2020 14:56:35 +0000 (16:56 +0200)] 
detect/pktvar: fix memory leaks

5 years agofuzz: limit input size for protocol detection consistency check
Philippe Antoine [Mon, 6 Apr 2020 15:28:33 +0000 (17:28 +0200)] 
fuzz: limit input size for protocol detection consistency check

5 years agodetect/ssl: Fix memory leak in version parsing
Jeff Lucovsky [Mon, 6 Apr 2020 13:55:41 +0000 (09:55 -0400)] 
detect/ssl: Fix memory leak in version parsing

This commit fixes a memory leak in the SSL version handling that
manifests when the version identifier is incomplete or incorrect.

5 years agofuzz: build compatibility with oss-fuzz flags 4780/head
Philippe Antoine [Mon, 6 Apr 2020 08:58:23 +0000 (10:58 +0200)] 
fuzz: build compatibility with oss-fuzz flags

ie C define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION

5 years agodoc/devguide: Submission and style 4777/head
Jeff Lucovsky [Mon, 30 Mar 2020 15:01:59 +0000 (11:01 -0400)] 
doc/devguide: Submission and style

This commit adds code submission and coding style guidelines to the
devguide. Most of the material is a straight port from the wiki but
there have been some content modifications and additions.

5 years agodevguide: include sources in EXTRA_DIST
Jason Ish [Thu, 19 Mar 2020 22:27:37 +0000 (16:27 -0600)] 
devguide: include sources in EXTRA_DIST

Required for distcheck to pass, and required to build docs
from a dist archive.

5 years agogithub-ci: on centos-8 build, use distcheck
Jason Ish [Thu, 19 Mar 2020 20:13:33 +0000 (14:13 -0600)] 
github-ci: on centos-8 build, use distcheck

And verify that man page is built.

5 years agogithub-ci: build documentation on Ubuntu 18.04
Jason Ish [Thu, 19 Mar 2020 19:30:45 +0000 (13:30 -0600)] 
github-ci: build documentation on Ubuntu 18.04

5 years agogithub-ci: build documentation on Fedora-31 build
Jason Ish [Thu, 19 Mar 2020 18:30:06 +0000 (12:30 -0600)] 
github-ci: build documentation on Fedora-31 build

Install sphinx and latex tools to test the building
of documentation on the Fedora 31 build, including
the PDF.

5 years agoci: adds a build with make tags 4776/head
Philippe Antoine [Fri, 3 Apr 2020 13:31:59 +0000 (15:31 +0200)] 
ci: adds a build with make tags

5 years agoconfigure: correctly display nss/nspr status
Eric Leblond [Tue, 11 Feb 2020 14:21:39 +0000 (16:21 +0200)] 
configure: correctly display nss/nspr status

If autodiscovery of libnss was used (default), then the line
 libnss support:                          yes
was never set to no.

Same behavior for libnspr.

Broken by commit 'configure: fix nspr check logic' (7ea269a212a3a2209effc3cc9300873d6a06859e)

5 years agoflow: cleanup expectations first
Victor Julien [Fri, 3 Apr 2020 08:09:07 +0000 (10:09 +0200)] 
flow: cleanup expectations first

Make sure to cleanup expectations for a flow as the first step, before
parts of the flow itself are getting cleaned/freed.

Also indicate use unlikely as flows with expectations should be relatively
rare.

5 years agoapp-layer-expectation: update copyright date
Eric Leblond [Sun, 9 Feb 2020 19:33:21 +0000 (20:33 +0100)] 
app-layer-expectation: update copyright date

5 years agoapp-layer-expectation: clean expectation at flow end
Eric Leblond [Fri, 7 Feb 2020 23:05:01 +0000 (00:05 +0100)] 
app-layer-expectation: clean expectation at flow end

When a flow timeout, we can have still existing expectations that
are linked to this flow. Given that there is a delay between the
real ending of the flow and its destruction by Suricata, the
expectation should be already honored so we can assume the risk
to clean the expectations that have been triggered by the
to-be-deleted flow.

5 years agoapp-layer-expectation: limit number of expectations
Eric Leblond [Fri, 7 Feb 2020 23:01:28 +0000 (00:01 +0100)] 
app-layer-expectation: limit number of expectations

This patch introduces a limitation in term of number of
expectations attached to one IPPair. This is done using
a circle list so we have a FIFO approach on expectation
handling.

Circleq list code is copied from BSD code like was pre existing code
in queue.h.

5 years agoapp-layer-expectation: remove unused parameter
Eric Leblond [Tue, 10 Dec 2019 21:15:14 +0000 (22:15 +0100)] 
app-layer-expectation: remove unused parameter

5 years agotests/bsize: Fuzzing test case added 4765/head
Jeff Lucovsky [Tue, 31 Mar 2020 12:46:38 +0000 (08:46 -0400)] 
tests/bsize: Fuzzing test case added

This commit adds a test case to validate the issue found during fuzz
testing.

5 years agodetect/bsize: Ensure numeric values fit
Jeff Lucovsky [Mon, 30 Mar 2020 13:51:27 +0000 (09:51 -0400)] 
detect/bsize: Ensure numeric values fit

This commit ensures that the numeric values will not exceed the size of
the containers used to hold them.

5 years agodetect/parse: fix crash on 'internal' keyword use
Victor Julien [Tue, 31 Mar 2020 12:04:07 +0000 (14:04 +0200)] 
detect/parse: fix crash on 'internal' keyword use

When keyword __flowvar__postmatch__, an internal keyword, is used
in a rule the 'Setup' func ptr will be NULL. This caused a crash.

5 years agofuzz/siginit: fix leak in case of bidir sig
Victor Julien [Tue, 31 Mar 2020 11:53:40 +0000 (13:53 +0200)] 
fuzz/siginit: fix leak in case of bidir sig

5 years agofuzz/siginit: minor improvements
Victor Julien [Tue, 31 Mar 2020 11:32:35 +0000 (13:32 +0200)] 
fuzz/siginit: minor improvements

Enable detect engine 'quiet' mode to generate less output.

Set a fake filename so that datarep doesn't hit a reachable assert.

5 years agodetect/pkt_data: error on unconsumed transforms
Victor Julien [Tue, 31 Mar 2020 08:38:06 +0000 (10:38 +0200)] 
detect/pkt_data: error on unconsumed transforms

If a rule has transforms w/o consuming them (e.g. a content keyword),
don't consider 'pkt_data' valid.

5 years agodetect/pkt_data: code and test cleanup
Victor Julien [Tue, 31 Mar 2020 09:37:51 +0000 (11:37 +0200)] 
detect/pkt_data: code and test cleanup

5 years agodetect: more robust against transform issues
Victor Julien [Tue, 31 Mar 2020 08:35:54 +0000 (10:35 +0200)] 
detect: more robust against transform issues

In case of transform issues (transform not consumed before pkt_data
for example), the code would hit an ugly BUG_ON.

Address this by a more graceful error message, that will still
invalidate the sig but not crash the engine.

5 years agorfb: make sure size calculations do not overflow
Sascha Steinbiss [Sun, 29 Mar 2020 17:33:29 +0000 (19:33 +0200)] 
rfb: make sure size calculations do not overflow

Addresses #3570 by extra checking of calculated size requests.

With the given input, the parser eventually arrived at
parser::parse_failure_reason() which parsed from the remaining four
bytes (describing the string length) that the failure string to follow
would be 4294967295 bytes long. While calculating the total size of the
data to request via AppLayerResult::incomplete(), adding the four bytes
for the parsed but not consumed string length caused the u32 length to
overflow, resulting in a much smaller value triggering the bug condition.

This problem was addressed by more careful checking of values in each step
that could overflow: one subtraction, one addition (which could overflow
the usize length values), and a final check to determine whether the result
still fit into the u32 values required by AppLayerResult::incomplete().
If so, we would safely convert the values and pass them to the result type.
If not, we simply return AppLayerResult::err() but do not erroneously and
silently request the wrong amount.

5 years agodetect/tls: Use pcre_copy_substring to avoid leak
Jeff Lucovsky [Mon, 30 Mar 2020 11:57:36 +0000 (07:57 -0400)] 
detect/tls: Use pcre_copy_substring to avoid leak

This commit eliminates a memory leak while parsing TLS version
information. The leak was identified through fuzzing.