]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
3 years agogithub-actions: bump actions/checkout from 3.0.1 to 3.0.2 7293/head
dependabot[bot] [Thu, 21 Apr 2022 19:38:07 +0000 (19:38 +0000)] 
github-actions: bump actions/checkout from 3.0.1 to 3.0.2

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/dcd71f646680f2efd8db4afa5ad64fdcba30e748...2541b1294d2704b0964813337f33b291d3f8596b)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
3 years agogithub-actions: bump codecov/codecov-action from 3.0.0 to 3.1.0
dependabot[bot] [Thu, 21 Apr 2022 19:38:03 +0000 (19:38 +0000)] 
github-actions: bump codecov/codecov-action from 3.0.0 to 3.1.0

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/e3c560433a6cc60aec8812599b7844a7b4fa0d71...81cd2dc8148241f03f5839d295e000b8f761e378)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
3 years agostream/unittests: fix failures after last_ack fix
Victor Julien [Fri, 22 Apr 2022 17:33:13 +0000 (19:33 +0200)] 
stream/unittests: fix failures after last_ack fix

Work around many tests not setting up stream completely or correctly.

3 years agostream: improve last_ack validation check
Victor Julien [Fri, 22 Apr 2022 16:27:15 +0000 (18:27 +0200)] 
stream: improve last_ack validation check

If a packet after the initialization would come with ACK flag set
but a ACK value of 0, the last_ack tracking could get confused. Fix
this by not checking for 0 but instead checking if the ACK flag
has been seen.

Bug: #4549.

3 years agolibhtp: require 0.5.40 7292/head
Victor Julien [Fri, 22 Apr 2022 12:30:26 +0000 (14:30 +0200)] 
libhtp: require 0.5.40

Ticket: #4970.

3 years agocbindgen: handle version to stderr change 7291/head
Victor Julien [Fri, 22 Apr 2022 06:10:58 +0000 (08:10 +0200)] 
cbindgen: handle version to stderr change

3 years agosmb: protocol detection on pattern without midstream 7282/head
Philippe Antoine [Mon, 22 Nov 2021 10:30:08 +0000 (11:30 +0100)] 
smb: protocol detection on pattern without midstream

To recognize a protocol, Suricata first looks for
patterns, which can be confirmed by a probing parser.
If this does not work, Suricata can try to run
some probing parsers on some ports.

This is the case for SMB.

This commit makes handling the confirming and the probing
paser differently even if they share much code.

The confirmation parser knows that a pattern has been found.
So, it must not do the midstream case of looking for this
pattern in the whole buffer, but only check it at the beginning.
But it must reverse direction if needed.

3 years agosmb: fix event types for limit exceeded rules
Victor Julien [Wed, 20 Apr 2022 19:39:01 +0000 (21:39 +0200)] 
smb: fix event types for limit exceeded rules

3 years agosmtp: don't pass partial boundary on to mime parser
Victor Julien [Fri, 15 Apr 2022 13:51:10 +0000 (15:51 +0200)] 
smtp: don't pass partial boundary on to mime parser

If the start of a line looks like it might be a mime boundary we
yield to the get line logic if we don't have enough data to be
conclusive.

3 years agomime: allow partial lines as input
Victor Julien [Fri, 15 Apr 2022 13:49:09 +0000 (15:49 +0200)] 
mime: allow partial lines as input

If we get a zero length delim we assume its a partial line and we
won't append CRLF just yet.

3 years agosmtp: pre process DATA and BDAT commands
Shivani Bhardwaj [Thu, 14 Apr 2022 15:59:32 +0000 (21:29 +0530)] 
smtp: pre process DATA and BDAT commands

The input data received in DATA and BDAT command modes can be huge and
could have important data, like a legit huge email. Therefore, exempt
these from the line buffering limits which were introduced to regulate
the size of lines that we buffer at any point in time.

As a part of this patch, anything that comes under DATA or BDAT is
processed early without buffering as and when it arrives. The ways of
processing remain the same as before.

3 years agosmtp: fix indefinite buffering if no LF in line
Shivani Bhardwaj [Mon, 14 Feb 2022 11:23:52 +0000 (16:53 +0530)] 
smtp: fix indefinite buffering if no LF in line

Issue
-----
So far, with the SMTP parser, we would buffer data up until an LF char
was found indicating the end of one line. This would happen in case of
fragmented data where a line might come broken into multiple chunks.
This was problematic if there was a really long line without any LF
character. It would mean that we'd keep buffering data up until we
encounter one such LF char which may be many many bytes of data later.

Fix
---
Fix this issue by setting an upper limit of 4KB on the buffering of
lines. If the limit is reached then we save the data into current line
and process it as if it were a regular request/response up until 4KB
only. Any data after 4KB is discarded up until there is a new LF char in
the received input.

Cases
-----
1. Fragmentation
The limit is enforced for any cases where a line of >= 4KB comes as diff
fragments that are each/some < 4KB.
2. Single too long line
The limit is also enforced for any cases where a single line exceeds the
limit of buffer.

Reported by Victor Julien.
Ticket 5023

3 years agosmtp: add truncated line event
Shivani Bhardwaj [Wed, 20 Apr 2022 07:25:54 +0000 (12:55 +0530)] 
smtp: add truncated line event

3 years agodoc/userguide: document ftp max-line-length
Jason Ish [Thu, 7 Apr 2022 21:58:58 +0000 (15:58 -0600)] 
doc/userguide: document ftp max-line-length

3 years agoftp: truncate command data that is too long
Jason Ish [Wed, 6 Apr 2022 21:38:35 +0000 (15:38 -0600)] 
ftp: truncate command data that is too long

FTP control commands will be buffered forever until a new line is seen,
this can lead to memory exhaustion in Suricata.

To fix, set an upper bound, 4096 bytes on the size of the command that
is saved in the transaction. The input continues to be parsed to find
the end of the command so the parser can continue to move onto the next
command.

The result is that the command data in the transaction is truncated,
which also shows up in the ftp transaction logs.

This value is configurable with the max-line-length field in the ftp
app-layer.protocols section.

As FTP doesn't have events at this time, add a new fields to eve-log
that specificy if the request, or the response has been truncated.

Ticket #5024

3 years agoprotocol: forbids concurrent protocol upgrades
Philippe Antoine [Fri, 8 Apr 2022 12:40:02 +0000 (14:40 +0200)] 
protocol: forbids concurrent protocol upgrades

Ticket: 5243

When switching from SMTP to TLS, and getting HTTP1 instead of
expected TLS, and HTTP1 requesting upgrade to HTTP2, we do not
overwrite the alproto_orig value so as not to have type confusion
in AppLayerParserStateProtoCleanup

3 years agodns: better error handling when parsing names
Jason Ish [Tue, 1 Feb 2022 21:44:43 +0000 (15:44 -0600)] 
dns: better error handling when parsing names

The DNS name parser will error out with an error even if the
error is incomplete. Instead of manually generating errors,
use '?' to let the nom error ripple up the error handling chain.

The reason this wasn't done in the first place is this code
predates the ? operator, or we were not aware of it at the time.

This prevents the case where probing fails when there is enough data to
parse the header, but not enough to complete name parser. In such a case
a parse error is returned (instead of incomplete) resulting in the
payload not being detected as DNS.

Ticket #5034

3 years agodns: don't parse a full request during probe if not enough data
Jason Ish [Mon, 28 Feb 2022 22:48:34 +0000 (16:48 -0600)] 
dns: don't parse a full request during probe if not enough data

If there is more data than a header, but not enough for a complete DNS
message, the hostname parser could return an error causing the probe to
fail on valid DNS messages.

So only parse the complete message if we have enough input data. This is
reliable for TCP as DNS messages are prefixed, but for UDP its just
going to be the size of the input buffer presented to the parser, so
incomplete could still happen.

Ticket #5034

3 years agogithub-actions: bump actions/upload-artifact from 1 to 3 7273/head
dependabot[bot] [Tue, 19 Apr 2022 19:37:14 +0000 (19:37 +0000)] 
github-actions: bump actions/upload-artifact from 1 to 3

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 1 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v1...6673cd052c4cd6fcf4b4e6e60ea986c889389535)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
3 years agodetect/frame: fix frame detect registration 7269/head
Victor Julien [Tue, 19 Apr 2022 16:54:08 +0000 (18:54 +0200)] 
detect/frame: fix frame detect registration

Rewrite keyword parser.

Duplicate short names could lead to buffer confusion and memory leaks.

Bug: #5238.

3 years agosmb/rules: add rules for new events 7262/head
Victor Julien [Tue, 19 Apr 2022 10:35:52 +0000 (12:35 +0200)] 
smb/rules: add rules for new events

3 years agodoc/smb: add resource limits section
Victor Julien [Tue, 19 Apr 2022 10:17:31 +0000 (12:17 +0200)] 
doc/smb: add resource limits section

3 years agosmb2: validate negotiate read/write max sizes
Victor Julien [Tue, 19 Apr 2022 06:13:48 +0000 (08:13 +0200)] 
smb2: validate negotiate read/write max sizes

Raise event if they exceed the configured limit.

3 years agosmb2: allow limiting in-flight data size/cnt
Victor Julien [Sat, 16 Apr 2022 04:58:20 +0000 (06:58 +0200)] 
smb2: allow limiting in-flight data size/cnt

Allow limiting in-flight out or order data chunks per size or count.

Implemented for read and writes separately:

app-layer.protocols.smb.max-write-queue-size
app-layer.protocols.smb.max-write-queue-cnt
app-layer.protocols.smb.max-read-queue-size
app-layer.protocols.smb.max-read-queue-cnt

3 years agofiletracker: track total queued data (in_flight)
Victor Julien [Sat, 16 Apr 2022 04:57:56 +0000 (06:57 +0200)] 
filetracker: track total queued data (in_flight)

As well as expose number of chunks.

3 years agosmb: log max read/write sizes
Victor Julien [Mon, 18 Apr 2022 20:14:36 +0000 (22:14 +0200)] 
smb: log max read/write sizes

3 years agosmb2: add options for max read/write size
Victor Julien [Mon, 18 Apr 2022 19:47:39 +0000 (21:47 +0200)] 
smb2: add options for max read/write size

Add options for the max read/write size accepted by the parser.

3 years agosmb2: track max read/write size and enforce its values
Victor Julien [Mon, 18 Apr 2022 15:49:58 +0000 (17:49 +0200)] 
smb2: track max read/write size and enforce its values

3 years agosmb: minor function cleanup
Victor Julien [Fri, 15 Apr 2022 18:52:48 +0000 (20:52 +0200)] 
smb: minor function cleanup

Remove used argument from `filetracker_newchunk()`. We're not
using fill_bytes with smb.

3 years agofiletracker: make FileChunk private
Victor Julien [Fri, 15 Apr 2022 18:00:55 +0000 (20:00 +0200)] 
filetracker: make FileChunk private

3 years agogithub-actions: bump codecov/codecov-action from 2.1.0 to 3 7261/head
dependabot[bot] [Tue, 19 Apr 2022 06:14:45 +0000 (06:14 +0000)] 
github-actions: bump codecov/codecov-action from 2.1.0 to 3

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 2.1.0 to 3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/f32b3a3741e1053eb607407145bc9619351dc93b...e3c560433a6cc60aec8812599b7844a7b4fa0d71)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
3 years agogithub-actions: bump github/codeql-action from 1.0.26 to 2.1.8
dependabot[bot] [Tue, 19 Apr 2022 06:14:42 +0000 (06:14 +0000)] 
github-actions: bump github/codeql-action from 1.0.26 to 2.1.8

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1.0.26 to 2.1.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5f532563584d71fdef14ee64d17bafb34f751ce5...1ed1437484560351c5be56cf73a48a279d116b78)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
3 years agogithub-actions: bump actions/cache from 2.1.7 to 3.0.2
dependabot[bot] [Tue, 19 Apr 2022 06:14:37 +0000 (06:14 +0000)] 
github-actions: bump actions/cache from 2.1.7 to 3.0.2

Bumps [actions/cache](https://github.com/actions/cache) from 2.1.7 to 3.0.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/937d24475381cd9c75ae6db12cb4e79714b926ed...48af2dc4a9e8278b89d7fa154b955c30c6aaab09)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
3 years agogithub-actions: bump actions/download-artifact from 2 to 3
dependabot[bot] [Tue, 19 Apr 2022 06:14:33 +0000 (06:14 +0000)] 
github-actions: bump actions/download-artifact from 2 to 3

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v2...fb598a63ae348fa914e94cd0ff38f362e927b741)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
3 years agogithub-actions: bump ossf/scorecard-action from 1.0.1 to 1.0.4 7256/head
dependabot[bot] [Tue, 19 Apr 2022 06:14:30 +0000 (06:14 +0000)] 
github-actions: bump ossf/scorecard-action from 1.0.1 to 1.0.4

Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 1.0.1 to 1.0.4.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Commits](https://github.com/ossf/scorecard-action/compare/e3e75cf2ffbf9364bbff86cdbdf52b23176fe492...c1aec4ac820532bab364f02a81873c555a0ba3a1)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
3 years agodetect/frames: reduce severity of validation check 7255/head
Victor Julien [Tue, 19 Apr 2022 05:33:39 +0000 (07:33 +0200)] 
detect/frames: reduce severity of validation check

3 years agodependabot: monitor github actions
Jason Ish [Thu, 14 Apr 2022 18:35:57 +0000 (12:35 -0600)] 
dependabot: monitor github actions

3 years agogithub-ci: set safe directory before reset
Jason Ish [Thu, 14 Apr 2022 19:16:55 +0000 (13:16 -0600)] 
github-ci: set safe directory before reset

While the latest checkout action does set the "safe.directory"
parameter, it doesn't appear to stick for the following "git fetch", so
call this command again.

3 years agogithub-ci: pin checkout action to latest release
Jason Ish [Thu, 14 Apr 2022 18:34:47 +0000 (12:34 -0600)] 
github-ci: pin checkout action to latest release

3 years agomqtt: fix consumed bytes computation for truncated msg 7253/head
Philippe Antoine [Mon, 11 Apr 2022 19:29:33 +0000 (21:29 +0200)] 
mqtt: fix consumed bytes computation for truncated msg

Ticket: 5268

3 years agodetect/frame: get data using stream callback 7244/head
Victor Julien [Wed, 13 Apr 2022 05:47:42 +0000 (07:47 +0200)] 
detect/frame: get data using stream callback

Inspect only data that has already been consumed by the
app-layer parser. This allows for simpler progress tracking.

3 years agoframe: introduce entry for getting stream data for frame
Victor Julien [Wed, 13 Apr 2022 05:42:56 +0000 (07:42 +0200)] 
frame: introduce entry for getting stream data for frame

3 years agostream: make raw data handling more generally usable
Victor Julien [Wed, 13 Apr 2022 05:42:09 +0000 (07:42 +0200)] 
stream: make raw data handling more generally usable

Move raw detection logic out of main StreamReassembleRawDo() so that
it can be reused for other parts of the engine.

The caller now has to specify a right edge of the data.

3 years agostream: add offset to raw stream callback
Victor Julien [Tue, 12 Apr 2022 13:22:23 +0000 (15:22 +0200)] 
stream: add offset to raw stream callback

This gives the called function to understand where it is in the
stream.

3 years agoapp-layer: disable stream app tracking on no parser
Victor Julien [Wed, 13 Apr 2022 12:00:37 +0000 (14:00 +0200)] 
app-layer: disable stream app tracking on no parser

If protocol has no parser enabled or implemented, disable the app
progress tracking in the stream engine to reduce the workload in
the stream engine.

3 years agosource: pcap timestamp microsecond consistency
Philippe Antoine [Fri, 1 Apr 2022 15:55:33 +0000 (17:55 +0200)] 
source: pcap timestamp microsecond consistency

That is it should be less than 1 000 000.
Have the same for fuzz targets where the bug came from.

https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=44177

3 years agodcerpc: store consumed_bytes as i32
Philippe Antoine [Sat, 2 Apr 2022 19:16:53 +0000 (21:16 +0200)] 
dcerpc: store consumed_bytes as i32

As it can grow bigger than u16

3 years agoike: fix integer underflow in parse_proposal
Philippe Antoine [Fri, 8 Apr 2022 06:49:18 +0000 (08:49 +0200)] 
ike: fix integer underflow in parse_proposal

By not restricting a usize to i16

3 years agodetect: config checks alstate before getting tx 7242/head
Philippe Antoine [Fri, 8 Apr 2022 13:15:23 +0000 (15:15 +0200)] 
detect: config checks alstate before getting tx

Ticket: 4972

As is done in detect-lua-extensions.
We can have a flow with alproto unknown, no state, and therefore
cannot run AppLayerParserGetTx which could try to run a NULL
function

3 years agodetect: faster linked list copy
Philippe Antoine [Mon, 5 Jul 2021 15:05:10 +0000 (17:05 +0200)] 
detect: faster linked list copy

In DetectAppLayerInspectEngineCopyListToDetectCtx
Avoid quadratic complexity by remembering last element
of the linked list we are inserting into

3 years agoflow: fix integer warnings
Philippe Antoine [Thu, 14 Apr 2022 12:44:20 +0000 (14:44 +0200)] 
flow: fix integer warnings

Ticket: 4516

3 years agohost/ippair: fix integer warnings
Philippe Antoine [Thu, 14 Apr 2022 12:41:45 +0000 (14:41 +0200)] 
host/ippair: fix integer warnings

Ticket: 4516

3 years agoutil: using size_t len for byte utils
Philippe Antoine [Thu, 14 Apr 2022 12:36:57 +0000 (14:36 +0200)] 
util: using size_t len for byte utils

Ticket: 4516

Like ByteExtractStringUint64, because most of their inputs come
from strlen which returns a size_t

3 years agoapp-layer: fix integer warnings
Philippe Antoine [Tue, 18 Jan 2022 10:19:21 +0000 (11:19 +0100)] 
app-layer: fix integer warnings

Ticket: 4516

3 years agodebug: support %m output format again
Victor Julien [Fri, 25 Feb 2022 14:40:41 +0000 (15:40 +0100)] 
debug: support %m output format again

Use thread local storage to avoid the previous dead lock issues.

3 years agothreading: simplify thread name logic
Victor Julien [Fri, 4 Mar 2022 13:31:24 +0000 (14:31 +0100)] 
threading: simplify thread name logic

3 years agorust: update regex & memchr dependencies 7230/head
Victor Julien [Mon, 11 Apr 2022 15:25:47 +0000 (17:25 +0200)] 
rust: update regex & memchr dependencies

Bug: #5260.

3 years agosmb/ntlmssp: add stricter len/offset validation
Victor Julien [Mon, 11 Apr 2022 10:33:43 +0000 (12:33 +0200)] 
smb/ntlmssp: add stricter len/offset validation

3 years agosmb: prevents integer underflow
Philippe Antoine [Fri, 8 Apr 2022 09:23:09 +0000 (11:23 +0200)] 
smb: prevents integer underflow

Ticket: 5246

If msg_id is 0, we cannot find the previous request

3 years agosmb: ntlmssp domain_blob_offset underflow check
Philippe Antoine [Mon, 4 Apr 2022 20:51:01 +0000 (22:51 +0200)] 
smb: ntlmssp domain_blob_offset underflow check

Ticket: 5246

3 years agosmb: check on param parsing
Philippe Antoine [Mon, 4 Apr 2022 20:45:56 +0000 (22:45 +0200)] 
smb: check on param parsing

Ticket: 5246

so as not to overflow u16

3 years agoframes: remove dead condition in eof check 7226/head
Victor Julien [Sun, 10 Apr 2022 18:22:00 +0000 (20:22 +0200)] 
frames: remove dead condition in eof check

3 years agoapp-layer: don't switch dir if proto already known
Victor Julien [Sun, 10 Apr 2022 18:21:18 +0000 (20:21 +0200)] 
app-layer: don't switch dir if proto already known

3 years agofuzz/sigpcap_aware: set pkt_src to wire
Victor Julien [Sun, 10 Apr 2022 13:46:38 +0000 (15:46 +0200)] 
fuzz/sigpcap_aware: set pkt_src to wire

Avoids an assert if DEBUG is compiled in:

fuzz_sigpcap_aware: source-pcap-file.c:420: TmEcode DecodePcapFile(ThreadVars *, Packet *, void *): Assertion `!(p->pkt_src != PKT_SRC_WIRE && p->pkt_src != PKT_SRC_FFR)' failed.

3 years agodetect/frame: improve assert accuracy
Victor Julien [Sun, 10 Apr 2022 13:45:36 +0000 (15:45 +0200)] 
detect/frame: improve assert accuracy

Handle frames of unknown size correctly.

Bug: #5226.

3 years agoeve: allow /dev/null in threaded mode 7225/head
Victor Julien [Sat, 9 Apr 2022 15:24:33 +0000 (17:24 +0200)] 
eve: allow /dev/null in threaded mode

Avoids creation of actual files called /dev/null.N which take
up space in /dev/ which lives in memory.

3 years agoflow: cleanup locking debug leftovers
Victor Julien [Sat, 9 Apr 2022 08:56:04 +0000 (10:56 +0200)] 
flow: cleanup locking debug leftovers

3 years agoflow: fix and simplify locking
Victor Julien [Fri, 8 Apr 2022 20:06:09 +0000 (22:06 +0200)] 
flow: fix and simplify locking

Since:

9551cd053579 ("threading: don't pass locked flow between threads")

`MoveToWorkQueue()` unconditionally unlocks the flow. This allows simpler
locking handling, including of tcp reuse flows.

The simpler logic also fixes a scenario where TCP reuse flows got "unlocked"
twice, once in `FlowGetFlowFromHash()` and once in `MoveToWorkQueue()`.

Bug: #5248.
Coverity: 1494354.

3 years agomqtt: remove redundant "where" keyword 7223/head
Sascha Steinbiss [Fri, 11 Mar 2022 18:05:03 +0000 (19:05 +0100)] 
mqtt: remove redundant "where" keyword

3 years agomqtt: make some functions non-public
Sascha Steinbiss [Tue, 8 Mar 2022 22:23:47 +0000 (23:23 +0100)] 
mqtt: make some functions non-public

3 years agomqtt: rustfmt
Sascha Steinbiss [Tue, 8 Mar 2022 22:19:22 +0000 (23:19 +0100)] 
mqtt: rustfmt

3 years agomqtt: raise event on parse error
Sascha Steinbiss [Tue, 8 Mar 2022 22:18:36 +0000 (23:18 +0100)] 
mqtt: raise event on parse error

3 years agomqtt: ensure we do not request extra data after buffering
Sascha Steinbiss [Tue, 8 Mar 2022 22:15:05 +0000 (23:15 +0100)] 
mqtt: ensure we do not request extra data after buffering

This addresses Redmine bug #5018 by ensuring that the parser
never requests additional data via the Incomplete error, but to
raise an actual parse error, since it is supposed to have all
the data as specified by the message length in the header already.

3 years agooutput: fix integer warnings 7219/head
Philippe Antoine [Tue, 18 Jan 2022 09:56:48 +0000 (10:56 +0100)] 
output: fix integer warnings

Ticket: 4516

3 years agossh: install app-layer events rules 7210/head
Philippe Antoine [Fri, 25 Mar 2022 14:03:12 +0000 (15:03 +0100)] 
ssh: install app-layer events rules

3 years agodetect: not an iponly signature if it needs app-layer
Philippe Antoine [Wed, 30 Mar 2022 13:24:32 +0000 (15:24 +0200)] 
detect: not an iponly signature if it needs app-layer

Ticket: 4972

This may happen with `config` keyword which is postmatch,
but may require a transaction

3 years agodoc/userguide: sphinx syntax correction
William Harding [Tue, 29 Mar 2022 18:53:46 +0000 (14:53 -0400)] 
doc/userguide: sphinx syntax correction

3 years agounittests: alloc Packet with PacketGetFromAlloc
Juliana Fajardini [Fri, 28 Jan 2022 21:20:31 +0000 (21:20 +0000)] 
unittests: alloc Packet with PacketGetFromAlloc

Some unittests used SCMalloc for allocating new Packet the unittests.
While this is valid, it leads to segmentation faults when we move to
dynamic allocation of the maximum alerts allowed to be triggered by a
single packet.

This massive patch uses PacketGetFromAlloc, which initializes a Packet
in such a way that any dynamic allocated structures within will also be
initialized.

Related to
Task #4207

3 years agodetect/dataset: fix space condition in rule lang
Shivani Bhardwaj [Fri, 28 Jan 2022 20:17:17 +0000 (01:47 +0530)] 
detect/dataset: fix space condition in rule lang

If there is a space following a keyword that does not expect a value,
the rule fails to load due to improper value evaluation.
e.g. Space after "set" command
alert http any any -> any any (http.user_agent; dataset:set  ,ua-seen,type string,save datasets.csv; sid:1;)

gives error
[ERRCODE: SC_ERR_UNKNOWN_VALUE(129)] - dataset action "" is not supported.

Fix this by handling values correctly for such cases.

3 years agodetect/dataset: cleanup dead code
Shivani Bhardwaj [Fri, 28 Jan 2022 13:43:04 +0000 (19:13 +0530)] 
detect/dataset: cleanup dead code

3 years agodetect/urilen: don't pass null pointer to pcre2 free 7208/head
Victor Julien [Tue, 5 Apr 2022 11:50:30 +0000 (13:50 +0200)] 
detect/urilen: don't pass null pointer to pcre2 free

Bug #5228.

3 years agodetect/mpm: initialization micro optimization 7204/head
Victor Julien [Mon, 4 Apr 2022 11:30:19 +0000 (13:30 +0200)] 
detect/mpm: initialization micro optimization

3 years agodetect: pattern id assignment through hash table
Victor Julien [Sat, 2 Apr 2022 20:25:17 +0000 (22:25 +0200)] 
detect: pattern id assignment through hash table

Only consider active part of the pattern for mpm (so consider chop).

Move data structure to hash list table over the custom array logic.

3 years agodetect: keyword list to hash to improve perf
Victor Julien [Fri, 1 Apr 2022 13:00:05 +0000 (15:00 +0200)] 
detect: keyword list to hash to improve perf

Since the switch to pcre2 this was much more heavily used, which
would lead to measurable time spent in list handling.

3 years agodetect: optimize mpm-engine setup
Victor Julien [Fri, 1 Apr 2022 10:22:51 +0000 (12:22 +0200)] 
detect: optimize mpm-engine setup

Instead of a loop over the rules in a group *per engine* do a single
loop in which all the engines are prepared in parallel.

3 years agodetect: initialization optimization
Victor Julien [Thu, 31 Mar 2022 16:00:57 +0000 (18:00 +0200)] 
detect: initialization optimization

A lot of time was spent in `SigMatchListSMBelongsTo` for the `mpm_sm`.

Optimize this by keeping the value at hand during Signature parsing and
detection engine setup.

3 years agohash: constify data input
Victor Julien [Sat, 2 Apr 2022 08:51:42 +0000 (10:51 +0200)] 
hash: constify data input

3 years agodetect/analyzer: support frames in pattern dump
Victor Julien [Sat, 2 Apr 2022 20:02:41 +0000 (22:02 +0200)] 
detect/analyzer: support frames in pattern dump

3 years agodetect/filemagic: don't pass unused pointer
Victor Julien [Sat, 2 Apr 2022 13:37:16 +0000 (15:37 +0200)] 
detect/filemagic: don't pass unused pointer

3 years agoflow-manager: fix off-by-one in flow_hash row allocation 7187/head
Arne Welzel [Sat, 12 Feb 2022 16:49:07 +0000 (17:49 +0100)] 
flow-manager: fix off-by-one in flow_hash row allocation

The current code doesn't cover all rows when more than one flow manager is
used. It leaves a single row between ftd->max and ftd->min of the next
manager orphaned. As an example:

    hash_size=1000
    flowmgr_number=3
    range=333

    instance  ftd->min  ftd->max
    0         0         333
    1         334       666
    2         667       1000

    Rows not covered: 333, 666

3 years agohttp: fix reassembled range file accounting 7186/head
Victor Julien [Thu, 24 Mar 2022 15:44:10 +0000 (16:44 +0100)] 
http: fix reassembled range file accounting

3 years agohttp2: fix file accounting for ranged files
Victor Julien [Fri, 25 Mar 2022 13:38:40 +0000 (14:38 +0100)] 
http2: fix file accounting for ranged files

Increment files_opened for tx that 'gets' reassembled ranged file

3 years agosmb1: apply close to direction
Victor Julien [Fri, 25 Mar 2022 10:17:23 +0000 (11:17 +0100)] 
smb1: apply close to direction

Instead of closing files in both direction when receiving a close request,
close only toserver files for the request and close toclient on receiving
a response.

3 years agosmb: convert 'close' parser to function
Victor Julien [Fri, 25 Mar 2022 09:36:03 +0000 (10:36 +0100)] 
smb: convert 'close' parser to function

3 years agofiles: open/log debug validation bugon
Victor Julien [Thu, 24 Mar 2022 15:53:31 +0000 (16:53 +0100)] 
files: open/log debug validation bugon

Meant to find more cases where there is a mismatch.

3 years agodevguide: update readme
Juliana Fajardini [Tue, 15 Feb 2022 13:06:50 +0000 (13:06 +0000)] 
devguide: update readme

Use it to explain how to go about the sequence diagram images
(generation, updating, what is mscgen etc).

Also remove portion that referred to Sphinx builds, as these don't make
sense now.

3 years agouserguide: dynamically determine copyright date
Juliana Fajardini [Wed, 9 Feb 2022 19:46:24 +0000 (19:46 +0000)] 
userguide: dynamically determine copyright date

This uses the date of doc generation to determine the copyright date
for the trailing date. Based on Jeff Lucovsky solution.

3 years agodevguide: drop use of mscgen script in builds/make
Juliana Fajardini [Mon, 14 Feb 2022 18:29:00 +0000 (18:29 +0000)] 
devguide: drop use of mscgen script in builds/make

Currently, it seems easier to upload the diagram images to git than to
try to make the image generation script work with out of the tree builds
and other corner cases.

This means, however, that one must activelly remember to update msc
diagram files, run the script and re-add new png files, if those ever
need to be updated. To raise awareness to that, a watermark was added
to the diagram images.

Also removed configuration steps that added mscgen as dependency
(locally and for workflow builds and readthedocs).

3 years agodevguide: add watermark to sequence diagrams
Juliana Fajardini [Fri, 18 Feb 2022 16:28:27 +0000 (16:28 +0000)] 
devguide: add watermark to sequence diagrams

Make it more evident that the sequence diagrams in the transactions
page are generated with Mscgen

3 years agodevguide: move into userguide as last chapter
Juliana Fajardini [Thu, 16 Dec 2021 18:40:41 +0000 (18:40 +0000)] 
devguide: move into userguide as last chapter

Moved devguide dir into userguide dir.
Since the devguide is now incorporated as the last chapter of the
userguide, removed build and configuration files from the devguide
dir, as these are no longer needed.

Task #4909