]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
17 months agogithub-actions: bump actions/download-artifact from 4.1.3 to 4.1.4 10552/head
dependabot[bot] [Fri, 1 Mar 2024 19:56:33 +0000 (19:56 +0000)] 
github-actions: bump actions/download-artifact from 4.1.3 to 4.1.4

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/87c55149d96e628cc2ef7e6fc2aab372015aec85...c850b930e6ba138125429b7e5c93fc707a7f8427)

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

Signed-off-by: dependabot[bot] <support@github.com>
17 months agogithub-actions: bump github/codeql-action from 3.24.5 to 3.24.6
dependabot[bot] [Thu, 29 Feb 2024 19:49:17 +0000 (19:49 +0000)] 
github-actions: bump github/codeql-action from 3.24.5 to 3.24.6

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.5 to 3.24.6.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Commits](https://github.com/github/codeql-action/compare/v3.24.5...v3.24.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
17 months agoexamples: minimal example capture plugin for ci
Jason Ish [Wed, 28 Feb 2024 21:21:57 +0000 (15:21 -0600)] 
examples: minimal example capture plugin for ci

Create a mininal capture plugin that injects one packet. While it can
also be a template, we should be able to run this in CI to test the
loading and registration of the capture plugin mechanisms.

17 months agothreads: tm-modules.h depends on Packet so include decode.h
Jason Ish [Wed, 28 Feb 2024 22:07:17 +0000 (16:07 -0600)] 
threads: tm-modules.h depends on Packet so include decode.h

17 months agoplugins: initialize plugins earlier
Jason Ish [Tue, 27 Feb 2024 22:16:08 +0000 (16:16 -0600)] 
plugins: initialize plugins earlier

Capture plugins need to be registered before LiveDeviceFinalize,
otherwise Suricata errors before the plugin gets a chance to load.

Bug: #6811

17 months agothread modules: separate initialization from registration
Jason Ish [Tue, 27 Feb 2024 22:07:33 +0000 (16:07 -0600)] 
thread modules: separate initialization from registration

Move the zero'ing to the thread module array InitGlobal in an effort
to fix capture modules.

At some point device validation moved to a point in startup before
plugins are loaded meaning that capture plugins could not be
used. Moving plugin registration early enough caused some of their
registration to be wiped out as clearing the array was done after.

Bug: #6811

17 months agoschema: add flow.wrong_thread
Jason Ish [Thu, 29 Feb 2024 14:19:58 +0000 (08:19 -0600)] 
schema: add flow.wrong_thread

17 months agodependabot: reduce to monthly update 10536/head
Victor Julien [Wed, 28 Feb 2024 17:33:37 +0000 (18:33 +0100)] 
dependabot: reduce to monthly update

17 months agodns: add dns.rrtype keyword
Hadiqa Alamdar Bukhari [Wed, 31 Jan 2024 12:56:33 +0000 (17:56 +0500)] 
dns: add dns.rrtype keyword

It matches the rrtype field in DNS
It's an unsigned integer match
valid ranges = [0-65535]
Does not support prefilter
Supports flow in both directions
Feature #6666

17 months agopfring: fix leak of configuration data and in single mode 10525/head
Jason Ish [Tue, 27 Feb 2024 22:55:59 +0000 (16:55 -0600)] 
pfring: fix leak of configuration data and in single mode

Fix leak of configuration data on exit. Also, in single mode set
thread count to one instead of the CPU count.

Bug: #4734

17 months agopfring: fix leak of packet on exit
Jason Ish [Tue, 27 Feb 2024 23:19:54 +0000 (17:19 -0600)] 
pfring: fix leak of packet on exit

Bug: #4734

17 months agooutput/filestore: delay snprintf until needed
Philippe Antoine [Tue, 27 Feb 2024 20:45:03 +0000 (21:45 +0100)] 
output/filestore: delay snprintf until needed

Perf optimization so that we do not call snprintf in the
common code path.

Ticket: 6796

17 months agooutput/filestore: remove duplicate snprintf
Philippe Antoine [Mon, 26 Feb 2024 16:28:25 +0000 (17:28 +0100)] 
output/filestore: remove duplicate snprintf

Ticket: 6796

17 months agooutput: log tx only when there is a fresh app update
Philippe Antoine [Thu, 22 Feb 2024 08:42:41 +0000 (09:42 +0100)] 
output: log tx only when there is a fresh app update

Ticket: 6796

Similar to commit for detection
9240ae250cc369306803740279df2ab3eca6b54a

We only have more logging to do if the app update was fresh,
ie if p->app_update_direction != 0

If we have data acknowledged in one direction,
and then many packets in the other direction,
the APP_UPDATED flow flags did not get reset because we did not
run detection yet in this direction,
but there is nothing more to do after the first packet in the
other direction.

17 months agogithub-actions: bump codecov/codecov-action from 4.0.1 to 4.1.0
dependabot[bot] [Tue, 27 Feb 2024 19:59:34 +0000 (19:59 +0000)] 
github-actions: bump codecov/codecov-action from 4.0.1 to 4.1.0

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/e0b68c6749509c5f83f984dd99a76a1c1a231044...54bcd8715eee62d40e33596ef5e8f0f48dbbccab)

---
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>
17 months agogithub-actions: bump actions/download-artifact from 4.1.2 to 4.1.3
dependabot[bot] [Tue, 27 Feb 2024 19:59:31 +0000 (19:59 +0000)] 
github-actions: bump actions/download-artifact from 4.1.2 to 4.1.3

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/eaceaf801fd36c7dee90939fad912460b18a1ffe...87c55149d96e628cc2ef7e6fc2aab372015aec85)

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

Signed-off-by: dependabot[bot] <support@github.com>
17 months agodoc: add upgrade section for 8 10522/head
Giuseppe Longo [Fri, 24 Nov 2023 08:54:53 +0000 (09:54 +0100)] 
doc: add upgrade section for 8

17 months agorust/sip: register pattern matching
Giuseppe Longo [Fri, 24 Nov 2023 22:18:49 +0000 (23:18 +0100)] 
rust/sip: register pattern matching

This permits to detect the SIP protocol using pattern matching instead of
probing parser.

Since it is no longer used, the respective probing functions have been removed.

17 months agosuricata.yaml: define SIP_PORTS
Giuseppe Longo [Tue, 1 Aug 2023 19:24:28 +0000 (21:24 +0200)] 
suricata.yaml: define SIP_PORTS

17 months agorust/sip: add direction to transaction
Giuseppe Longo [Tue, 1 Aug 2023 19:20:58 +0000 (21:20 +0200)] 
rust/sip: add direction to transaction

This patch permits to set a direction when a new transaction is created in order
to avoid 'signature shadowing' as reported by Eric Leblond in commit
5aaf50760f546e9047da508f725f43a7ad9b8a35

17 months agorust/sip: register parser for tcp
Giuseppe Longo [Tue, 1 Aug 2023 19:08:50 +0000 (21:08 +0200)] 
rust/sip: register parser for tcp

This patch lets the parser to work over tcp protocol, taking care of handling
data before calling the request/response parsers.

Ticket #3351.

17 months agosip/parser: enforce valid chars for sip version
Giuseppe Longo [Sat, 25 Nov 2023 08:39:54 +0000 (09:39 +0100)] 
sip/parser: enforce valid chars for sip version

The `is_version_char` function incorrectly allowed characters that are not
part of the valid SIP version "SIP/2.0".

For instance, 'HTTP/1.1' was mistakenly accepted as a valid SIP version,
although it's not.

This commit fixes the issue by updating the condition to strictly
check for the correct version string.

17 months agosip/parser: accept valid chars
Giuseppe Longo [Tue, 1 Aug 2023 18:50:17 +0000 (20:50 +0200)] 
sip/parser: accept valid chars

Accepts valid characters as defined in RFC3261.

17 months agorust/sip: rustfmt sip module
Giuseppe Longo [Mon, 14 Aug 2023 18:10:36 +0000 (20:10 +0200)] 
rust/sip: rustfmt sip module

17 months agodetect: do not run tx detection on non established packets
Philippe Antoine [Fri, 2 Feb 2024 10:11:10 +0000 (11:11 +0100)] 
detect: do not run tx detection on non established packets

Follows commit 2fb5059

Ticket: 6775

17 months agodoc: there is no right shift for integer bitmasks 10501/head
Philippe Antoine [Tue, 30 Jan 2024 14:45:17 +0000 (15:45 +0100)] 
doc: there is no right shift for integer bitmasks

Ticket: 6628

17 months agogithub-actions: bump github/codeql-action from 3.24.3 to 3.24.5 10496/head
dependabot[bot] [Fri, 23 Feb 2024 19:36:10 +0000 (19:36 +0000)] 
github-actions: bump github/codeql-action from 3.24.3 to 3.24.5

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.3 to 3.24.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Commits](https://github.com/github/codeql-action/compare/v3.24.3...v3.24.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
17 months agobuild: don't build the lib example by default
Jason Ish [Thu, 22 Feb 2024 17:50:11 +0000 (11:50 -0600)] 
build: don't build the lib example by default

Don't build the library example by default as it is not needed by most
users.

17 months agoexamples/lib: work with bundled libhtp
Jason Ish [Thu, 22 Feb 2024 17:24:52 +0000 (11:24 -0600)] 
examples/lib: work with bundled libhtp

The simple example Makefile.am was unconditionally including
$(HTP_LDADD) which might be empty resulting in "../.." ending up in the
Makefile causing the build to fail.

Instead, also make HTP_LDADD a conditional, so we can only include it
when actually set, and its only set when libhtp is bundled.

The reason this Makefile needs to include the path components "../.."
is because the HTP_LDADD value is relative to the top level "src/"
directory.

17 months agoaf-xdp: suppress cppcheck false positive 10486/head
Victor Julien [Tue, 20 Feb 2024 15:07:37 +0000 (16:07 +0100)] 
af-xdp: suppress cppcheck false positive

As the cppcheck test suite does as well:
https://github.com/danmar/cppcheck/blob/main/test/cfg/posix.c#L311

Requires cppcheck --inline-suppr option to be used.

17 months agodetect: fix memory leak in error handling
Victor Julien [Tue, 20 Feb 2024 15:06:57 +0000 (16:06 +0100)] 
detect: fix memory leak in error handling

Pointed out by cppcheck:

src/detect-parse.c:1544:9: error: Memory leak: sig.init_data [memleak]
        SCFree(sig);
        ^

Bug: #6527.

17 months agodetect/address: avoid cppcheck false positive
Victor Julien [Tue, 20 Feb 2024 15:06:08 +0000 (16:06 +0100)] 
detect/address: avoid cppcheck false positive

src/detect-engine-address.c:1386:5: error: Memory leak: map.string [memleak]
    return true;
    ^

Seems cppcheck looses track of the pointer after the unnecessary cast to
void.

Bug: #6527.

17 months agodns: add missing dns keywords to schema.json
Hadiqa Alamdar Bukhari [Tue, 13 Feb 2024 12:55:38 +0000 (17:55 +0500)] 
dns: add missing dns keywords to schema.json

Found and added missing dns fields in schema.json after manual code review.
Added description to these newly added dns fields.
Feature #5642

17 months agotcp: do not assign TCP flags to pseudopackets 10475/head
Lukas Sismis [Tue, 6 Feb 2024 10:38:19 +0000 (11:38 +0100)] 
tcp: do not assign TCP flags to pseudopackets

Previously pseudopackets were assigned with ACK flag which falsely turned
"SYN" flows to "SYN/ACK" flows when Suricata ran with raw content-matching
rules. The problem occured during the flow timeout or Suricata shutdown,
essentially, when the flow was being kicked out (with a pseudopacket).

When Suricata ran without raw content-matching rules (the ruleset did not
contain content matching keywords or it only contained keywords that are
app-layer content-matching) then raw stream reassembly tracking is turned off
(SignatureHasStreamContent()).
This in turn disabled a check in StreamNeedsReassembly() and the right edge
was not checked with the raw stream progress. In turn, it did not generate
a pseudopacket that would go through the detection engine. Suricata with
raw content-matching keywords would therefore on a flow with SYN packet only
return STREAM_HAS_UNPROCESSED_SEGMENTS_NEED_ONLY_DETECTION which would generate
the pseudopacket.

In Suricata versions <= 6.0.x, the flow output was correct because
only the commit 1bb6f44ff01363fa29488f1ae83b9368e33c2770 started to
differentiate the right edge calculation between the raw and application
layer streams. The older Suricata versions used only the application layer
right edge equation and therefore did not generate a pseudopacket.

Ticket: #6733

17 months agodpdk: remove redundant port checks and set copy iface socket id correctly
Lukas Sismis [Fri, 16 Feb 2024 20:40:59 +0000 (21:40 +0100)] 
dpdk: remove redundant port checks and set copy iface socket id correctly

The function to retrieve port ID from the port name was used multiple times.
This commit removes the redundant usage of the function.

Additionally, in the DeviceConfigureIPS(), the socket ID was wrongly retrieved
for the original interface and not for the out port interface.

17 months agodpdk: add a user warning on the change of RX/TX descriptors
Lukas Sismis [Sun, 11 Feb 2024 16:25:30 +0000 (17:25 +0100)] 
dpdk: add a user warning on the change of RX/TX descriptors

Ticket: #6739

17 months agodpdk: refactor log messages to have the same error format
Lukas Sismis [Sun, 11 Feb 2024 16:21:14 +0000 (17:21 +0100)] 
dpdk: refactor log messages to have the same error format

17 months agodpdk: split out the configure function into smaller ones
Lukas Sismis [Sun, 11 Feb 2024 16:18:13 +0000 (17:18 +0100)] 
dpdk: split out the configure function into smaller ones

17 months agodpdk: add missing SCEnter macros to functions with SCReturns
Lukas Sismis [Sun, 11 Feb 2024 16:16:23 +0000 (17:16 +0100)] 
dpdk: add missing SCEnter macros to functions with SCReturns

17 months agohugepages: run hugepage check only on DPDK runmode and on Linux
Lukas Sismis [Sat, 10 Feb 2024 19:04:55 +0000 (20:04 +0100)] 
hugepages: run hugepage check only on DPDK runmode and on Linux

Previous implementation allowed FreeBSD to enter into the hugepage
analysis. It then failed with an error message because hugepage/
NUMA node paths that are used in the codebase to retrieve info about
the system are not the same with the structure in Linux.

Additionally, the messages were logged on error level. It has been
demoted to info level because the whole hugepage analysis checkup is
only for informational purposes and does not affect Suricata operation.

The hugepage analysis and the hugepage snapshots are now limited to
only run in the DPDK runmode.

Ticket: #6760
Ticket: #6762

17 months agoerrors: add SC_ENOENT error
Lukas Sismis [Sat, 10 Feb 2024 19:04:24 +0000 (20:04 +0100)] 
errors: add SC_ENOENT error

17 months agodetect/mpm: don't test for impossible condition
Victor Julien [Fri, 5 Jan 2024 07:29:16 +0000 (08:29 +0100)] 
detect/mpm: don't test for impossible condition

Functions can't get called with NULL signature or NULL
Signature::init_data.

17 months agodetect/iponly: code cleanups
Victor Julien [Fri, 5 Jan 2024 07:25:46 +0000 (08:25 +0100)] 
detect/iponly: code cleanups

Constify and flatten branches.

17 months agodetect/iponly: move parsing only fields to init_data
Victor Julien [Fri, 5 Jan 2024 11:56:24 +0000 (12:56 +0100)] 
detect/iponly: move parsing only fields to init_data

IP-only parse results were not used at runtime.

17 months agorunmode/unix-socket: fix cppcheck warnings 10469/head
Victor Julien [Sat, 17 Feb 2024 09:52:59 +0000 (10:52 +0100)] 
runmode/unix-socket: fix cppcheck warnings

src/runmode-unix-socket.c:547:9: warning: %d in format string (no. 1) requires 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint]
        snprintf(tstr, sizeof(tstr), "%d", cfile->tenant_id);
        ^
src/runmode-unix-socket.c:1040:5: warning: %d in format string (no. 1) requires 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint]
    snprintf(prefix, sizeof(prefix), "multi-detect.%d", tenant_id);
    ^
src/runmode-unix-socket.c:1189:5: warning: %d in format string (no. 1) requires 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint]
    snprintf(prefix, sizeof(prefix), "multi-detect.%d", tenant_id);
    ^

17 months agogithub-actions: bump github/codeql-action from 3.24.1 to 3.24.3
dependabot[bot] [Thu, 15 Feb 2024 19:04:35 +0000 (19:04 +0000)] 
github-actions: bump github/codeql-action from 3.24.1 to 3.24.3

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.1 to 3.24.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Commits](https://github.com/github/codeql-action/compare/v3.24.1...v3.24.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
17 months agobuild: remove autoconf.h from dist
Jason Ish [Thu, 15 Feb 2024 15:19:14 +0000 (09:19 -0600)] 
build: remove autoconf.h from dist

We were including "autoconf.h" in our dist releases, however this file
is generated by ./configure. This can be problematic in out of tree
builds as the one included in the dist, not the generated one may be
used.

Also using "autoconf.h" instead of <autoconf.h> so it is searched for
relative to the file including it which is necessary if a library/plugin
does something like "#include "suricata/foo.h".

17 months agoexamples: program linking against library
Jason Ish [Mon, 5 Feb 2024 22:49:45 +0000 (16:49 -0600)] 
examples: program linking against library

Provide an example of an extremely simple application that links
against Suricata. This provides a Makefile integrated with the
Suricata build system for in-tree building, as well as an example
Makefile for building out of tree.

Currently this application just wraps SuricataMain and does nothing
else.

17 months agoexamples/plugin: simplify Makefile
Jason Ish [Wed, 14 Feb 2024 21:23:44 +0000 (15:23 -0600)] 
examples/plugin: simplify Makefile

Simplify the Makefile by avoiding automake and providing our own
Makefile.in that is suitable for in-tree builds of the plugin and can
also serve as an example for standalone plugins.

But the bigger benefit of this is to allow building the example plugin
even with --disable-shared provided to configure, as this is just a
phony limitation imposed by automake/libtool.

17 months agonapatech: Close streams on hard errors
Jeff Lucovsky [Mon, 29 Jan 2024 18:39:40 +0000 (13:39 -0500)] 
napatech: Close streams on hard errors

Issue: 5172

This commit forces the current stream to be closed when a hard error
occurs.

Without this commit, a hard error will force a 2nd connection
the stream that raised the error.

With this commit, the stream with the hard error is closed before
opening another connection to the stream.

Verified with the Python snippet in the redmine issue.

17 months agococci/run-check: log if parallel command is not found 10445/head
Jason Ish [Tue, 13 Feb 2024 19:38:57 +0000 (13:38 -0600)] 
cocci/run-check: log if parallel command is not found

If CONCURRENCY_LEVEL was set, the script would log a concurrency level
even if the parallel command was not available. Not log if parallel is
not available and set concurrency to 1.

17 months agogithub-ci: use all cpus for coccinelle checks
Jason Ish [Tue, 13 Feb 2024 19:21:26 +0000 (13:21 -0600)] 
github-ci: use all cpus for coccinelle checks

Also put "cocci" in the job name and install parallel so the script can
actually run with concurrency.

17 months agoeve/stats: add description for applayer flows
Shivani Bhardwaj [Fri, 9 Feb 2024 10:12:42 +0000 (15:42 +0530)] 
eve/stats: add description for applayer flows

Ticket 6434

17 months agoeve/stats: add description for expectations
Shivani Bhardwaj [Mon, 5 Feb 2024 10:52:18 +0000 (16:22 +0530)] 
eve/stats: add description for expectations

Ticket 6434

17 months agoeve/stats: add description for applayer errors
Shivani Bhardwaj [Mon, 5 Feb 2024 10:51:34 +0000 (16:21 +0530)] 
eve/stats: add description for applayer errors

Ticket 6434

17 months agoeve/stats: add description for common fields
Shivani Bhardwaj [Mon, 5 Feb 2024 10:49:24 +0000 (16:19 +0530)] 
eve/stats: add description for common fields

Ticket 6434

17 months agomulti-tenant: remove futile mutex lock 10436/head
Shivani Bhardwaj [Thu, 15 Feb 2024 04:47:38 +0000 (10:17 +0530)] 
multi-tenant: remove futile mutex lock

No shared resource is being changed when the lock is held, it is
immediately unlocked. So, remove it.

17 months agostats: Add unittest for basic stats serialization 10426/head
Arne Welzel [Thu, 8 Feb 2024 17:23:38 +0000 (18:23 +0100)] 
stats: Add unittest for basic stats serialization

Main purpose is to validate that the 30 of bond0.30 isn't expanded into
a nested object during serialization.

17 months agostats: Do not expand dots of tm_name
Arne Welzel [Mon, 5 Feb 2024 16:45:30 +0000 (17:45 +0100)] 
stats: Do not expand dots of tm_name

When an interface with dots is used, per worker stats are nested by the
dot-separated-components of the interface due to the usage of
OutputStats2Json().

Prevent this by using OutputStats2Json() on a per-thread specific object
and setting this object into the threads object using the
json_object_set_new() which won't do the dot expansion.

This was tested by creating an interface with dots in the name
and checking the stats.

    ip link add name a.b.c type dummy

With Suricata 7.0.2, sniffing on the a.b.c interface results in the
following worker stats format:

    "threads": {
      "W#01-a": {
        "b": {
          "c": {
            "capture": {
              "kernel_packets": 0,

After this fix, the output looks as follows:

    "threads": {
      "W#01-a.b.c": {
        "capture": {
          "kernel_packets": 0,

Ticket: #6732

17 months agodetect-engine-iponly: improve ip list performance
Simon Dugas [Fri, 29 Dec 2023 16:58:50 +0000 (11:58 -0500)] 
detect-engine-iponly: improve ip list performance

The runtime complexity of insertion sort is approx. O(h*n)^2 where
h is the size of the HOME_NET and n is the number of ip only rules
that use the HOME_NET.

Replacing this with qsort significantly improves rule load time when
a large HOME_NET is used in combination with a moderate amount of ip
only rules.

17 months agodetect: respect directionality for filestore
Philippe Antoine [Thu, 25 Jan 2024 13:26:09 +0000 (14:26 +0100)] 
detect: respect directionality for filestore

Ticket: 6617

So that rules with keyword like `filestore:to_server,flow`
only store the files to server and not the ones to client...

Directionality only worked with the default scope, ie the
current file, and not the scope tx or scope flow.
For non-default scope, tx or flow, both directions were stored
whatever the directionality specified.

For these non-default scopes, this commit keeps a default
of both directions, but use only one direction if specified.

Need to split flag FLOWFILE_STORE per direction, so that Suricata
can retain this (optional) directional info from the filestore
keyword.

Fixes: 79499e476979 ("app-layer: move files into transactions")
17 months agoci: right sha for authors check 10419/head
Philippe Antoine [Tue, 13 Feb 2024 20:11:32 +0000 (21:11 +0100)] 
ci: right sha for authors check

17 months agomulti-tenant: fix coverity warning
Victor Julien [Tue, 13 Feb 2024 08:51:15 +0000 (09:51 +0100)] 
multi-tenant: fix coverity warning

Rework locking logic to avoid the following coverity warning.

** CID 1591966:  Concurrent data access violations  (MISSING_LOCK)
/src/detect-engine-loader.c: 475 in DetectLoadersSync()

    474                     SCCtrlMutexLock(loader->tv->ctrl_mutex);
    >>>     CID 1591966:  Concurrent data access violations  (MISSING_LOCK)
    >>>     Accessing "loader->tv" without holding lock "DetectLoaderControl_.m". Elsewhere, "DetectLoaderControl_.tv" is written to with "DetectLoaderControl_.m" held 1 out of 1 times (1 of these accesses strongly imply that it is necessary).
    475                     pthread_cond_broadcast(loader->tv->ctrl_cond);
    476                     SCCtrlMutexUnlock(loader->tv->ctrl_mutex);

The warning itself is harmless.

17 months agomqtt: Improve frame parsing w/mult. PDUs
Jeff Lucovsky [Wed, 3 Jan 2024 14:28:41 +0000 (09:28 -0500)] 
mqtt: Improve frame parsing w/mult. PDUs

This commit improves the mqtt parsing of frames to handle multiple PDUs.

Issue: 6592

17 months agogithub-actions: bump github/codeql-action from 2.24.0 to 3.24.1 10413/head
dependabot[bot] [Tue, 13 Feb 2024 19:27:24 +0000 (19:27 +0000)] 
github-actions: bump github/codeql-action from 2.24.0 to 3.24.1

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.24.0 to 3.24.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Commits](https://github.com/github/codeql-action/compare/v2.24.0...v3.24.1)

---
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>
17 months agodetect/tls.certs: fix direction handling
Victor Julien [Sat, 27 Jan 2024 08:59:55 +0000 (09:59 +0100)] 
detect/tls.certs: fix direction handling

Direction flag was checked against wrong field, leading to undefined behavior.

Bug: #6778.

17 months agogithub-ci: fix authors check with special characters
Jason Ish [Tue, 13 Feb 2024 17:57:02 +0000 (11:57 -0600)] 
github-ci: fix authors check with special characters

Dependabot is always getting flagged as a new author even tho it uses
a consistent author of:

dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

But this doesn't work with plain grep. Fix by telling grep to treat
the value as a fixed string instead of a regular expression.

17 months agodependabot: disable rust checks
Jason Ish [Tue, 13 Feb 2024 16:08:37 +0000 (10:08 -0600)] 
dependabot: disable rust checks

As we don't have a Cargo.toml and a Cargo.lock, dependabot for Rust
hasn't been working correctly. Disable, as we now have our own cargo
audit and update workflows.

17 months agodependabot: ignore actions/{cache,checkout} v3
Jason Ish [Tue, 13 Feb 2024 16:05:02 +0000 (10:05 -0600)] 
dependabot: ignore actions/{cache,checkout} v3

The CentOS 7 build requires older GitHub actions, try to make
dependabot ignore these older versions.

17 months agogithub-ci: apply read-only permissions to more workflows
Jason Ish [Tue, 13 Feb 2024 15:42:55 +0000 (09:42 -0600)] 
github-ci: apply read-only permissions to more workflows

- authors.yml
- codeql.yml
- scan-build.yml

17 months agosecurity: update policy wrt CVE ID's
Victor Julien [Sat, 10 Feb 2024 09:41:05 +0000 (10:41 +0100)] 
security: update policy wrt CVE ID's

To match that we'll now request CVE ID's ourselves as well,
and we can do it for reported issues as well.

See also:
https://forum.suricata.io/t/security-new-cve-policy/4473

17 months agodoc: mention the limited number of RX/TX descriptors on Intel NICs
Lukas Sismis [Sun, 11 Feb 2024 20:14:08 +0000 (21:14 +0100)] 
doc: mention the limited number of RX/TX descriptors on Intel NICs

Ticket: 6748

17 months agodpdk: max cache size should be lower than one of the constraints
Lukas Sismis [Sun, 11 Feb 2024 19:43:37 +0000 (20:43 +0100)] 
dpdk: max cache size should be lower than one of the constraints

Ticket: 6741

17 months agodpdk: sanitize integer overflow in the configuration
Lukas Sismis [Sun, 11 Feb 2024 12:42:20 +0000 (13:42 +0100)] 
dpdk: sanitize integer overflow in the configuration

Ticket: #6737

17 months agohttp: code simplification
Philippe Antoine [Sat, 27 Jan 2024 21:13:37 +0000 (22:13 +0100)] 
http: code simplification

removing function unused parameter tx_id in HTPFileOpen
And using directly tx instead of its id in HTPFileOpenWithRange

17 months agoapp-layer/template: use a max number of txs
Philippe Antoine [Mon, 12 Feb 2024 12:42:14 +0000 (13:42 +0100)] 
app-layer/template: use a max number of txs

Ticket: 6773

17 months agothreads/mutex: Ensure mutex held before signaling
Jeff Lucovsky [Sun, 4 Feb 2024 14:44:44 +0000 (09:44 -0500)] 
threads/mutex: Ensure mutex held before signaling

Ensure that the mutex protecting the condition variable is held before
signaling it. This ensures that the thread(s) awaiting the signal are
notified.

Issue: 6569

17 months agodoc: add pcap file logging variable details
jason taylor [Wed, 31 Jan 2024 14:51:58 +0000 (14:51 +0000)] 
doc: add pcap file logging variable details

Signed-off-by: jason taylor <jtfas90@gmail.com>
17 months agocodeql: add security-extended query suite
Daniel Olatunji [Fri, 26 Jan 2024 08:27:39 +0000 (09:27 +0100)] 
codeql: add security-extended query suite

Add the CodeQL security-extended suite to
the CodeQL workflow configuration.

17 months agogithub-actions: bump github/codeql-action from 2 to 3 10399/head 10403/head
dependabot[bot] [Tue, 13 Feb 2024 11:15:09 +0000 (11:15 +0000)] 
github-actions: bump github/codeql-action from 2 to 3

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

---
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>
17 months agogithub-actions: bump codecov/codecov-action from 3.1.1 to 4.0.1 10396/head
dependabot[bot] [Mon, 12 Feb 2024 14:44:15 +0000 (14:44 +0000)] 
github-actions: bump codecov/codecov-action from 3.1.1 to 4.0.1

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.1 to 4.0.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70...e0b68c6749509c5f83f984dd99a76a1c1a231044)

---
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>
17 months agogithub-ci: cancel previous job for all workflows
Jason Ish [Mon, 12 Feb 2024 21:13:30 +0000 (15:13 -0600)] 
github-ci: cancel previous job for all workflows

Previously only enabled in build.yml, apply cancen-in-progress to all
workflow files.

17 months agogithub-ci: don't depend on cbindgen when installed from package
Jason Ish [Mon, 12 Feb 2024 17:05:17 +0000 (11:05 -0600)] 
github-ci: don't depend on cbindgen when installed from package

17 months agogithub-ci: update actions/github-script
Jason Ish [Mon, 12 Feb 2024 16:57:40 +0000 (10:57 -0600)] 
github-ci: update actions/github-script

17 months agogithub-ci: update actions/checkout
Jason Ish [Mon, 12 Feb 2024 06:53:43 +0000 (00:53 -0600)] 
github-ci: update actions/checkout

17 months agogithub-ci: update actions/cache
Jason Ish [Mon, 12 Feb 2024 06:52:11 +0000 (00:52 -0600)] 
github-ci: update actions/cache

17 months agogithub-ci: update {download,upload} artifact actions
Jason Ish [Mon, 12 Feb 2024 06:12:58 +0000 (00:12 -0600)] 
github-ci: update {download,upload} artifact actions

Multiple uploads can no longer use the same name, so give the cbindgen
artifact its own name of "cbindgen". Requires an additional download
for each build depending on this cbindgen artifact.

17 months agogithub-ci: use all cores available
Jason Ish [Fri, 9 Feb 2024 00:19:41 +0000 (18:19 -0600)] 
github-ci: use all cores available

GitHub action Linux runners now have 4 cores, instead of hardcoding
the number, use nproc to determine how many cores are available and
use them.

17 months agogithub-ci: move centos-7 build to its own workflow
Jason Ish [Mon, 12 Feb 2024 06:02:32 +0000 (00:02 -0600)] 
github-ci: move centos-7 build to its own workflow

CentOS 7 requires older actions due to newer GitHub actions depending
on a newer glibc. So move to its own workflow file so the main builds
can move forward to newer versions of actions.

17 months agorust: weekly cargo audit and update 10391/head
Jason Ish [Mon, 12 Feb 2024 19:10:31 +0000 (13:10 -0600)] 
rust: weekly cargo audit and update

Add GitHub actions to perform:

- cargo audit: catch new warnings in dependendent packages
- cargo update: catch updated dependencies that depend on a new MSRV
    than we use

17 months agomulti-tenant: fix loader dead lock 10383/head
Victor Julien [Sun, 11 Feb 2024 08:29:38 +0000 (09:29 +0100)] 
multi-tenant: fix loader dead lock

A dead lock could occur at start up, where a loader thread would
get stuck on it's condition variable, while the main thread was
polling the loaders task results.

The vector to the dead lock is as follows:

main                         loader
DetectEngineMultiTenantSetup
-DetectLoaderSetupLoadTenant
--DetectLoaderQueueTask
---lock loader
---add task
---unlock loader
                        lock loader
                        check/exec tasks
                        unlock loader
---wake up threads
                        lock ctrl mutx
                        cond wait ctrl
                        unlock ctrl
-DetectLoadersSync
--lock loader
--check tasks
--unlock loader

Between the main thread unlocking the loader and waking up the
threads, it is possible that the loader has already moved ahead
but not yet entered its conditional wait. The main thread sends
its condition signal, but since the loader isn't yet waiting on
it the signal is ignored. Then when the loader does enter its
conditional wait, the signal is not sent again.

This patch updates the logic to send signals much more often.
It also makes sure that the signal is sent under lock, as the
API requires.

Bug: #6766.

17 months agoconfig/jansson: Remove excess libjansson mentions 10359/head
Jeff Lucovsky [Tue, 30 Jan 2024 15:21:15 +0000 (10:21 -0500)] 
config/jansson: Remove excess libjansson mentions

Issue: 6712

Remove multiple occurrences of libjansson installation packages.

17 months agoconfig/nss: Remove libnspr/libnss traces
Jeff Lucovsky [Tue, 30 Jan 2024 15:19:05 +0000 (10:19 -0500)] 
config/nss: Remove libnspr/libnss traces

Issue: 6712

17 months agonetmap: Release lock to avoid deadlock
Jeff Lucovsky [Thu, 8 Feb 2024 14:12:47 +0000 (09:12 -0500)] 
netmap: Release lock to avoid deadlock

Issue: 6755

When NetmapOpen encounters an error opening the netmap device, it'll
retry a bit. When the retry limit is reached, it'll shutdown Suricata.

This commit ensures that the device list lock is not held when before
closing all open devices before terminating Suricata.

17 months agoutil/mime: fix memory leak
Alexey Simakov [Wed, 7 Feb 2024 14:51:00 +0000 (17:51 +0300)] 
util/mime: fix memory leak

Fix memory leak at util-decode-mime:MimeDecInitParser, which
root cause is not-freeing allocated memory for mimeMsg

Bug: #6745

17 months agodetect/http: report error on alloc failure 10347/head
Victor Julien [Fri, 9 Feb 2024 07:09:38 +0000 (08:09 +0100)] 
detect/http: report error on alloc failure

17 months agodetect/http_header: fix leak on realloc failure
Philippe Antoine [Thu, 8 Feb 2024 19:23:59 +0000 (20:23 +0100)] 
detect/http_header: fix leak on realloc failure

17 months agodetect-http: add superfluous alloc check for cocci
Jason Ish [Thu, 8 Feb 2024 19:21:11 +0000 (13:21 -0600)] 
detect-http: add superfluous alloc check for cocci

Add not-needed SCCalloc return check to satisfy our Cocci malloc
checks as it can't see that the caller immediately checks the return
value of this simple wrapper around SCCalloc.

17 months agorust: fix clippy ptr_arg warnings
Philippe Antoine [Thu, 8 Feb 2024 14:47:23 +0000 (15:47 +0100)] 
rust: fix clippy ptr_arg warnings

error: writing `&Vec` instead of `&[_]` involves a new object where a slice will do
   --> src/dns/log.rs:371:29
    |
371 | pub fn dns_print_addr(addr: &Vec<u8>) -> std::string::String {
    |                             ^^^^^^^^ help: change this to: `&[u8]`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg

17 months agoci: authors check using OISF repo
Philippe Antoine [Wed, 7 Feb 2024 20:54:28 +0000 (21:54 +0100)] 
ci: authors check using OISF repo

As flagged critical by codescan