]>
git.ipfire.org Git - thirdparty/suricata.git/log
Victor Julien [Sun, 10 Sep 2023 06:21:02 +0000 (08:21 +0200)]
detect: remove unnecessary detect thread flags stores
Philippe Antoine [Sun, 23 Jun 2024 20:57:11 +0000 (22:57 +0200)]
detect/nfs: do not free a null pointer
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=69840
Jeff Lucovsky [Thu, 21 Mar 2024 14:23:36 +0000 (10:23 -0400)]
detect/base64: Use Rust defined modes everywhere
Issue: 6487
To avoid ambiguity, a single definition for base 64 decoding modes will
be used. The Rust base64 transform contains the definitions for the
existing mode types: Strict, RFC2045, RFC4648
Jeff Lucovsky [Sun, 25 Feb 2024 15:00:45 +0000 (10:00 -0500)]
doc/transform: Correct typo
Jeff Lucovsky [Fri, 23 Feb 2024 13:51:56 +0000 (08:51 -0500)]
doc/transform: Describe the from_base64 transform
Issue: 6487
Document the new transform and indicate that it's the preferred way to
perform base64 decoding (preferred over base64_decode)
Jeff Lucovsky [Thu, 22 Feb 2024 15:41:37 +0000 (10:41 -0500)]
detect/transform: Add from_base64 transform
Issue: 6487
Implement the from_base64 transform:
[bytes value] [offset value] [mode strict|rfc4648|rfc2045]
The value for bytes and offset may be a byte_ variable or an
unsigned integer.
Jeff Lucovsky [Thu, 22 Feb 2024 14:47:18 +0000 (09:47 -0500)]
detect/transform: from_base64 option parsing
Issue: 6487
Implement from_base64 option parsing in Rust. The Rust module also
contains unit tests.
Jeff Lucovsky [Thu, 22 Feb 2024 14:40:28 +0000 (09:40 -0500)]
detect/parser: Refactor utility routines
Refactor utility functions/definitions from the byte_math module into
the parser module. This includes parse_var and ResultValue
Issue: 6487
Shivani Bhardwaj [Fri, 21 Jun 2024 08:25:59 +0000 (13:55 +0530)]
flow: declare and use constansts where possible
Shivani Bhardwaj [Fri, 21 Jun 2024 08:12:24 +0000 (13:42 +0530)]
flow/manager: make fn calls only when necessary
Shivani Bhardwaj [Mon, 17 Jun 2024 10:30:13 +0000 (16:00 +0530)]
flow/timeout: cleanup fn names and comments
Shivani Bhardwaj [Thu, 13 Jun 2024 14:01:02 +0000 (19:31 +0530)]
flow: remove unneeded args to fn
Shivani Bhardwaj [Thu, 13 Jun 2024 13:45:54 +0000 (19:15 +0530)]
flow/manager: add fn docs
Shivani Bhardwaj [Thu, 13 Jun 2024 13:05:31 +0000 (18:35 +0530)]
flow: add defensive check
Shivani Bhardwaj [Thu, 13 Jun 2024 13:04:40 +0000 (18:34 +0530)]
packetpool: use DEBUG_VALIDATE statement
Shivani Bhardwaj [Thu, 13 Jun 2024 13:03:30 +0000 (18:33 +0530)]
flow: use bool wherever possible
Philippe Antoine [Fri, 21 Jun 2024 07:27:50 +0000 (09:27 +0200)]
detect/icmp: require real packet in signature
Fixes: 956c8bebd1 ("detect/prefilter: use sig mask to exclude pkt engines")
Philippe Antoine [Wed, 19 Jun 2024 11:42:32 +0000 (13:42 +0200)]
detect: add to signature mask for decode events
Ticket: 6291
Philippe Antoine [Wed, 19 Jun 2024 11:39:08 +0000 (13:39 +0200)]
detect: fix check for app_layer events
Ticket: 7106
Jeff Lucovsky [Tue, 18 Jun 2024 13:45:06 +0000 (09:45 -0400)]
af-packet: Remove unused preprocessor define
Remove unused preprocessor value; exposed by compilation warning
Philippe Antoine [Thu, 20 Jun 2024 14:18:25 +0000 (16:18 +0200)]
output: configurable payload_length field for alerts
Ticket: 7098
Philippe Antoine [Thu, 20 Jun 2024 13:09:16 +0000 (15:09 +0200)]
dcerpc: add app-layer metadata in alerts
Ticket: 6090
Philippe Antoine [Thu, 7 Dec 2023 09:32:03 +0000 (10:32 +0100)]
filestore: do not try to store a file set to nostore
Ticket: 6390
This can happen with keyword filestore:both,flow
If one direction does not have a signature group with a filestore,
the file is set to nostore on opening, until a signature in
the other direction tries to set it to store.
Subsequent files will be stored in both directions as flow flags
are now set.
Philippe Antoine [Thu, 29 Jun 2023 13:41:31 +0000 (15:41 +0200)]
app-layer: fix -Wshorten-64-to-32 warnings
Ticket: #6186
Warnings about downcast from 64 to 32 bits
Philippe Antoine [Thu, 23 Nov 2023 14:46:39 +0000 (15:46 +0100)]
util: fix -Wshorten-64-to-32 warnings
Ticket: 6186
Warnings about downcast from 64 to 32 bits
Generic fixes required to get app-layer clean
Philippe Antoine [Wed, 19 Jun 2024 14:45:03 +0000 (16:45 +0200)]
detect: remove unused field
content_inspect_window is used in app-layer-smtp, but
not directly in detect-file-data
Victor Julien [Sat, 1 Jun 2024 07:12:29 +0000 (09:12 +0200)]
detect: add tls.alpn keyword
Ticket: #7108.
Victor Julien [Fri, 31 May 2024 13:05:16 +0000 (15:05 +0200)]
eve/schema: update for alpn
Victor Julien [Fri, 31 May 2024 12:33:31 +0000 (14:33 +0200)]
eve/tls: log ALPN for client and server
Part of the extended logging.
Logs `client_alpns` and `server_alpns` arrays in the tls object.
Ticket: #7055.
Victor Julien [Fri, 31 May 2024 12:18:15 +0000 (14:18 +0200)]
tls: store all ALPN records in the state
For later logging and detection.
Victor Julien [Tue, 18 Jun 2024 20:05:53 +0000 (22:05 +0200)]
eve/schema: minor enip reformat
Jason Ish [Tue, 18 Jun 2024 04:41:49 +0000 (22:41 -0600)]
github-ci: run cargo update test on pull requests
Previously it was run once a week, hiding some issues until
Monday's. Instead run on pull requests, but still not every push.
Victor Julien [Tue, 18 Jun 2024 04:54:28 +0000 (06:54 +0200)]
detect/icmp-id: remove prefilter pseudo check
This is now handled at registration with SIG_MASK_REQUIRE_REAL_PKT.
Victor Julien [Tue, 18 Jun 2024 04:54:09 +0000 (06:54 +0200)]
detect/dsize: remove prefilter pseudo check
This is now handled at registration with SIG_MASK_REQUIRE_REAL_PKT.
Victor Julien [Thu, 16 May 2024 10:25:07 +0000 (12:25 +0200)]
detect/stream_size: allow match on pseudo packets
Often used with stream content, which can be inspected with pseudo packets.
Victor Julien [Thu, 16 May 2024 09:43:17 +0000 (11:43 +0200)]
detect/csum: remove pseudo packet checks
Victor Julien [Thu, 16 May 2024 09:42:27 +0000 (11:42 +0200)]
detect/csum: general code cleanups
Victor Julien [Tue, 30 Apr 2024 05:38:42 +0000 (07:38 +0200)]
detect/prefilter: use sig mask to exclude pkt engines
Add an argument to the packet prefilter registration function to include
`SignatureMask` flags. This will be used at runtime to only call these
prefilter engines when the mask check passes.
Victor Julien [Mon, 29 Apr 2024 18:48:32 +0000 (20:48 +0200)]
detect/prefilter: minor function ptr cleanup
Use a typedef'd function pointer for packet Prefilter callbacks to make
the code consistent with the other callbacks.
Victor Julien [Wed, 1 May 2024 05:16:13 +0000 (07:16 +0200)]
detect: remove pseudo checks from packet keywords
Keep as debug validation check.
Victor Julien [Wed, 1 May 2024 05:15:53 +0000 (07:15 +0200)]
detect: skip pseudo packets if sig needs real pkt
If a signature uses a condition that requires a real packet, filter
out pseudo packets as early as possible. To do this, the SignatureMask
logic is used.
This allows for the removal of checks for pseudo packets in individual
keywords `Match` functions, which will be done in a follow up commit.
Update analyzer to output the new flag.
Ticket: #7002.
Philippe Antoine [Fri, 14 Jun 2024 08:28:24 +0000 (10:28 +0200)]
tests: move detect http.uri tests to suricata-verify
Ticket: 3725
Philippe Antoine [Tue, 18 Jun 2024 05:30:01 +0000 (07:30 +0200)]
fuzz: adapt target to number of keywords being dynamic
Ticket: 4683
Philippe Antoine [Mon, 17 Jun 2024 13:53:42 +0000 (15:53 +0200)]
rust: remove unnecessary nested unsafe
Philippe Antoine [Mon, 17 Jun 2024 13:38:11 +0000 (15:38 +0200)]
sip: use right slice to take line from
We iterate over input, but we are now at start.
Avois quadratic complexity turning to OOM.
Ticket: 7093
Jason Ish [Thu, 13 Jun 2024 20:28:23 +0000 (14:28 -0600)]
rust/ike: prefix never read field names with _
New warning from rustc.
The other option is to allow dead code, however this is more explicit,
and when they are read, its obvious they should be renamed.
Jason Ish [Thu, 13 Jun 2024 20:23:28 +0000 (14:23 -0600)]
rust: simply matches with unwrap_or_default
New default clippy warning:
https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default
Jason Ish [Thu, 13 Jun 2024 20:21:56 +0000 (14:21 -0600)]
rust: fix clippy lint for legacy_numeric_constants
https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants
Jason Ish [Thu, 13 Jun 2024 20:16:36 +0000 (14:16 -0600)]
cargo: use default-features instead of default_features
"default_features" is being deprecated in Rust 2024.
Philippe Antoine [Tue, 11 Jun 2024 12:20:16 +0000 (14:20 +0200)]
detect/enip: move keywords to rust
Ticket: 4863
Philippe Antoine [Tue, 7 May 2024 14:13:07 +0000 (16:13 +0200)]
detect/websocket: move keywords to rust
Ticket: 4863
Philippe Antoine [Tue, 7 May 2024 13:42:32 +0000 (15:42 +0200)]
detect/dhcp: move keywords to rust
Ticket: 4863
Philippe Antoine [Fri, 26 Apr 2024 14:32:49 +0000 (16:32 +0200)]
detect/snmp: move keywords to rust
Ticket: 4863
On the way, convert unit test DetectSNMPCommunityTest to a SV test.
And also, make snmp.pdu_type use a generic uint32 for detection,
allowing operators, instead of just equality.
Philippe Antoine [Fri, 26 Apr 2024 14:31:47 +0000 (16:31 +0200)]
detect: helper to have pure rust keywords
detect: make number of keywords dynamic
Ticket: 4683
Philippe Antoine [Tue, 11 Jun 2024 10:43:50 +0000 (12:43 +0200)]
enip: remove unnecessary unsafe
As the function SCEnipRegisterParsers is already marked as unsafe
Eric Leblond [Wed, 8 Nov 2023 20:20:28 +0000 (21:20 +0100)]
profiling: check packet flag first
This fixes the state handling and simplify the logic.
Eric Leblond [Wed, 8 Nov 2023 20:18:33 +0000 (21:18 +0100)]
profiling: add option to active rules profiling at start
When replaying a pcap file, it is not possible to get rules
profiling because it has to be activated from the unix socket.
This patch adds a new option to be able to activate profiling
collection at start so a pcap run can get rules profiling
information.
Lukas Sismis [Tue, 16 Jan 2024 14:27:56 +0000 (15:27 +0100)]
doc: port user install and build instruction from master-6.0.x
Ticket: #6686
Lukas Sismis [Thu, 11 Apr 2024 20:55:22 +0000 (22:55 +0200)]
github-ci: add minimal build for Ubuntu and AlmaLinux
Lukas Sismis [Thu, 11 Apr 2024 20:54:43 +0000 (22:54 +0200)]
github-ci: remove gosu from installed packages
Lukas Sismis [Tue, 16 Jan 2024 13:47:08 +0000 (14:47 +0100)]
doc: update eBPF compilation instructions
Ticket: #6599
Victor Julien [Thu, 6 Jun 2024 15:38:55 +0000 (17:38 +0200)]
doc/userguide: document iprep isset/isnotset
Victor Julien [Thu, 6 Jun 2024 15:38:34 +0000 (17:38 +0200)]
doc/userguide: add more operators to iprep
Victor Julien [Thu, 6 Jun 2024 15:24:20 +0000 (17:24 +0200)]
detect/iprep: update function naming
Bring in line with new Rust code naming for FFI functions.
Victor Julien [Mon, 13 May 2024 12:37:51 +0000 (14:37 +0200)]
detect/iprep: implement isset and isnotset
Implement special "isset" and "isnotset" modes.
"isset" matches if an IP address is part of an iprep category with any
value.
It is internally implemented as ">=,0", which should always be true if
there is a value to evaluate, as valid reputation values are 0-127.
"isnotset" matches if an IP address is not part of an iprep category.
Internally it is implemented outside the uint support.
Ticket: #6857.
Victor Julien [Mon, 13 May 2024 12:37:02 +0000 (14:37 +0200)]
reputation: minor cleanup
No need to init ptrs to NULL after SCCalloc.
Victor Julien [Mon, 13 May 2024 10:33:57 +0000 (12:33 +0200)]
detect/iprep: update keyword parser for extendibility
Jason Ish [Fri, 7 Jun 2024 23:28:01 +0000 (17:28 -0600)]
misc: prefix functions with SC not Sc
Victor Julien [Fri, 7 Jun 2024 19:02:00 +0000 (21:02 +0200)]
detect/noalert: point noalert/alert to new doc
Victor Julien [Thu, 6 Jun 2024 10:25:51 +0000 (12:25 +0200)]
doc/userguide: add noalert/alert keyword docs
Victor Julien [Thu, 6 Jun 2024 09:46:55 +0000 (11:46 +0200)]
doc/userguide: give pcre1 to pcre2 proper heading
Victor Julien [Fri, 12 Jan 2024 13:00:37 +0000 (14:00 +0100)]
detect: implement 'alert' keyword as a companion to 'noalert'
This can be used to implement alert then pass logic.
Add support for alert-then-pass to alert handling routines.
Ticket: #5466.
Victor Julien [Fri, 12 Jan 2024 10:14:27 +0000 (11:14 +0100)]
detect: set ACTION_ALERT for rules that should alert
Replaces default "alert" logic and removed SIG_FLAG_NOALERT.
Instead, "noalert" unsets ACTION_ALERT. Same for flowbits:noalert and
friends.
In signature ordering rules w/o action are sorted as if they have 'alert',
which is the same behavior as before, but now implemented explicitly.
Ticket: #5466.
Victor Julien [Fri, 12 Jan 2024 12:41:17 +0000 (13:41 +0100)]
detect/alert: minor loop cleanup
Victor Julien [Fri, 12 Jan 2024 08:51:02 +0000 (09:51 +0100)]
detect/noalert: minor cleanup
Philippe Antoine [Wed, 29 May 2024 11:47:15 +0000 (13:47 +0200)]
websocket: add data frame
Ticket: 7051
Juliana Fajardini [Wed, 29 May 2024 17:26:54 +0000 (14:26 -0300)]
userguide/upgrade: add note about alerts' increase
With triggering stream reassembly early, since for certain types of
rules there may be more alerts triggered - even in IPS mode, make this
clear in the upgrading section.
Bug #7026
Juliana Fajardini [Tue, 21 May 2024 20:35:34 +0000 (17:35 -0300)]
dns: allow triggering raw stream reassembly
For TCP streams, app proto stream reassembly can start earlier, instead
of waiting and queueing up data before doing so.
Task #7018
Related to
Bug #7004
Philippe Antoine [Fri, 17 Nov 2023 08:30:29 +0000 (09:30 +0100)]
enip: convert to rust
Ticket: 3958
- transactions are now bidirectional
- there is a logger
- gap support is improved with probing for resync
- frames support
- app-layer events
- enip_command keyword accepts now string enumeration as values.
- add enip.status keyword
- add keywords :
enip.product_name, enip.protocol_version, enip.revision,
enip.identity_status, enip.state, enip.serial, enip.product_code,
enip.device_type, enip.vendor_id, enip.capabilities,
enip.cip_attribute, enip.cip_class, enip.cip_instance,
enip.cip_status, enip.cip_extendedstatus
Philippe Antoine [Wed, 5 Jun 2024 11:57:32 +0000 (13:57 +0200)]
files: remove the need for state in callbacks
As files now belong to transactions
Philippe Antoine [Wed, 5 Jun 2024 11:36:46 +0000 (13:36 +0200)]
app-layer: remove unused parameters
Philippe Antoine [Tue, 4 Jun 2024 12:42:43 +0000 (14:42 +0200)]
smtp/mime: look for urls in base64 message
Ticket: 5185
Previously, it was looked for message in plain text, and base64
encoding was only handled for attachments.
This commit also fixes the buffering got such base64 data streamed
into urls finding, by buffering a beginning non-empty line,
and by ensuring that we run extraction on the last line,
even if it had no EOL.
Philippe Antoine [Tue, 7 May 2024 13:09:28 +0000 (15:09 +0200)]
dpdk: simplify and fix build
Philippe Antoine [Tue, 30 Apr 2024 20:19:06 +0000 (22:19 +0200)]
fuzz: build with dependencies on rust and c lib
So that there is no need to remove the final binary, to recompile
it if there has been changes in the code.
Philippe Antoine [Wed, 5 Jun 2024 09:48:54 +0000 (11:48 +0200)]
ci: fix and test with Wunused-macros
Ticket: 6937
Completes
ce9bfba76a785e6a02cbbe796a23be6c4e5bc553
Shivani Bhardwaj [Wed, 5 Jun 2024 03:25:17 +0000 (08:55 +0530)]
eve/stats: add description for flow mgr & recycler
Ticket 6434
Victor Julien [Wed, 5 Jun 2024 04:46:09 +0000 (06:46 +0200)]
doc/userguide: fix rule container typo
Fixes: 8781e9352a6c ("doc/userguide: add documentation for SMTP frames")
Juliana Fajardini [Mon, 20 May 2024 16:02:45 +0000 (13:02 -0300)]
pgsql: trigger raw stream reassembly
Expose the raw stream earlier to the detection engine, as Pgsql can have
multiple messages per transaction and usually will have a message
complete within one TCP packet.
Bug #7000
Related to
Bug #7026
Juliana Fajardini [Thu, 25 Apr 2024 01:13:35 +0000 (22:13 -0300)]
pgsql/logger: open json object from logger function
Before, the JsonBuilder object for the pgsql event was being created
from the C-side function that actually called the Rust logger.
This resulted that if another module - such as the Json Alert called the
PGSQL logger, we wouldn't have the `pgsql` key present in the log output
- only its inner fields.
Bug #6983
Victor Julien [Tue, 4 Jun 2024 10:30:12 +0000 (12:30 +0200)]
doc/userguide: add documentation for SMTP frames
Victor Julien [Mon, 13 Nov 2023 05:43:32 +0000 (06:43 +0100)]
smtp/frames: initial frame support
Adds the following frames:
command_line
data
response_line
The *_line frames are per line, so in multi-line responses each line
will have it's own frame.
Ticket: #4905.
Victor Julien [Sun, 26 May 2024 06:40:11 +0000 (08:40 +0200)]
flow-worker: debug output about updates
Victor Julien [Sun, 26 May 2024 06:38:13 +0000 (08:38 +0200)]
stream: process ASYNC in packet dir
There will generally not be an opposing direction to handle
the app update.
Victor Julien [Fri, 26 Jan 2024 14:11:30 +0000 (15:11 +0100)]
detect/frames: inspect frames only in correct direction
Inspect frames in the correct direction after they have been created.
Victor Julien [Fri, 26 Jan 2024 13:36:16 +0000 (14:36 +0100)]
app-layer: flag flow for next packet in other dir
Add new flags to trigger FLOW_TS_APP_UPDATED/FLOW_TC_APP_UPDATED flags
to be set for the next packet in the relevant direction.
This allows for app relevant work to be done in the next packet in our
direction.
Victor Julien [Thu, 30 Nov 2023 10:59:45 +0000 (11:59 +0100)]
detect/frames: avoid IPS rescanning
Make sure to only scan the data when the app layer has been updated
as well.
Ticket: #6718.
Victor Julien [Sun, 12 Nov 2023 08:41:45 +0000 (09:41 +0100)]
app-layer/frames: add by type getter
AppLayerFrameGetLastOpenByType: Returns the most recent frame with a type
with unknown length (-1).
Check if type is globally enabled first.
Victor Julien [Sun, 12 Nov 2023 08:41:13 +0000 (09:41 +0100)]
frames: add FrameGetLastOpenByType
Getter for the most recent frame with unknown length (-1).
Victor Julien [Mon, 3 Jun 2024 08:28:44 +0000 (10:28 +0200)]
frames: fix bounds check
Victor Julien [Sun, 26 May 2024 06:35:05 +0000 (08:35 +0200)]
stream: minor code clarification
'dir' was too generic, so indicate it's about the app-layer update direction.