]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
4 months agodetect: allow rule which need both directions to match 12875/head
Philippe Antoine [Thu, 18 Jan 2024 13:15:14 +0000 (14:15 +0100)] 
detect: allow rule which need both directions to match

Ticket: 5665

This is done with `alert ip any any => any any`
The => operator means that we will need both directions

4 months agondpi: ignore packets that have a different proto than the flow
Jason Ish [Thu, 27 Mar 2025 21:32:40 +0000 (15:32 -0600)] 
ndpi: ignore packets that have a different proto than the flow

This can happen when the flow is UDP, but an ICMP unreachable is
returned, which gets assigned to the same flow.

Reference: https://github.com/ntop/nDPI/issues/2762

4 months agodoc/ndpi: move ndpi docs to new plugins section
Jason Ish [Fri, 24 Jan 2025 16:51:45 +0000 (10:51 -0600)] 
doc/ndpi: move ndpi docs to new plugins section

Moves the nDPI documentation to an nDPI page in the plugins
section. Remove the duplication of installation and setup
documentation.

Includes some minor cleanups.

4 months agondpi: fix memory in keyword setup
Jason Ish [Fri, 24 Jan 2025 17:18:54 +0000 (11:18 -0600)] 
ndpi: fix memory in keyword setup

- remove duplicate calls to ndpi_init_detection_module
- cleanup ndpi_init_detection_module when no longer needed

4 months agodetect: split new keyword id from registration
Jason Ish [Fri, 17 Jan 2025 20:46:07 +0000 (14:46 -0600)] 
detect: split new keyword id from registration

Split DetectHelperKeywordRegister into 2 functions, one for acquiring
a new keyword ID, and another to perform the registration.

This makes it easier to do the traditional C keyword initialization
with a dynamic ID.

4 months agoeve/schema: add top level ndpi object
Jason Ish [Wed, 15 Jan 2025 21:25:20 +0000 (15:25 -0600)] 
eve/schema: add top level ndpi object

The format is left free-form, as its controled by a plugin.

4 months agogithub-ci: add ndpi build to the centos-stream9 build
Jason Ish [Wed, 15 Jan 2025 18:04:02 +0000 (12:04 -0600)] 
github-ci: add ndpi build to the centos-stream9 build

- Download and build nDPI
- Enable nDPI during Suricata ./configure
- Test that the plugin was built and installed

4 months agondpi: initial implementation of nDPI plugin
Alfredo Cardigliano [Mon, 4 Nov 2024 09:25:31 +0000 (10:25 +0100)] 
ndpi: initial implementation of nDPI plugin

Ticket: #7231

4 months agodetect: add email.date keyword
Alice Akaki [Fri, 28 Mar 2025 20:06:01 +0000 (16:06 -0400)] 
detect: add email.date keyword

email.date matches on MIME EMAIL DATE
This keyword maps to the EVE field email.date
It is a sticky buffer
Supports prefiltering

Ticket: #7591

4 months agomime/email: log date and subject fields
Alice Akaki [Fri, 28 Mar 2025 20:06:26 +0000 (16:06 -0400)] 
mime/email: log date and subject fields

4 months agodetect: per tx detect flags to a u8 progress value 12862/head
Victor Julien [Mon, 24 Mar 2025 10:20:39 +0000 (11:20 +0100)] 
detect: per tx detect flags to a u8 progress value

Reduce per tx space for tracking detection/prefilter progress. Instead
of a per direction u64 of flags, where each bit reflected a progress
value, use a simple u8 to track the linear progression through the
progress values. Use an offset to allow 0 to mean no value.

Add flags field as well to track "skip detect" and "inspect complete".

4 months agoapp-layer: add helper for AppLayerTxData cleanup
Victor Julien [Sat, 22 Mar 2025 09:18:43 +0000 (10:18 +0100)] 
app-layer: add helper for AppLayerTxData cleanup

4 months agodoc/tls: add more detail on tls.random
Victor Julien [Mon, 24 Mar 2025 12:25:25 +0000 (13:25 +0100)] 
doc/tls: add more detail on tls.random

4 months agodetect: reorder struct
Victor Julien [Thu, 27 Feb 2025 10:37:14 +0000 (11:37 +0100)] 
detect: reorder struct

4 months agolandlock: add read/write permission to MPM cache directory
Lukas Sismis [Wed, 26 Mar 2025 12:52:29 +0000 (19:52 +0700)] 
landlock: add read/write permission to MPM cache directory

4 months agohyperscan: add caching mechanism for hyperscan contexts
Lukas Sismis [Mon, 28 Oct 2024 14:46:17 +0000 (15:46 +0100)] 
hyperscan: add caching mechanism for hyperscan contexts

Cache Hyperscan serialized databases to disk to prevent compilation
of the same databases when Suricata is run again with the same
ruleset.
Hyperscan binary files are stored per rulegroup in the designated
folder, by default in the cached library folder.
Since caching is per signature group heads,
some chunk of the ruleset can change and it still can reuse part of
the unchanged signature groups.

Loading *fresh* ET Open ruleset:  19 seconds
Loading *cached* ET Open ruleset: 07 seconds

Ticket: 7170

4 months agoutil-mpm: prepare MPM codebase for ruleset caching
Lukas Sismis [Mon, 28 Oct 2024 14:44:09 +0000 (15:44 +0100)] 
util-mpm: prepare MPM codebase for ruleset caching

4 months agoutil-mpm-hs: refactor Hyperscan Pattern DB initialization to smaller functions
Lukas Sismis [Mon, 28 Oct 2024 14:41:07 +0000 (15:41 +0100)] 
util-mpm-hs: refactor Hyperscan Pattern DB initialization to smaller functions

4 months agodetect-engine: remove commented out code
Lukas Sismis [Wed, 24 Jul 2024 20:46:15 +0000 (22:46 +0200)] 
detect-engine: remove commented out code

4 months agoutil-path: remove dead code
Lukas Sismis [Wed, 24 Jul 2024 20:45:20 +0000 (22:45 +0200)] 
util-path: remove dead code

4 months agoutil-hash: add iterator for hash function
Lukas Sismis [Sat, 5 Oct 2024 18:27:19 +0000 (20:27 +0200)] 
util-hash: add iterator for hash function

4 months agohashlittle: add a safe variant of hashlittle2 function
Lukas Sismis [Thu, 25 Jul 2024 08:34:21 +0000 (10:34 +0200)] 
hashlittle: add a safe variant of hashlittle2 function

This variant of hashlittle2() ensures that it avoids
accesses beyond the last byte of the string, which will
cause warnings from tools like Valgrind or Address
Sanitizer.

4 months agodoc/http2: explicit behavior for some http keywords
Philippe Antoine [Wed, 26 Mar 2025 15:21:56 +0000 (16:21 +0100)] 
doc/http2: explicit behavior for some http keywords

HTTP/2 does not define a way to carry the version or reason phrase
that is included in an HTTP/1.1 status line.

Ticket: 6548

4 months agoci: test cargo fmt for some subdirs
Philippe Antoine [Fri, 7 Mar 2025 14:04:01 +0000 (15:04 +0100)] 
ci: test cargo fmt for some subdirs

The ones that respect it as new

4 months agoplugins: check version for all plugins
Philippe Antoine [Thu, 6 Mar 2025 13:15:27 +0000 (14:15 +0100)] 
plugins: check version for all plugins

4 months agoplugins: bind constant SC_PLUGIN_API_VERSION
Philippe Antoine [Wed, 19 Feb 2025 20:15:09 +0000 (21:15 +0100)] 
plugins: bind constant SC_PLUGIN_API_VERSION

4 months agoplugin: constify some fields
Philippe Antoine [Wed, 19 Feb 2025 20:09:16 +0000 (21:09 +0100)] 
plugin: constify some fields

including the tx parameter to the logger function

4 months agorust/detect: extend visibility of SIGMATH_NOOPT
Philippe Antoine [Thu, 23 Jan 2025 09:18:09 +0000 (10:18 +0100)] 
rust/detect: extend visibility of SIGMATH_NOOPT

so that it can be used by plugins

Avoid export by cbindgen as this constant is also defined in C

4 months agotemplate: rustfmt
Philippe Antoine [Tue, 21 Jan 2025 13:56:08 +0000 (14:56 +0100)] 
template: rustfmt

and use generic logger callback prototype with later cast

and do some other small modifications so that the plugin
has less diff

4 months agostream: make counter fns static
Shivani Bhardwaj [Wed, 26 Mar 2025 07:07:45 +0000 (12:37 +0530)] 
stream: make counter fns static

4 months agoutil/stream: remove duplicate nested statement
Shivani Bhardwaj [Fri, 21 Mar 2025 13:49:16 +0000 (19:19 +0530)] 
util/stream: remove duplicate nested statement

4 months agostream: use max-region setting from suricata.yaml
Shivani Bhardwaj [Fri, 21 Mar 2025 10:36:58 +0000 (16:06 +0530)] 
stream: use max-region setting from suricata.yaml

1. Add key (commented) to suricata.yaml
2. Give the configured/default key preference, save a check

4 months agostream: replace explicit logic w pre-existing fn
Shivani Bhardwaj [Sat, 15 Mar 2025 09:43:23 +0000 (15:13 +0530)] 
stream: replace explicit logic w pre-existing fn

4 months agostream: combine statements w same outcome
Shivani Bhardwaj [Sat, 15 Mar 2025 09:42:34 +0000 (15:12 +0530)] 
stream: combine statements w same outcome

4 months agostream: fix minor typos
Shivani Bhardwaj [Sat, 15 Mar 2025 09:42:03 +0000 (15:12 +0530)] 
stream: fix minor typos

4 months agostream: use bool wherever possible
Shivani Bhardwaj [Sat, 15 Mar 2025 09:41:34 +0000 (15:11 +0530)] 
stream: use bool wherever possible

4 months agostream: add defensive checks and comments
Shivani Bhardwaj [Sat, 15 Mar 2025 09:40:39 +0000 (15:10 +0530)] 
stream: add defensive checks and comments

4 months agostream: remove unneeded else
Shivani Bhardwaj [Sat, 15 Mar 2025 09:38:51 +0000 (15:08 +0530)] 
stream: remove unneeded else

4 months agooutput/buffer: Change buffer-size default value
Jeff Lucovsky [Fri, 28 Feb 2025 16:02:29 +0000 (11:02 -0500)] 
output/buffer: Change buffer-size default value

The buffer-size value that controls file output buffering defaults to
8k. To be consistent with previous logic, the default is being changed
to 0 (e.g., needed if there are old config files that don't specifically
enable the new value).

4 months agodetect/ja: use multi-protocol support
Philippe Antoine [Mon, 25 Nov 2024 08:30:51 +0000 (09:30 +0100)] 
detect/ja: use multi-protocol support

instead of hardcoding list : removes usage of ALPROTO_QUIC and
ALPROTO_TLS in generic SigValidate

Ticket: 7304

4 months agodetect: clean support for multi-protocol keywords
Philippe Antoine [Fri, 4 Oct 2024 12:53:02 +0000 (14:53 +0200)] 
detect: clean support for multi-protocol keywords

such as ja4.

Why ?

We do not want to see hard-coded protocol constants such as
ALPROTO_QUIC directly used in generic code in detect-parse.c

How ?
From the keyword point of view, this commit adds the function
DetectSignatureSetMultiAppProto which is similar to
DetectSignatureSetAppProto but takes multiple alprotos.
It restricts the signature alprotos to a set of possible alprotos
and errors out if the interstion gets empty.

The data structure SignatureInitData gets extended with
a fixed-length array, as the use case is a sparse number of protocols

Ticket: 7304

4 months agoapp-layer: improve limits on number of probing parsers
Philippe Antoine [Mon, 11 Nov 2024 07:52:28 +0000 (08:52 +0100)] 
app-layer: improve limits on number of probing parsers

There was an implicit limit of 32 app-layer protocols
used by probing parsers through a mask, meaning that
Suricata should not support more than 32 app-layer protocols
in total.

This limit is relaxed to each flow not being able to
run more than 32 probing parsers, meaning that for each source
and destination port combination, the sum of registered
probing parsers should not exceed 32, even if there are more
than 32 in total.

Also sets probing parsers done sooner in the case the other
side of the connection was detected first.

Ticket: 7437

4 months agodoc/userguide: add lua flowlib docs 12854/head
Juliana Fajardini [Wed, 26 Mar 2025 23:08:12 +0000 (16:08 -0700)] 
doc/userguide: add lua flowlib docs

Task #7489

4 months agodoc: remove old lua flow methods
Juliana Fajardini [Thu, 27 Mar 2025 02:07:16 +0000 (19:07 -0700)] 
doc: remove old lua flow methods

Task #7489

4 months agolua: remove old lua flow calls
Juliana Fajardini [Wed, 26 Mar 2025 23:02:06 +0000 (16:02 -0700)] 
lua: remove old lua flow calls

Moving forward, the flowlib is to be used.

Task #7489

4 months agolua: add initial suricata.flow lib
Juliana Fajardini [Tue, 25 Mar 2025 21:53:19 +0000 (14:53 -0700)] 
lua: add initial suricata.flow lib

Methods:
`get` creates the flow object.
`id`  returns the flow id.
`has_alerts` returns a boolean indicating if the flow triggered alerts.
`app_layer_proto` returns various app-layer related fields as 5 strings:
  alproto, alproto_ts, alproto_tc, alproto_orig, alproto_expect.
`stats` returns cnts for bytes and packets to sever and to client, as 4
  numbers.
`tuple` -- returns various fields: srcip, dstip, proto, sp, dp.
`timestamps` returns time as 4 numbers: seconds and microseconds, for
  first and last packet of the flow.
`timestring_legacy` returns the first packet from the flow's timestring
  as a string (like fastlog).
`timestring_iso8601` returns the first packet from the flow's
  timestring as an iso8601 compat timestring (like eve).

Example:

```
name = "lua-scflowstats.log"

local flow = require("suricata.flow")

function init(args)
    local needs = {}
    needs["type"] = "flow"
    return needs
end

function setup(args)
    filename = SCLogPath() .. "/" .. name
    file = assert(io.open(filename, "a"))
    SCLogInfo("lua SCFlowStats Log Filename " .. filename)
end

function log(args)
    local f = flow.get()
    timestring = f:timestring_legacy()
    tscnt, tsbytes, tccnt, tcbytes = f:stats()

   file:write ("[**] " .. timestring .. "\nSCFlowStats is\nPacket count to server:  " .. tscnt .. "\nByte count to server: " .. tsbytes .. "\nPacket count to client: " .. tccnt .. "\nByte count to client: " .. tcbytes .. "\n[**]")
    file:flush()
end

function deinit(args)
    file:close(file)
end
```

Task #7489

4 months agolua: fix typos
Juliana Fajardini [Tue, 25 Mar 2025 21:49:52 +0000 (14:49 -0700)] 
lua: fix typos

4 months agolua/dnp3: convert done and complete to boolean 12847/head
Jason Ish [Thu, 27 Mar 2025 17:24:17 +0000 (11:24 -0600)] 
lua/dnp3: convert done and complete to boolean

These were integers, 1 of true, 0 for false. Convert to boolean as
that is how they are in eve, and Lua has boolean types.

Ticket: #7601

4 months agolua/dnp3: add is_request boolean
Jason Ish [Thu, 27 Mar 2025 17:10:21 +0000 (11:10 -0600)] 
lua/dnp3: add is_request boolean

A DNP3 message can be a request or response, but not both. This is how
the transaction is structured.

Instead of having 2 values, "has_request" and "has_response", just
provide one field, "is_request" as a boolean.

Ticket: #7601

4 months agolua: convert dnp3 to suricata.dnp3 lib
Jason Ish [Thu, 27 Mar 2025 16:46:49 +0000 (10:46 -0600)] 
lua: convert dnp3 to suricata.dnp3 lib

This is an initial 1:1 conversion which is rather simple, as DNP3 only
had one function which converted the whole transaction to a DNP3
table.

Ticket: #7601

4 months agolua: remove buffer type dns.rrname, not needed
Jason Ish [Wed, 26 Mar 2025 23:12:05 +0000 (17:12 -0600)] 
lua: remove buffer type dns.rrname, not needed

DNS is transaction based, Lua scripts need only express interest in
the request or the response.

4 months agolua: allow for real booleans in "needs" expression
Jason Ish [Wed, 26 Mar 2025 22:16:03 +0000 (16:16 -0600)] 
lua: allow for real booleans in "needs" expression

In addition to

    function init (args)
        local needs = {}
        needs["dnp3"] = tostring(true)
        return needs
    end

allow for

    function init (args)
        return {dnp3=true}
    end

with the idea that the former will be completely removed for 8.0.

This works with all existing SV tests and as a string value, any value
is considered "truthy".

4 months agoscript/dnp3_gen.py: use current clang style
Jason Ish [Wed, 26 Mar 2025 18:29:48 +0000 (12:29 -0600)] 
script/dnp3_gen.py: use current clang style

4 months agoscript/dnp3-gen.py: update for newer versions of Python
Jason Ish [Wed, 26 Mar 2025 18:25:58 +0000 (12:25 -0600)] 
script/dnp3-gen.py: update for newer versions of Python

More recent yaml loaders require the loader as an argument.

4 months agodetect: add email.cc keyword 12840/head
Alice Akaki [Sat, 22 Mar 2025 01:25:48 +0000 (21:25 -0400)] 
detect: add email.cc keyword

email.cc matches on MIME EMAIL Carbon Copy
This keyword maps to the EVE field email.cc[]
It is a sticky buffer
Supports prefiltering

Ticket: #7588

4 months agodetect-email.c: don't return NULL for empty buffer
Alice Akaki [Mon, 24 Mar 2025 21:08:31 +0000 (17:08 -0400)] 
detect-email.c: don't return NULL for empty buffer

Just return NULL if tx->mime_state is NULL or if SCDetectMimeEmailGetData return 0

Fixes:
09db7c7 ("detect: add mime email.subject keyword")
90aab0d ("detect: add email.from")

4 months agodoc: add keywords to the multi-buffer-matching list
Alice Akaki [Mon, 24 Mar 2025 21:29:28 +0000 (17:29 -0400)] 
doc: add keywords to the multi-buffer-matching list

4 months agorust: fixes for breaking change on deranged crate
Jason Ish [Tue, 25 Mar 2025 22:02:29 +0000 (16:02 -0600)] 
rust: fixes for breaking change on deranged crate

Deranged v0.4.1 (a dependency of the time crate) has implemented
PartialOrd for some integer types that conflict with the
implementation in the standard library creating an ambiguity as such
implementation are global. For more info see
https://github.com/jhpratt/deranged/issues/18.

To fix, use "::from" directly, instead of using .into() which is where
we run into amgibuity.

4 months agodoc/userguide: group af-packet upgrade notes together
Jason Ish [Tue, 25 Mar 2025 17:17:54 +0000 (11:17 -0600)] 
doc/userguide: group af-packet upgrade notes together

Also fix the rendering of the sip nest list.

4 months agodoc/userguide: upgrade note about defrag now off for inline use
Jason Ish [Tue, 25 Mar 2025 17:08:36 +0000 (11:08 -0600)] 
doc/userguide: upgrade note about defrag now off for inline use

Ticket: #7617

4 months agoaf-packet: don't default to defrag when inline
Jason Ish [Mon, 24 Mar 2025 01:39:26 +0000 (19:39 -0600)] 
af-packet: don't default to defrag when inline

Don't default to defrag true when inline. It can still be enabled by
setting defrag to true however it is not recommended.

Ticket: #7617

4 months agodoc/userguide: upgrade note about tpacket-v3 default for ids
Jason Ish [Sun, 23 Mar 2025 16:55:45 +0000 (10:55 -0600)] 
doc/userguide: upgrade note about tpacket-v3 default for ids

Ticket: #4798

4 months agoapplayer: fix alp_ctx indexing in tests
Binghui Niu [Tue, 25 Mar 2025 06:35:48 +0000 (14:35 +0800)] 
applayer: fix alp_ctx indexing in tests

Fix problem that some app-layer unittests regist failed.

4 months agodetect: add email.to keyword 12836/head
Alice Akaki [Wed, 26 Mar 2025 08:36:29 +0000 (04:36 -0400)] 
detect: add email.to keyword

email.to matches on MIME EMAIL TO
This keyword maps to the EVE field email.to[]
It is a sticky buffer
Supports prefiltering

Ticket: #7596

4 months agofuzz: set flow flags as in Suricata 12821/head
Philippe Antoine [Mon, 24 Mar 2025 15:11:44 +0000 (16:11 +0100)] 
fuzz: set flow flags as in Suricata

Fixes: d8ddef4c1485 ("detect: delay tx cleanup in some edge case")
4 months agodetect: add mime email.subject keyword 12815/head
Alice Akaki [Thu, 20 Mar 2025 21:32:58 +0000 (17:32 -0400)] 
detect: add mime email.subject keyword

email.subject matches on MIME EMAIL SUBJECT
This keyword maps to the EVE field email.subject
It is a sticky buffer
Supports prefiltering

Ticket: #7595

4 months agoaf-packet: use tpacket v3 by default for ids mode
Jason Ish [Wed, 19 Feb 2025 05:07:40 +0000 (23:07 -0600)] 
af-packet: use tpacket v3 by default for ids mode

If "tpacket-v3" is not present in the configuration file, and we are
in IDS mode, default to "tpacket-v3".

Required moving the check for tpacket-v3 after the copy-mode
configuration, so the warning about tpacket-v3 in active modes has
been moved as well.

Ticket: #4798

4 months agoaf-packet: remove use-mmap option
Jason Ish [Thu, 20 Mar 2025 22:35:49 +0000 (16:35 -0600)] 
af-packet: remove use-mmap option

This option is obsolete and was not used in 7.0 as tpacket-v1 support
was removed (see ticket #4796).

4 months agoaf-packet: remove build conditional for tpacket-v3
Jason Ish [Fri, 21 Mar 2025 22:04:31 +0000 (16:04 -0600)] 
af-packet: remove build conditional for tpacket-v3

All kernels on supported distrubtions should now support tpacket-v3,
so only enable af-packet if v2 and v3 are available.

4 months agopgsql/parser: use fn for length parsing... 12811/head
Juliana Fajardini [Fri, 21 Mar 2025 18:55:44 +0000 (11:55 -0700)] 
pgsql/parser: use fn for length parsing...

... there was still one parser missing this conversion.

4 months agoutil/exception: fix coverity warning
Juliana Fajardini [Fri, 21 Mar 2025 18:20:09 +0000 (11:20 -0700)] 
util/exception: fix coverity warning

CID 1644862:  Control flow issues  (UNREACHABLE)

In ExceptionPolicyTargetFlagToString, a statement cannot be reached
(line 113).

4 months agouserguide/exceptions: clarify when stats are logged 12805/head
Juliana Fajardini [Wed, 26 Feb 2025 19:38:36 +0000 (16:38 -0300)] 
userguide/exceptions: clarify when stats are logged

The stats for exception policies are only logged/ present when any of
the exception policies are enabled (which means any value other than
"auto" or "ignore" in IDS mode, or "ignore" in IPS mode).

This wasn't clearly stated in the docs.

4 months agoflow/output: log triggered exception policies
Juliana Fajardini [Fri, 28 Feb 2025 22:18:47 +0000 (19:18 -0300)] 
flow/output: log triggered exception policies

To accompany the Exception Policy stats, also add information about any
Exception Policy triggered and for which target to the flow log event.

Task #6215

4 months agotls: implement alert parser
Victor Julien [Fri, 18 Oct 2024 09:55:40 +0000 (11:55 +0200)] 
tls: implement alert parser

Fatal alerts set the tx state to 'finished'.

Add event for malformed alerts.

4 months agodns: stop renaming DNSTransaction to RSDNSTransaction 12799/head
Jason Ish [Wed, 19 Mar 2025 21:00:38 +0000 (15:00 -0600)] 
dns: stop renaming DNSTransaction to RSDNSTransaction

Not needed anymore as there is no DNSTransaction in the C src to
conflict.

4 months agolua: document new suricata.dns lua library
Jason Ish [Wed, 12 Mar 2025 15:52:54 +0000 (09:52 -0600)] 
lua: document new suricata.dns lua library

Ticket: #7602

4 months agolua: convert dns function into suricata.dns lib
Jason Ish [Tue, 11 Mar 2025 22:52:09 +0000 (16:52 -0600)] 
lua: convert dns function into suricata.dns lib

Notable changes from the previous API:
- rcode will return the rcode as an integer
- rcode_string will return the string representation

Also fixes an issue where an rcode of 0 was returned as nil.

Ticket: #7602

4 months agodetect: add email.from
Alice Akaki [Sat, 15 Mar 2025 02:32:54 +0000 (22:32 -0400)] 
detect: add email.from

email.from matches on MIME EMAIL FROM
This keyword maps to the EVE field email.from
It is a sticky buffer
Supports prefiltering

Ticket: #7592

4 months agorustfmt: rust/src/mime/smtp.rs
Alice Akaki [Sat, 15 Mar 2025 02:39:06 +0000 (22:39 -0400)] 
rustfmt: rust/src/mime/smtp.rs

4 months agoEve: use mac addresses from flow for flow timeout
Joyce Yu [Mon, 17 Mar 2025 18:58:50 +0000 (14:58 -0400)] 
Eve: use mac addresses from flow for flow timeout

Ethernet metadata is missing for events triggered on flow timeout
pseudopackets. Use the first set of mac addresses stored with the
flow to fill in the ether field.

Ticket: #5486

4 months agoDoc: update eve-json-output ethernet description
Joyce Yu [Mon, 17 Mar 2025 18:57:48 +0000 (14:57 -0400)] 
Doc: update eve-json-output ethernet description

Document getting mac addresses from flow when flow timeout.

4 months agoaf-packet: use actual snaplen in bpf 12783/head
Victor Julien [Wed, 19 Mar 2025 06:03:01 +0000 (07:03 +0100)] 
af-packet: use actual snaplen in bpf

Avoids setting a 0 snaplen in BPF, leading to an error.

Fixes: b8b6ed550a6f ("af-packet: delay setting default-packet-size for af-packet")
Ticket: #7618.

4 months agodatasets: work around scan-build warning
Victor Julien [Tue, 18 Mar 2025 21:26:53 +0000 (22:26 +0100)] 
datasets: work around scan-build warning

datasets.c:493:27: warning: Dereference of null pointer [core.NullDereference]
  493 |     DEBUG_VALIDATE_BUG_ON(set->hash->config.hash_size != hashsize);
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
./util-validate.h:95:44: note: expanded from macro 'DEBUG_VALIDATE_BUG_ON'
   95 | #define DEBUG_VALIDATE_BUG_ON(exp) BUG_ON((exp))
      |                                            ^~~
./suricata-common.h:307:36: note: expanded from macro 'BUG_ON'
  307 |         #define BUG_ON(x) assert(!(x))
      |                                    ^
/usr/include/assert.h:109:7: note: expanded from macro 'assert'
  109 |     ((expr)                                                             \
      |       ^~~~
1 warning generated.

4 months agodoc: explain priority port setting
Shivani Bhardwaj [Tue, 25 Feb 2025 06:30:36 +0000 (12:00 +0530)] 
doc: explain priority port setting

Ticket 7329

4 months agodoc: format and align suricata.yaml section
Shivani Bhardwaj [Tue, 25 Feb 2025 06:07:12 +0000 (11:37 +0530)] 
doc: format and align suricata.yaml section

4 months agoupgrade: list inspection recursion default limit
Juliana Fajardini [Mon, 17 Mar 2025 15:54:49 +0000 (08:54 -0700)] 
upgrade: list inspection recursion default limit

As the yaml indicated before that if no value was specified there were
no limits, and now there will be one.

4 months agodoc/upgrade: add datasets hash size limit note
Juliana Fajardini [Mon, 17 Mar 2025 15:52:20 +0000 (08:52 -0700)] 
doc/upgrade: add datasets hash size limit note

4 months agodetect: add configurable limits for datasets
Philippe Antoine [Tue, 18 Mar 2025 09:55:39 +0000 (10:55 +0100)] 
detect: add configurable limits for datasets

Ticket: 7615

Avoids signatures setting extreme hash sizes, which would lead to very
high memory use.

Default to allowing:
- 65536 per dataset
16777216 total

To override these built-in defaults:

```yaml
datasets:
  # Limits for per rule dataset instances to avoid rules using too many
  # resources.
  limits:
    # Max value for per dataset `hashsize` setting
    #single-hashsize: 65536
    # Max combined hashsize values for all datasets.
    #total-hashsizes: 16777216
```

4 months agodatasets: improve default hashsize handling
Victor Julien [Tue, 18 Mar 2025 09:55:39 +0000 (10:55 +0100)] 
datasets: improve default hashsize handling

Make hashsize default local to dataset code, instead of relying on the
thash code.

Use the same default value as before.

4 months agodoc/userguide: af-packet upgrade notes
Jason Ish [Mon, 17 Mar 2025 15:35:16 +0000 (09:35 -0600)] 
doc/userguide: af-packet upgrade notes

Add note about increased block size and how to change it back to old
defaults if needed.

Ticket: #7458

4 months agoaf-packet: delay setting default-packet-size for af-packet
Jason Ish [Mon, 17 Mar 2025 16:35:57 +0000 (10:35 -0600)] 
af-packet: delay setting default-packet-size for af-packet

AF_PACKET needs more information about its configuration before we can
set the default packet size, so on startup, leave unset in suricata.c
if in AF_PACKET mode.

If defrag is enabled, use a default packet size of 9k for tpacket-v2.
This can still lead to truncation events, then the user can increase
their 'default-packet-size'.

Tpacket-v3 does not need an increased packet size as it will handle
any size of packet that is smaller than the configured block size
which now has a default of 128k.

9k for the snap is somewhat arbitrary but is large enough for the
common 9000 jumbo frame plus some extra headers including tpacket
headers.

Ticket: #7458

4 months agoaf-packet: warn that tpacket-v3 is better for non-inline usage
Jason Ish [Thu, 13 Mar 2025 18:14:26 +0000 (12:14 -0600)] 
af-packet: warn that tpacket-v3 is better for non-inline usage

Ticket: #7458

4 months agoaf-packet: add event for packets truncated by af-packet
Jason Ish [Thu, 13 Mar 2025 16:36:08 +0000 (10:36 -0600)] 
af-packet: add event for packets truncated by af-packet

Ticket: #7458

4 months agoaf-packet: warn if v3 block size is not large enough for defrag
Jason Ish [Wed, 12 Mar 2025 22:20:38 +0000 (16:20 -0600)] 
af-packet: warn if v3 block size is not large enough for defrag

If using tpacket-v3 and defrag, warn if the block size is not large
enough for a fully defragmented packet.

Ticket: #7458

4 months agoaf-packet: warn if v2 block size not large enough for defrag
Jason Ish [Wed, 12 Mar 2025 22:13:40 +0000 (16:13 -0600)] 
af-packet: warn if v2 block size not large enough for defrag

If using tpacket-v2, defrag and a user provided v2-block-size, warn if
the block size is not large enough to hold one fully defragmented
packet.

Ticket: #7458

4 months agoaf-packet: make tpacket-v2 block size configurable
Jason Ish [Wed, 12 Mar 2025 21:58:43 +0000 (15:58 -0600)] 
af-packet: make tpacket-v2 block size configurable

With the change of the default tpacket-v2 block size from 32k to 128k,
allow it to be configurable for users who may want to make it larger,
or revert it back to the pre 7.0.9 default of 32k.

Ticket: #7458

4 months agoaf-packet: increase default block size
Jason Ish [Wed, 12 Mar 2025 21:56:40 +0000 (15:56 -0600)] 
af-packet: increase default block size

Increase the default block size from 32k to 128k. This allows for a
fully defragmented packet to fit in the buffer.

Ticket: #7458

4 months agoaf-packet: warn if defrag not suitable for mode
Jason Ish [Wed, 12 Mar 2025 18:34:31 +0000 (12:34 -0600)] 
af-packet: warn if defrag not suitable for mode

AF_PACKET defrag should not be used for inline modes. Its possible that
a packet received could be larger than can be set when defrag is
enabled, so warn if disabled for inline use.

Likewise, warn if defrag is disabled for IDS use, or non-inline mode.

Ticket: #7458

4 months agoaf-packet: check defrag value even if cluster-type not set
Jason Ish [Wed, 12 Mar 2025 18:31:08 +0000 (12:31 -0600)] 
af-packet: check defrag value even if cluster-type not set

If cluster-type was not set we default to "cluster_flow" with defrag
always on. Instead check for defrag value and disable defrag if disabled
by the user.

Ticket: #7458

4 months agodetect: limit base64_decode `bytes` to 64KiB
Philippe Antoine [Tue, 17 Dec 2024 14:06:25 +0000 (15:06 +0100)] 
detect: limit base64_decode `bytes` to 64KiB

Ticket: 7613

Avoids potential large per-thread memory allocation. A buffer with the
size of the largest decode_base64 buffer size setting would be allocated
per thread. As this was a u32, it could mean a per-thread 4GiB memory
allocation.

64KiB was already the built-in default for cases where bytes size wasn't
specified.