]>
git.ipfire.org Git - thirdparty/suricata.git/log
dependabot[bot] [Wed, 3 Jul 2024 15:27:51 +0000 (15:27 +0000)]
github-actions: bump actions/checkout from 3.6.0 to 4.1.7
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.6.0 to 4.1.7.
- [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/v3.6.0...
692973e3d937129bcbf40652eb9f2f61becf3332 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Jason Ish [Tue, 25 Jun 2024 19:03:18 +0000 (13:03 -0600)]
github-ci: add non-bundled libhtp build
Jason Ish [Tue, 25 Jun 2024 18:51:33 +0000 (12:51 -0600)]
github-ci/builds: don't run if only doc changes
A new workflow, "docs" has been created for only doc changes.
Factor out prepare-deps into a reusable action.
Philippe Antoine [Thu, 27 Jun 2024 11:42:34 +0000 (13:42 +0200)]
detect: parse units for integer for every cases
Ticket: #6423
Not just equality, but also >3MB should work
For example flow.bytes_toserver>3MB
Victor Julien [Tue, 25 Jun 2024 08:35:35 +0000 (10:35 +0200)]
smb/ntlmssp: improve version check
Don't assume the ntlmssp version field is always present if the flag is
set. Instead keep track of the offsets of the data of the various blobs
and see if there is space for the version.
Inspired by how Wireshark does the parsing.
Bug: #7121.
dependabot[bot] [Mon, 1 Jul 2024 19:30:49 +0000 (19:30 +0000)]
github-actions: bump github/codeql-action from 3.25.7 to 3.25.11
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.7 to 3.25.11.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Commits](https://github.com/github/codeql-action/compare/v3.25.7...v3.25.11)
---
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>
dependabot[bot] [Mon, 1 Jul 2024 19:30:31 +0000 (19:30 +0000)]
github-actions: bump codecov/codecov-action from 4.4.1 to 4.5.0
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.4.1 to 4.5.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/
125fc84a9a348dbcf27191600683ec096ec9021c ...
e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 )
---
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>
Victor Julien [Mon, 1 Jul 2024 12:07:06 +0000 (14:07 +0200)]
github-actions: remove centos:7 build due to EOL
Philippe Antoine [Thu, 27 Jun 2024 09:26:52 +0000 (11:26 +0200)]
qa: remove depcrecated files
lgtm has been superseded by codeql github action
docker and travis are obsolete
Preparatory work for ticket 2696 libhtp rust conversion
Philippe Antoine [Fri, 21 Jun 2024 17:32:32 +0000 (19:32 +0200)]
output/tx: use dynamic number of app-layer protos
OutputTxLoggerThreadData gets allocated after the number of app-layer
protos is definite
Philippe Antoine [Fri, 21 Jun 2024 17:22:10 +0000 (19:22 +0200)]
detect/profiling: use dynamic number of app-layer protos
Philippe Antoine [Fri, 21 Jun 2024 17:14:23 +0000 (19:14 +0200)]
app-layer: use already defined constant
FLOW_PROTO_APPLAYER_MAX
Philippe Antoine [Fri, 21 Jun 2024 17:10:42 +0000 (19:10 +0200)]
detect/file-data: use dynamic number of app-layer protos
Philippe Antoine [Fri, 5 Apr 2024 11:37:46 +0000 (13:37 +0200)]
detect: helper function for multibuffer
Victor Julien [Wed, 26 Jun 2024 07:36:49 +0000 (09:36 +0200)]
doc/userguide: document threshold backoff type
Victor Julien [Mon, 24 Jun 2024 10:34:44 +0000 (12:34 +0200)]
stream: enable backoff on event rules
Enable backoff for most rules. The rules looking at the session start up
use a count of 1 and a multiplier of 2.
Post-3whs rules use a count of 1 and a multiplier of 10.
Victor Julien [Mon, 24 Jun 2024 08:55:45 +0000 (10:55 +0200)]
detect/threshold: implement backoff type
Implement new `type backoff` for thresholding. This allows alerts to be
limited.
A count of 1 with a multiplier of 10 would generate alerts for matching packets:
1, 10, 100, 1000, 10000, 100000, etc.
A count of 1 with a multiplier of 2 would generate alerts for matching packets:
1, 2, 4, 8, 16, 32, etc.
Like with other thresholds, rule actions like drop and setting of
flowbits will still be performed for each matching packet.
Current implementation is only for the by_flow tracker and for per rule
threshold statements.
Tracking is done using uint32_t. When it reaches this value, the rest of
the packets in the tracker will use the silent match.
Ticket: #7120.
Victor Julien [Mon, 24 Jun 2024 09:06:10 +0000 (11:06 +0200)]
detect/threshold: regex cleanup
Victor Julien [Mon, 24 Jun 2024 08:08:45 +0000 (10:08 +0200)]
detect/threshold: format file
Victor Julien [Wed, 15 May 2024 09:12:45 +0000 (11:12 +0200)]
doc/userguide: document new threshold config options
Victor Julien [Wed, 15 May 2024 09:02:29 +0000 (11:02 +0200)]
detect/threshold: make hash size and memcap configurable
Victor Julien [Sat, 20 Apr 2024 05:41:00 +0000 (07:41 +0200)]
detect/threshold: includes cleanup
Victor Julien [Fri, 19 Apr 2024 16:57:32 +0000 (18:57 +0200)]
detect/threshold: expand cache support for rule tracking
Use the same hash key as for the regular threshold storage,
so include gid, rev, tentant id.
Victor Julien [Fri, 19 Apr 2024 16:31:39 +0000 (18:31 +0200)]
detect/threshold: consider tenant id in tracking
Ticket: #6967.
Victor Julien [Fri, 19 Apr 2024 16:27:57 +0000 (18:27 +0200)]
detect/threshold: include rev in threshold tracking
Victor Julien [Fri, 19 Apr 2024 16:17:33 +0000 (18:17 +0200)]
detect/threshold: improve hash function
Victor Julien [Tue, 9 Jan 2024 15:00:08 +0000 (16:00 +0100)]
thresholds: use dedicated storage
Instead of a Host and IPPair table thresholding layer, use a dedicated
THash to store both. This allows hashing on host+sid+tracker or
ippair+sid+tracker, to create more unique hash keys.
This allows for fewer hash collisions.
The per rule tracking also uses this, so that the single big lock is no
longer a single point of contention.
Reimplement storage for flow thresholds to reuse as much logic as
possible from the host/ippair/rule thresholds.
Ticket: #426.
Victor Julien [Tue, 9 Jan 2024 15:14:10 +0000 (16:14 +0100)]
range: use thash expiry API for timeout
Victor Julien [Wed, 10 Jan 2024 08:49:10 +0000 (09:49 +0100)]
thash: add expiration logic
Add a callback and helper function to handle data expiration.
Update datasets to explicitly not use expiration.
Victor Julien [Tue, 9 Jan 2024 20:53:35 +0000 (21:53 +0100)]
detect/address: constify ipv6 cmp funcs
Victor Julien [Tue, 9 Jan 2024 19:18:21 +0000 (20:18 +0100)]
detect/threshold: minor rate filter cleanup
Victor Julien [Tue, 9 Jan 2024 15:39:22 +0000 (16:39 +0100)]
detect/threshold: minor code cleanup
Packet pointer is not used during allocation.
Victor Julien [Tue, 9 Jan 2024 15:10:30 +0000 (16:10 +0100)]
detect/threshold: minor cleanup
Victor Julien [Mon, 11 Sep 2023 19:17:36 +0000 (21:17 +0200)]
detect/threshold: implement per thread cache
Thresholding often has 2 stages:
1. recording matches
2. appling an action, like suppress
E.g. with something like:
threshold:type limit, count 10, seconds 3600, track by_src;
the recording state is about counting 10 first hits for an IP,
then followed by the "suppress" state that might last an hour.
By_src/by_dst are expensive, as they do a host table lookup and lock
the host. If many threads require this access, lock contention becomes
a serious problem.
This patch adds a thread local cache to avoid the synchronization
overhead. When the threshold for a host enters the "apply" stage,
a thread local hash entry is added. This entry knows the expiry
time and the action to apply. This way the action can be applied
w/o the synchronization overhead.
A rbtree is used to handle expiration.
Implemented for IPv4.
Victor Julien [Wed, 13 Mar 2024 10:03:01 +0000 (11:03 +0100)]
detect: add ticket id to var related todos
Victor Julien [Wed, 13 Mar 2024 10:01:28 +0000 (11:01 +0100)]
detect/detection_filter: add support for track by_flow
Victor Julien [Fri, 8 Mar 2024 10:50:14 +0000 (11:50 +0100)]
doc: add thresholding by_flow
Victor Julien [Tue, 5 Mar 2024 09:03:15 +0000 (10:03 +0100)]
detect/content: fix wrong value for depth check
Limits propegation checked for DETECT_DEPTH as a content flag,
which appears to have worked by chance. After reshuffling the
keyword id's it no longer worked. This patch uses the proper
flag DETECT_CONTENT_DEPTH.
Victor Julien [Tue, 5 Mar 2024 09:02:53 +0000 (10:02 +0100)]
detect: group content inspect keyword id's
Victor Julien [Mon, 4 Mar 2024 11:53:35 +0000 (12:53 +0100)]
detect: group types used in traffic variables
Traffic variables (flowvars, flowbits, xbits, etc) use a smaller int for
their type than detection types. As a workaround make sure the values fit
in a uint8_t.
Victor Julien [Sat, 2 Mar 2024 06:58:30 +0000 (07:58 +0100)]
threshold: add by_flow support for global thresholds
Allow rate_filter and thresholds from the global config to specify
tracking "by_flow".
Victor Julien [Tue, 27 Feb 2024 10:06:47 +0000 (11:06 +0100)]
detect/threshold: implement tracking 'by_flow'
Add support for 'by_flow' track option. This allows using the various
threshold options in the context of a single flow.
Example:
alert tcp ... stream-event:pkt_broken_ack; \
threshold:type limit, track by_flow, count 1, seconds 3600;
The example would limit the number of alerts to once per hour for
packets triggering the 'pkt_broken_ack' stream event.
Implemented as a special "flowvar" holding the threshold entries. This
means no synchronization is required, making this a cheaper option
compared to the other trackers.
Ticket: #6822.
Victor Julien [Mon, 4 Mar 2024 11:29:24 +0000 (12:29 +0100)]
util/var: add comments explaining types
Victor Julien [Fri, 1 Mar 2024 12:30:09 +0000 (13:30 +0100)]
util/var: remove printf; add assert
Philippe Antoine [Mon, 17 Jun 2024 14:30:49 +0000 (16:30 +0200)]
http2: do not expand duplicate headers
Ticket: 7104
As this can cause a big mamory allocation due to the quadratic
nature of the HPACK compression.
Philippe Antoine [Thu, 25 Apr 2024 19:24:33 +0000 (21:24 +0200)]
modbus: abort flow parsing on flood
Ticket: 6987
Let's not spend more resources for a flow which is trying to
make us do it...
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