]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
3 years agodoc: escape dot in pcre 6306/head
myr463 [Wed, 9 Dec 2020 16:48:34 +0000 (17:48 +0100)] 
doc: escape dot in pcre

3 years agounix-socket: Avoid spurious logs on close
Michael Smith [Tue, 22 Jun 2021 02:33:47 +0000 (22:33 -0400)] 
unix-socket: Avoid spurious logs on close

Avoid spurious logs when suricatasc closes connection.

Use SCLogDebug for control connection EOF, and SCLogError for an error.

As Chandan Chowdhury described in redmine 3685. This makes the logging
consistent with the older `if (client->version <= UNIX_PROTO_V1)` block
about 20 lines above, and avoids polluting the logs with
`Unix socket: lost connection with client`.

3 years agoci: rebase specified s-v pr
Philippe Antoine [Mon, 5 Jul 2021 14:37:03 +0000 (16:37 +0200)] 
ci: rebase specified s-v pr

So that CI does not fail, if suricata PR got upgraded in a new
version, but S-V PR did not get upgraded, and S-V changed
in master

3 years agodnp3: regenerate object decoding code
Philippe Antoine [Thu, 8 Jul 2021 13:02:50 +0000 (15:02 +0200)] 
dnp3: regenerate object decoding code

Ticket: #4558
So as to avoid intra-structure overflow

3 years agodnp3: adds bounds check for prefix chararray
Philippe Antoine [Thu, 8 Jul 2021 13:01:15 +0000 (15:01 +0200)] 
dnp3: adds bounds check for prefix chararray

Ticket: #4558
Avoids intra structure overflow

3 years agodnp3: use base64 macro in gen script
Philippe Antoine [Thu, 8 Jul 2021 12:57:56 +0000 (14:57 +0200)] 
dnp3: use base64 macro in gen script

As is done already in C
cf commit ea0936199d142fc52ec69baf7984cbdd92dd4705

3 years agothreading: don't pass locked flow between threads
Victor Julien [Wed, 18 Aug 2021 18:14:48 +0000 (20:14 +0200)] 
threading: don't pass locked flow between threads

Previously the flow manager would share evicted flows with the workers
while keeping the flows mutex locked. This reduced the number of unlock/
lock cycles while there was guaranteed to be no contention.

This turns out to be undefined behavior. A lock is supposed to be locked
and unlocked from the same thread. It appears that FreeBSD is stricter on
this than Linux.

This patch addresses the issue by unlocking before handing a flow off
to another thread, and locking again from the new thread.

Issue was reported and largely analyzed by Bill Meeks.

Bug: #4478

3 years agorust(lint): suppress clippy lints that we should fix 6304/head
Jason Ish [Fri, 20 Aug 2021 17:44:17 +0000 (11:44 -0600)] 
rust(lint): suppress clippy lints that we should fix

Suppress all remaining clippy lints that we trip. This can be
fixed on a per-lint basis.

3 years agorust(lint): remove manual implement of map method
Jason Ish [Fri, 20 Aug 2021 17:41:40 +0000 (11:41 -0600)] 
rust(lint): remove manual implement of map method

Using `if let` expressions in these cases is better expressed
by the map method, and considered idiomatic Rust for this usage.

3 years agorust(lint): map the error instead of using or_else
Jason Ish [Fri, 20 Aug 2021 17:38:31 +0000 (11:38 -0600)] 
rust(lint): map the error instead of using or_else

This is the preffered style and easier to understand the meaning
of the code.

3 years agorust(lint): replace push_str of single char to push(<char>)
Jason Ish [Fri, 20 Aug 2021 17:31:48 +0000 (11:31 -0600)] 
rust(lint): replace push_str of single char to push(<char>)

3 years agorust(lint): fix some usages of references
Jason Ish [Fri, 20 Aug 2021 17:31:03 +0000 (11:31 -0600)] 
rust(lint): fix some usages of references

- ref is discouraged for top level variables
- the other borrow is not required

3 years agorust(lint): replace checked_mul with saturating_mul
Jason Ish [Fri, 20 Aug 2021 17:29:37 +0000 (11:29 -0600)] 
rust(lint): replace checked_mul with saturating_mul

When defaulting checked_mul to u64::max, Rust has a method
that does the same thing called saturating_mul.

3 years agorust(lint): removed unused unit () return
Jason Ish [Fri, 20 Aug 2021 17:20:49 +0000 (11:20 -0600)] 
rust(lint): removed unused unit () return

This is code that is not needed and is a bit confusing to see.

3 years agorust(lint): remove extra parens around bitwise or
Jason Ish [Fri, 20 Aug 2021 17:17:59 +0000 (11:17 -0600)] 
rust(lint): remove extra parens around bitwise or

This is a readability fix, as on first look they almost look
like a Rust tuple.

3 years agorust(lint): remove useless conversions and clones
Jason Ish [Fri, 20 Aug 2021 17:11:23 +0000 (11:11 -0600)] 
rust(lint): remove useless conversions and clones

These add complexity and may not be optimized out by the compiler.

3 years agorust(lint): remove useless format calls
Jason Ish [Fri, 20 Aug 2021 17:03:45 +0000 (11:03 -0600)] 
rust(lint): remove useless format calls

In these simple cases to_string() is recommended and likely
performs better as the formatter is not called.

3 years agorust(lint): don't use unwrap_or for function calls
Jason Ish [Fri, 20 Aug 2021 16:59:41 +0000 (10:59 -0600)] 
rust(lint): don't use unwrap_or for function calls

Calling a function in unwrap_or causes that function to always
be called even when not needed. Instead use unwrap_or_else with
a closure which will only be called when needed.

3 years agorust(lint): fix redundant closures
Jason Ish [Fri, 20 Aug 2021 16:51:46 +0000 (10:51 -0600)] 
rust(lint): fix redundant closures

This lint checks for a closure where a function can be directly
supplied.  Runtime performance is unchanged, but this makes
less work for the compiler.

3 years agorust(lint): remove needless borrows
Jason Ish [Fri, 20 Aug 2021 16:22:30 +0000 (10:22 -0600)] 
rust(lint): remove needless borrows

These are needless borrows (references) as the item is already
a reference.

3 years agorust: functions that reference raw pointers are unsafe
Jason Ish [Mon, 26 Jul 2021 21:53:44 +0000 (15:53 -0600)] 
rust: functions that reference raw pointers are unsafe

Based on the Rust clippy lint that recommends that any public
function that dereferences a raw pointer, mark all FFI functions
that reference raw pointers with build_slice and cast_pointer
as unsafe.

This commits starts by removing the unsafe wrapper inside
the build_slice and cast_pointer macros then marks all
functions that use these macros as unsafe.

Then fix all not_unsafe_ptr_arg_deref warnings from clippy.

Fixes clippy lint:
https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref

3 years agorust: remove all usage of transmute
Jason Ish [Mon, 26 Jul 2021 19:25:17 +0000 (13:25 -0600)] 
rust: remove all usage of transmute

All cases of our transmute can be replaced with more idiomatic
solutions and do no require the power of transmute.

When returning an object to C for life-time management, use
Box::into_raw to convert the boxed object to pointer and use
Box::from_raw to convert back.

For cases where we're just returning a pointer to Rust managed
data, use a cast.

3 years agooutput/redis: Fix possible segv
KevinWang [Fri, 6 Aug 2021 11:39:04 +0000 (19:39 +0800)] 
output/redis: Fix possible segv

3 years agoqa: use time on fuzz targets being run on corpus
Philippe Antoine [Thu, 22 Jul 2021 16:54:16 +0000 (18:54 +0200)] 
qa: use time on fuzz targets being run on corpus

3 years agostream-tcp-reassemble: fix typo, updt copyright yr 6290/head
Juliana Fajardini [Tue, 10 Aug 2021 16:28:55 +0000 (17:28 +0100)] 
stream-tcp-reassemble: fix typo, updt copyright yr

3 years agostream-tcp-reassemble: fix ConfGetBool unc'kd call
Juliana Fajardini [Tue, 10 Aug 2021 16:27:32 +0000 (17:27 +0100)] 
stream-tcp-reassemble: fix ConfGetBool unc'kd call

3 years agostream-tcp: fix typos, update copyright year
Juliana Fajardini [Tue, 10 Aug 2021 16:17:19 +0000 (17:17 +0100)] 
stream-tcp: fix typos, update copyright year

3 years agostream-tcp: fix ConfGetBool unchecked call
Juliana Fajardini [Tue, 10 Aug 2021 15:31:17 +0000 (16:31 +0100)] 
stream-tcp: fix ConfGetBool unchecked call

3 years agoutil-napatech: fix typos, update copyright year
Juliana Fajardini [Tue, 10 Aug 2021 15:29:31 +0000 (16:29 +0100)] 
util-napatech: fix typos, update copyright year

3 years agoutil-napatech: fix ConfGetBool unchecked call
Juliana Fajardini [Tue, 10 Aug 2021 15:03:50 +0000 (16:03 +0100)] 
util-napatech: fix ConfGetBool unchecked call

3 years agoutil-debug: fix unchecked ConfGetBool call
Juliana Fajardini [Tue, 10 Aug 2021 14:57:48 +0000 (15:57 +0100)] 
util-debug: fix unchecked ConfGetBool call

4 years agonfs: minor code cleanup 6287/head
Victor Julien [Fri, 6 Aug 2021 11:16:13 +0000 (13:16 +0200)] 
nfs: minor code cleanup

4 years agosmb: minor formatting fixup
Victor Julien [Fri, 6 Aug 2021 11:15:58 +0000 (13:15 +0200)] 
smb: minor formatting fixup

4 years agosmb: minor code cleanup
Victor Julien [Fri, 6 Aug 2021 11:15:43 +0000 (13:15 +0200)] 
smb: minor code cleanup

4 years agosmtp: fix clang fmt 6285/head
Shivani Bhardwaj [Thu, 8 Jul 2021 12:12:07 +0000 (17:42 +0530)] 
smtp: fix clang fmt

4 years agonfs: fix comment
Shivani Bhardwaj [Fri, 25 Jun 2021 11:42:22 +0000 (17:12 +0530)] 
nfs: fix comment

4 years agonfs: Add rust registration function
Shivani Bhardwaj [Thu, 24 Jun 2021 10:42:55 +0000 (16:12 +0530)] 
nfs: Add rust registration function

Get rid of the C glue code and move registration completely to Rust.

4 years agonfs: add missing code from rust impl of fns
Shivani Bhardwaj [Sat, 26 Jun 2021 11:13:35 +0000 (16:43 +0530)] 
nfs: add missing code from rust impl of fns

4 years agonfs: Change fn sign as per rust registration requirement
Shivani Bhardwaj [Fri, 21 May 2021 10:01:16 +0000 (15:31 +0530)] 
nfs: Change fn sign as per rust registration requirement

Registering parsers in Rust requires signatures to be a certain way and
compatible with C. Change signatures of all the functions.
Probe fn has also been changed to return AppProto as required by the new
fn signature.

4 years agosmb: Add rust registration function
Shivani Bhardwaj [Sat, 19 Jun 2021 07:53:14 +0000 (13:23 +0530)] 
smb: Add rust registration function

Get rid of the C glue code and move registration completely to Rust.

4 years agosmb: add missing code from rust impl of fns
Shivani Bhardwaj [Tue, 29 Jun 2021 09:30:07 +0000 (15:00 +0530)] 
smb: add missing code from rust impl of fns

4 years agosmb: Change fn sign as per rust registration requirement
Shivani Bhardwaj [Fri, 18 Jun 2021 11:40:37 +0000 (17:10 +0530)] 
smb: Change fn sign as per rust registration requirement

Registering parsers in Rust requires signatures to be a certain way and
compatible with C. Change signatures of all the functions.

4 years agosmb: add constants
Shivani Bhardwaj [Mon, 28 Jun 2021 11:55:55 +0000 (17:25 +0530)] 
smb: add constants

4 years agorust/core: Add flow flags
Shivani Bhardwaj [Mon, 21 Jun 2021 11:06:42 +0000 (16:36 +0530)] 
rust/core: Add flow flags

4 years agoflow: provide flags accessor function
Jason Ish [Fri, 14 May 2021 15:29:54 +0000 (09:29 -0600)] 
flow: provide flags accessor function

Add an accessor function for flow flags. To be used by Rust where
the flow struct is an opaque data type.

4 years agorust/applayer: add more externs
Shivani Bhardwaj [Thu, 6 May 2021 12:01:04 +0000 (17:31 +0530)] 
rust/applayer: add more externs

4 years agostream: check if ACK packet is outdated 6248/head
Victor Julien [Mon, 4 Jan 2021 21:10:08 +0000 (22:10 +0100)] 
stream: check if ACK packet is outdated

Outdated packets are ACK packets w/o data that have an ACK value
lower than our last_ack and also don't have an SACK records that
are new.

This can happen when some packets come in later than others (possibly
due to different paths taken).

4 years agostream/sack: clean up includes
Victor Julien [Fri, 8 Jan 2021 07:59:29 +0000 (08:59 +0100)] 
stream/sack: clean up includes

4 years agostream/sack: minor debug improvements
Victor Julien [Mon, 4 Jan 2021 21:10:58 +0000 (22:10 +0100)] 
stream/sack: minor debug improvements

4 years agostream: minor debug additions
Victor Julien [Thu, 31 Dec 2020 09:53:08 +0000 (10:53 +0100)] 
stream: minor debug additions

4 years agodoc/dcerpc: add proto keywords
Shivani Bhardwaj [Wed, 24 Feb 2021 08:05:37 +0000 (13:35 +0530)] 
doc/dcerpc: add proto keywords

4 years agomqtt: enable in config and remove misleading comment
Sascha Steinbiss [Sat, 26 Jun 2021 11:40:09 +0000 (13:40 +0200)] 
mqtt: enable in config and remove misleading comment

4 years agostream: update memcaps in code to match config
Victor Julien [Thu, 1 Jul 2021 14:31:35 +0000 (16:31 +0200)] 
stream: update memcaps in code to match config

4 years agoapp-layer/pd: review bailout conditions
Philippe Antoine [Wed, 9 Jun 2021 10:09:23 +0000 (12:09 +0200)] 
app-layer/pd: review bailout conditions

To take TCP window into account
And to actually bail out if we received too much data
where the limit is configured by stream.reassembly.depth

4 years agoapp-layer/pd: only consider actual available data
Victor Julien [Wed, 21 Apr 2021 13:20:49 +0000 (15:20 +0200)] 
app-layer/pd: only consider actual available data

For size limit checks consider only available data at the stream start
and before any GAPS.

The old check would consider too much data if there were temporary gaps,
like when a data packet was in-window but (far) ahead of the expected
segment.

4 years agostreaming/buffer: account sbb data size
Victor Julien [Fri, 4 Jun 2021 13:31:33 +0000 (15:31 +0200)] 
streaming/buffer: account sbb data size

When tracking data track the size of the blocks so that in case
of gaps we can still know how much data we hold.

4 years agodetect/iprep: convert to FAIL/PASS API 6242/head 6261/head
Juliana Fajardini [Tue, 29 Jun 2021 21:05:21 +0000 (22:05 +0100)] 
detect/iprep: convert to FAIL/PASS API

4 years agomodbus: do not claim to handle gaps
Philippe Antoine [Mon, 21 Jun 2021 07:57:09 +0000 (09:57 +0200)] 
modbus: do not claim to handle gaps

4 years agodoc: Grammar Correction
showipintbri [Thu, 10 Jun 2021 21:32:34 +0000 (17:32 -0400)] 
doc: Grammar Correction

4 years agocounters: only print alerts if stats are enabled
Shivani Bhardwaj [Mon, 21 Jun 2021 18:35:06 +0000 (00:05 +0530)] 
counters: only print alerts if stats are enabled

4 years agodetect: fix typos and update copyright year
Juliana Fajardini [Mon, 21 Jun 2021 09:50:04 +0000 (10:50 +0100)] 
detect: fix typos and update copyright year

4 years agodetect: fix bug where rule without sid is accepted
Juliana Fajardini [Thu, 17 Jun 2021 16:18:09 +0000 (17:18 +0100)] 
detect: fix bug where rule without sid is accepted

Before, if Suricata parsed a rule without a 'sid' option, instead of
failing that rule, the rule was parsed and attributed a sid 0.
Changes to:
detect-parse:
- add logic to filter out rules without sid;
- change unittest which didn't have a sid, but used to pass.
detect-sid: add unittest for rules without sid or with sid: 0

4 years agofuzz: only build fuzz_sigpcap_aware if asked
Philippe Antoine [Mon, 21 Jun 2021 08:04:10 +0000 (10:04 +0200)] 
fuzz: only build fuzz_sigpcap_aware if asked

With the other fuzz targets, and do not build it if fuzzpcap
is available but we did not want to build the fuzz targets

4 years agorust: fix warnings with nightly
Sascha Steinbiss [Tue, 22 Jun 2021 07:33:24 +0000 (09:33 +0200)] 
rust: fix warnings with nightly

4 years agostream/tcp: limit ACK validation
Eric Leblond [Fri, 28 May 2021 10:19:45 +0000 (12:19 +0200)] 
stream/tcp: limit ACK validation

Only limit ACK value validation for packet where the ACK bit is
set.

4 years agostream/tcp: don't reject on bad ack
Eric Leblond [Fri, 28 May 2021 10:19:38 +0000 (12:19 +0200)] 
stream/tcp: don't reject on bad ack

Not using a packet for the streaming analysis when a non zero
ACK value and ACK bit was unset was leading to evasion as it was
possible to start a session with a SYN packet with a non zero ACK
value to see the full TCP stream to escape all stream and application
layer detection.

This addresses CVE-2021-35063.

Fixes: fa692df37 ("stream: reject broken ACK packets")
Ticket: #4504.

4 years agostream/tcp: update ack handling logic
Eric Leblond [Fri, 28 May 2021 10:19:19 +0000 (12:19 +0200)] 
stream/tcp: update ack handling logic

Only update the ack value of a session for regular packets when
the ACK bit is set.

4 years agodns: improve probing parser
Philippe Antoine [Tue, 9 Mar 2021 20:00:36 +0000 (21:00 +0100)] 
dns: improve probing parser

Checks opcode is valid
Checks additional_rr do not exceed message length
Better logic for incomplete cases

4 years agodetect/files: fix buffer tracking with multiple files
Victor Julien [Tue, 15 Jun 2021 13:14:55 +0000 (15:14 +0200)] 
detect/files: fix buffer tracking with multiple files

4 years agomqtt: move sub/unsub limits into app-layer config
Victor Julien [Mon, 21 Jun 2021 19:10:55 +0000 (21:10 +0200)] 
mqtt: move sub/unsub limits into app-layer config

4 years agodetect/mqtt: add topic inspection limit
Sascha Steinbiss [Mon, 10 May 2021 12:54:47 +0000 (14:54 +0200)] 
detect/mqtt: add topic inspection limit

We add a new 'mqtt.(un)subscribe-topic-match-limit' option
to allow a user to specify the maximum number of topics in
a MQTT SUBSCRIBE or UNSUBSCRIBE message to be evaluated
in detection.

4 years agosmtp: null terminate before calling strtoul
Philippe Antoine [Thu, 22 Apr 2021 08:28:15 +0000 (10:28 +0200)] 
smtp: null terminate before calling strtoul

by copying in a temporary buffer
as is done in ByteExtractString

4 years agoswf: right input length for decompression
Philippe Antoine [Thu, 29 Apr 2021 09:57:15 +0000 (11:57 +0200)] 
swf: right input length for decompression

4 years agodcerpc: handles bigger inputs than 2^16
Philippe Antoine [Mon, 12 Apr 2021 14:56:33 +0000 (16:56 +0200)] 
dcerpc: handles bigger inputs than 2^16

By comparing integers with the largest size

4 years agodetect: use u32 for InspectionBufferMultipleForList
Philippe Antoine [Thu, 6 May 2021 07:25:49 +0000 (09:25 +0200)] 
detect: use u32 for InspectionBufferMultipleForList

So that we do not have an endless loop casting index to
u16 and having more than 65536 buffers in one transaction

Changes for all protocols, even ones where it is impossible
to have such a pattern, so as to avoid bad pattern copy/paste
in the future

4 years agodetect: set event if max inspect buffers exceeded
Victor Julien [Thu, 13 May 2021 06:06:11 +0000 (08:06 +0200)] 
detect: set event if max inspect buffers exceeded

If a parser exceeds 1024 buffers we stop processing them and
set a detect event instead. This is to avoid parser bugs as well as
crafted bad traffic leading to resources starvation due to excessive
loops.

4 years agodetect: fix multi inspect buffer issue; clean up
Victor Julien [Thu, 13 May 2021 05:50:12 +0000 (07:50 +0200)] 
detect: fix multi inspect buffer issue; clean up

Fix multi inspect buffer API causing cleanup logic in the single
inspect buffer paths. This could lead to a buffer overrun in the
"to clear" logic.

Multi buffers now use InspectionBufferSetupMulti instead of
InspectionBuffer. This is enforced by a check in debug validation.

Simplify the multi inspect buffer setup code and update the callers.

4 years agodetect: reformat events table
Victor Julien [Fri, 14 May 2021 05:53:55 +0000 (07:53 +0200)] 
detect: reformat events table

4 years agonfs: improve probing parser 6198/head
Philippe Antoine [Tue, 16 Mar 2021 12:07:16 +0000 (13:07 +0100)] 
nfs: improve probing parser

Checks credentials flavor is known

4 years agoenip: improve probing parser
Philippe Antoine [Tue, 9 Mar 2021 14:54:16 +0000 (15:54 +0100)] 
enip: improve probing parser

Strict length for register sessions
NOP command must have options=0

4 years agoconfig: fix null dereference in MacSetRegisterFlowStorage
Philippe Antoine [Fri, 11 Jun 2021 12:13:44 +0000 (14:13 +0200)] 
config: fix null dereference in MacSetRegisterFlowStorage

Crash happens with
--set outputs.eve-json.types.files.force-magic=yes

4 years agomodbus: use ascii character classes while parsin rule
Philippe Antoine [Mon, 31 May 2021 07:32:33 +0000 (09:32 +0200)] 
modbus: use ascii character classes while parsin rule

As the rust regex crate is unicode aware, which was
not the case of the C version

4 years agorust: SCLogDebug is real nop when built as release 6197/head
Philippe Antoine [Thu, 6 May 2021 11:30:49 +0000 (13:30 +0200)] 
rust: SCLogDebug is real nop when built as release

Before, even if there were no outputs, all the arguments
were evaluated, which could turn expensive

All variables which are used only in certain build configurations
are now prefixed by underscore to avoid warnings

4 years agohttp2: set Debug on structs
Victor Julien [Thu, 10 Jun 2021 19:03:31 +0000 (21:03 +0200)] 
http2: set Debug on structs

4 years agounittests: optimize RunmodeIsUnittests()
Victor Julien [Wed, 9 Jun 2021 07:23:07 +0000 (09:23 +0200)] 
unittests: optimize RunmodeIsUnittests()

4 years agostream: packet to stream flags macro
Victor Julien [Fri, 11 Jun 2021 07:52:11 +0000 (09:52 +0200)] 
stream: packet to stream flags macro

4 years agopackets: more detailed entry debug for detect/stream
Victor Julien [Fri, 11 Jun 2021 08:52:25 +0000 (10:52 +0200)] 
packets: more detailed entry debug for detect/stream

4 years agofiles: construct with default, free on drop
Victor Julien [Mon, 7 Jun 2021 11:29:11 +0000 (13:29 +0200)] 
files: construct with default, free on drop

Update protocols.

4 years agofiles: implement default support
Victor Julien [Mon, 7 Jun 2021 09:34:31 +0000 (11:34 +0200)] 
files: implement default support

4 years agorust: fix app-layer parser flags 6172/head
Philippe Antoine [Fri, 4 Jun 2021 08:28:10 +0000 (10:28 +0200)] 
rust: fix app-layer parser flags

This especially allows for SSH bypass to work

4 years agodecode/vxlan: Delay var init until needed
Jeff Lucovsky [Mon, 24 May 2021 12:03:02 +0000 (08:03 -0400)] 
decode/vxlan: Delay var init until needed

This commit modifies the var initialization slightly until after
integrity checks have been performed.

4 years agogeneral/typo: Correct typo
Jeff Lucovsky [Mon, 24 May 2021 12:02:45 +0000 (08:02 -0400)] 
general/typo: Correct typo

4 years agodecode: Eliminate NULL pkt checks
Jeff Lucovsky [Mon, 24 May 2021 12:01:58 +0000 (08:01 -0400)] 
decode: Eliminate NULL pkt checks

This commit removes the NULL pkt check that each decoder performs as
this is a "can't happen" case.

4 years agothresholds: Fix buffer overflow in threshold context
Mats Klepsland [Thu, 27 May 2021 10:02:55 +0000 (12:02 +0200)] 
thresholds: Fix buffer overflow in threshold context

th_entry is resized using ThresholdHashRealloc() every time a rule with
a threshold using by_rule tracking is added. The problem is that this is
done before the rules are reordered, so occasionally a rule with by_rule
tracking gets a higher signature number (after reordering) than the
number of th_entries allocated, causing Suricata to crash.

This commit fixes this by allocating th_entries after all the rules are
loaded and reordered.

Backtrace from core dump:

  Program terminated with signal SIGSEGV, Segmentation fault.

  #0  0x000000000051b381 in ThresholdHandlePacket (p=p@entry=0x7fb0080f3960, lookup_tsh=0x51, new_tsh=new_tsh@entry=0x7fb016c316e0, td=td@entry=0x14adedf0, sid=9800979, gid=1, pa=0x7fb0080f3b18)
      at detect-engine-threshold.c:415
  415>----                if (TIMEVAL_DIFF_SEC(p->ts, lookup_tsh->tv1) < td->seconds) {

Bug #4503.

4 years agothresholds: syntax fixes
Mats Klepsland [Thu, 27 May 2021 09:04:15 +0000 (11:04 +0200)] 
thresholds: syntax fixes

Fix syntax of if statement in SigGetThresholdTypeIter()

4 years agothresholds: remove unneeded function argument
Mats Klepsland [Thu, 27 May 2021 08:59:36 +0000 (10:59 +0200)] 
thresholds: remove unneeded function argument

Remove packet pointer from SigGetThresholdTypeIter() as it is
unused.

4 years agodoc/eve: common fields and alert updates
Juliana Fajardini [Wed, 2 Jun 2021 12:29:09 +0000 (13:29 +0100)] 
doc/eve: common fields and alert updates

- update examples for both
- change app_proto from alert field to common field, as
  per JsonBuilder's changes.

4 years agodoc/eve: fix typos
Juliana Fajardini [Wed, 2 Jun 2021 12:16:46 +0000 (13:16 +0100)] 
doc/eve: fix typos

4 years agooutput: Fix possible null deref 6157/head
Jeff Lucovsky [Wed, 2 Jun 2021 11:31:20 +0000 (07:31 -0400)] 
output: Fix possible null deref

This commit corrects an issue uncovered by Coverity. See the redmine
issue for details: https://redmine.openinfosecfoundation.org/issues/4495

4 years agohttp2: only mimic http1 request if there is one 6139/head
Philippe Antoine [Thu, 22 Apr 2021 07:41:30 +0000 (09:41 +0200)] 
http2: only mimic http1 request if there is one

That may not be the case in midstream/async configurations