]>
git.ipfire.org Git - thirdparty/suricata.git/log
Victor Julien [Tue, 19 Apr 2022 05:33:39 +0000 (07:33 +0200)]
detect/frames: reduce severity of validation check
Jason Ish [Thu, 14 Apr 2022 18:35:57 +0000 (12:35 -0600)]
dependabot: monitor github actions
Jason Ish [Thu, 14 Apr 2022 19:16:55 +0000 (13:16 -0600)]
github-ci: set safe directory before reset
While the latest checkout action does set the "safe.directory"
parameter, it doesn't appear to stick for the following "git fetch", so
call this command again.
Jason Ish [Thu, 14 Apr 2022 18:34:47 +0000 (12:34 -0600)]
github-ci: pin checkout action to latest release
Philippe Antoine [Mon, 11 Apr 2022 19:29:33 +0000 (21:29 +0200)]
mqtt: fix consumed bytes computation for truncated msg
Ticket: 5268
Victor Julien [Wed, 13 Apr 2022 05:47:42 +0000 (07:47 +0200)]
detect/frame: get data using stream callback
Inspect only data that has already been consumed by the
app-layer parser. This allows for simpler progress tracking.
Victor Julien [Wed, 13 Apr 2022 05:42:56 +0000 (07:42 +0200)]
frame: introduce entry for getting stream data for frame
Victor Julien [Wed, 13 Apr 2022 05:42:09 +0000 (07:42 +0200)]
stream: make raw data handling more generally usable
Move raw detection logic out of main StreamReassembleRawDo() so that
it can be reused for other parts of the engine.
The caller now has to specify a right edge of the data.
Victor Julien [Tue, 12 Apr 2022 13:22:23 +0000 (15:22 +0200)]
stream: add offset to raw stream callback
This gives the called function to understand where it is in the
stream.
Victor Julien [Wed, 13 Apr 2022 12:00:37 +0000 (14:00 +0200)]
app-layer: disable stream app tracking on no parser
If protocol has no parser enabled or implemented, disable the app
progress tracking in the stream engine to reduce the workload in
the stream engine.
Philippe Antoine [Fri, 1 Apr 2022 15:55:33 +0000 (17:55 +0200)]
source: pcap timestamp microsecond consistency
That is it should be less than 1 000 000.
Have the same for fuzz targets where the bug came from.
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=44177
Philippe Antoine [Sat, 2 Apr 2022 19:16:53 +0000 (21:16 +0200)]
dcerpc: store consumed_bytes as i32
As it can grow bigger than u16
Philippe Antoine [Fri, 8 Apr 2022 06:49:18 +0000 (08:49 +0200)]
ike: fix integer underflow in parse_proposal
By not restricting a usize to i16
Philippe Antoine [Fri, 8 Apr 2022 13:15:23 +0000 (15:15 +0200)]
detect: config checks alstate before getting tx
Ticket: 4972
As is done in detect-lua-extensions.
We can have a flow with alproto unknown, no state, and therefore
cannot run AppLayerParserGetTx which could try to run a NULL
function
Philippe Antoine [Mon, 5 Jul 2021 15:05:10 +0000 (17:05 +0200)]
detect: faster linked list copy
In DetectAppLayerInspectEngineCopyListToDetectCtx
Avoid quadratic complexity by remembering last element
of the linked list we are inserting into
Philippe Antoine [Thu, 14 Apr 2022 12:44:20 +0000 (14:44 +0200)]
flow: fix integer warnings
Ticket: 4516
Philippe Antoine [Thu, 14 Apr 2022 12:41:45 +0000 (14:41 +0200)]
host/ippair: fix integer warnings
Ticket: 4516
Philippe Antoine [Thu, 14 Apr 2022 12:36:57 +0000 (14:36 +0200)]
util: using size_t len for byte utils
Ticket: 4516
Like ByteExtractStringUint64, because most of their inputs come
from strlen which returns a size_t
Philippe Antoine [Tue, 18 Jan 2022 10:19:21 +0000 (11:19 +0100)]
app-layer: fix integer warnings
Ticket: 4516
Victor Julien [Fri, 25 Feb 2022 14:40:41 +0000 (15:40 +0100)]
debug: support %m output format again
Use thread local storage to avoid the previous dead lock issues.
Victor Julien [Fri, 4 Mar 2022 13:31:24 +0000 (14:31 +0100)]
threading: simplify thread name logic
Victor Julien [Mon, 11 Apr 2022 15:25:47 +0000 (17:25 +0200)]
rust: update regex & memchr dependencies
Bug: #5260.
Victor Julien [Mon, 11 Apr 2022 10:33:43 +0000 (12:33 +0200)]
smb/ntlmssp: add stricter len/offset validation
Philippe Antoine [Fri, 8 Apr 2022 09:23:09 +0000 (11:23 +0200)]
smb: prevents integer underflow
Ticket: 5246
If msg_id is 0, we cannot find the previous request
Philippe Antoine [Mon, 4 Apr 2022 20:51:01 +0000 (22:51 +0200)]
smb: ntlmssp domain_blob_offset underflow check
Ticket: 5246
Philippe Antoine [Mon, 4 Apr 2022 20:45:56 +0000 (22:45 +0200)]
smb: check on param parsing
Ticket: 5246
so as not to overflow u16
Victor Julien [Sun, 10 Apr 2022 18:22:00 +0000 (20:22 +0200)]
frames: remove dead condition in eof check
Victor Julien [Sun, 10 Apr 2022 18:21:18 +0000 (20:21 +0200)]
app-layer: don't switch dir if proto already known
Victor Julien [Sun, 10 Apr 2022 13:46:38 +0000 (15:46 +0200)]
fuzz/sigpcap_aware: set pkt_src to wire
Avoids an assert if DEBUG is compiled in:
fuzz_sigpcap_aware: source-pcap-file.c:420: TmEcode DecodePcapFile(ThreadVars *, Packet *, void *): Assertion `!(p->pkt_src != PKT_SRC_WIRE && p->pkt_src != PKT_SRC_FFR)' failed.
Victor Julien [Sun, 10 Apr 2022 13:45:36 +0000 (15:45 +0200)]
detect/frame: improve assert accuracy
Handle frames of unknown size correctly.
Bug: #5226.
Victor Julien [Sat, 9 Apr 2022 15:24:33 +0000 (17:24 +0200)]
eve: allow /dev/null in threaded mode
Avoids creation of actual files called /dev/null.N which take
up space in /dev/ which lives in memory.
Victor Julien [Sat, 9 Apr 2022 08:56:04 +0000 (10:56 +0200)]
flow: cleanup locking debug leftovers
Victor Julien [Fri, 8 Apr 2022 20:06:09 +0000 (22:06 +0200)]
flow: fix and simplify locking
Since:
9551cd053579 ("threading: don't pass locked flow between threads")
`MoveToWorkQueue()` unconditionally unlocks the flow. This allows simpler
locking handling, including of tcp reuse flows.
The simpler logic also fixes a scenario where TCP reuse flows got "unlocked"
twice, once in `FlowGetFlowFromHash()` and once in `MoveToWorkQueue()`.
Bug: #5248.
Coverity:
1494354 .
Sascha Steinbiss [Fri, 11 Mar 2022 18:05:03 +0000 (19:05 +0100)]
mqtt: remove redundant "where" keyword
Sascha Steinbiss [Tue, 8 Mar 2022 22:23:47 +0000 (23:23 +0100)]
mqtt: make some functions non-public
Sascha Steinbiss [Tue, 8 Mar 2022 22:19:22 +0000 (23:19 +0100)]
mqtt: rustfmt
Sascha Steinbiss [Tue, 8 Mar 2022 22:18:36 +0000 (23:18 +0100)]
mqtt: raise event on parse error
Sascha Steinbiss [Tue, 8 Mar 2022 22:15:05 +0000 (23:15 +0100)]
mqtt: ensure we do not request extra data after buffering
This addresses Redmine bug #5018 by ensuring that the parser
never requests additional data via the Incomplete error, but to
raise an actual parse error, since it is supposed to have all
the data as specified by the message length in the header already.
Philippe Antoine [Tue, 18 Jan 2022 09:56:48 +0000 (10:56 +0100)]
output: fix integer warnings
Ticket: 4516
Philippe Antoine [Fri, 25 Mar 2022 14:03:12 +0000 (15:03 +0100)]
ssh: install app-layer events rules
Philippe Antoine [Wed, 30 Mar 2022 13:24:32 +0000 (15:24 +0200)]
detect: not an iponly signature if it needs app-layer
Ticket: 4972
This may happen with `config` keyword which is postmatch,
but may require a transaction
William Harding [Tue, 29 Mar 2022 18:53:46 +0000 (14:53 -0400)]
doc/userguide: sphinx syntax correction
Juliana Fajardini [Fri, 28 Jan 2022 21:20:31 +0000 (21:20 +0000)]
unittests: alloc Packet with PacketGetFromAlloc
Some unittests used SCMalloc for allocating new Packet the unittests.
While this is valid, it leads to segmentation faults when we move to
dynamic allocation of the maximum alerts allowed to be triggered by a
single packet.
This massive patch uses PacketGetFromAlloc, which initializes a Packet
in such a way that any dynamic allocated structures within will also be
initialized.
Related to
Task #4207
Shivani Bhardwaj [Fri, 28 Jan 2022 20:17:17 +0000 (01:47 +0530)]
detect/dataset: fix space condition in rule lang
If there is a space following a keyword that does not expect a value,
the rule fails to load due to improper value evaluation.
e.g. Space after "set" command
alert http any any -> any any (http.user_agent; dataset:set ,ua-seen,type string,save datasets.csv; sid:1;)
gives error
[ERRCODE: SC_ERR_UNKNOWN_VALUE(129)] - dataset action "" is not supported.
Fix this by handling values correctly for such cases.
Shivani Bhardwaj [Fri, 28 Jan 2022 13:43:04 +0000 (19:13 +0530)]
detect/dataset: cleanup dead code
Victor Julien [Tue, 5 Apr 2022 11:50:30 +0000 (13:50 +0200)]
detect/urilen: don't pass null pointer to pcre2 free
Bug #5228.
Victor Julien [Mon, 4 Apr 2022 11:30:19 +0000 (13:30 +0200)]
detect/mpm: initialization micro optimization
Victor Julien [Sat, 2 Apr 2022 20:25:17 +0000 (22:25 +0200)]
detect: pattern id assignment through hash table
Only consider active part of the pattern for mpm (so consider chop).
Move data structure to hash list table over the custom array logic.
Victor Julien [Fri, 1 Apr 2022 13:00:05 +0000 (15:00 +0200)]
detect: keyword list to hash to improve perf
Since the switch to pcre2 this was much more heavily used, which
would lead to measurable time spent in list handling.
Victor Julien [Fri, 1 Apr 2022 10:22:51 +0000 (12:22 +0200)]
detect: optimize mpm-engine setup
Instead of a loop over the rules in a group *per engine* do a single
loop in which all the engines are prepared in parallel.
Victor Julien [Thu, 31 Mar 2022 16:00:57 +0000 (18:00 +0200)]
detect: initialization optimization
A lot of time was spent in `SigMatchListSMBelongsTo` for the `mpm_sm`.
Optimize this by keeping the value at hand during Signature parsing and
detection engine setup.
Victor Julien [Sat, 2 Apr 2022 08:51:42 +0000 (10:51 +0200)]
hash: constify data input
Victor Julien [Sat, 2 Apr 2022 20:02:41 +0000 (22:02 +0200)]
detect/analyzer: support frames in pattern dump
Victor Julien [Sat, 2 Apr 2022 13:37:16 +0000 (15:37 +0200)]
detect/filemagic: don't pass unused pointer
Arne Welzel [Sat, 12 Feb 2022 16:49:07 +0000 (17:49 +0100)]
flow-manager: fix off-by-one in flow_hash row allocation
The current code doesn't cover all rows when more than one flow manager is
used. It leaves a single row between ftd->max and ftd->min of the next
manager orphaned. As an example:
hash_size=1000
flowmgr_number=3
range=333
instance ftd->min ftd->max
0 0 333
1 334 666
2 667 1000
Rows not covered: 333, 666
Victor Julien [Thu, 24 Mar 2022 15:44:10 +0000 (16:44 +0100)]
http: fix reassembled range file accounting
Victor Julien [Fri, 25 Mar 2022 13:38:40 +0000 (14:38 +0100)]
http2: fix file accounting for ranged files
Increment files_opened for tx that 'gets' reassembled ranged file
Victor Julien [Fri, 25 Mar 2022 10:17:23 +0000 (11:17 +0100)]
smb1: apply close to direction
Instead of closing files in both direction when receiving a close request,
close only toserver files for the request and close toclient on receiving
a response.
Victor Julien [Fri, 25 Mar 2022 09:36:03 +0000 (10:36 +0100)]
smb: convert 'close' parser to function
Victor Julien [Thu, 24 Mar 2022 15:53:31 +0000 (16:53 +0100)]
files: open/log debug validation bugon
Meant to find more cases where there is a mismatch.
Juliana Fajardini [Tue, 15 Feb 2022 13:06:50 +0000 (13:06 +0000)]
devguide: update readme
Use it to explain how to go about the sequence diagram images
(generation, updating, what is mscgen etc).
Also remove portion that referred to Sphinx builds, as these don't make
sense now.
Juliana Fajardini [Wed, 9 Feb 2022 19:46:24 +0000 (19:46 +0000)]
userguide: dynamically determine copyright date
This uses the date of doc generation to determine the copyright date
for the trailing date. Based on Jeff Lucovsky solution.
Juliana Fajardini [Mon, 14 Feb 2022 18:29:00 +0000 (18:29 +0000)]
devguide: drop use of mscgen script in builds/make
Currently, it seems easier to upload the diagram images to git than to
try to make the image generation script work with out of the tree builds
and other corner cases.
This means, however, that one must activelly remember to update msc
diagram files, run the script and re-add new png files, if those ever
need to be updated. To raise awareness to that, a watermark was added
to the diagram images.
Also removed configuration steps that added mscgen as dependency
(locally and for workflow builds and readthedocs).
Juliana Fajardini [Fri, 18 Feb 2022 16:28:27 +0000 (16:28 +0000)]
devguide: add watermark to sequence diagrams
Make it more evident that the sequence diagrams in the transactions
page are generated with Mscgen
Juliana Fajardini [Thu, 16 Dec 2021 18:40:41 +0000 (18:40 +0000)]
devguide: move into userguide as last chapter
Moved devguide dir into userguide dir.
Since the devguide is now incorporated as the last chapter of the
userguide, removed build and configuration files from the devguide
dir, as these are no longer needed.
Task #4909
Juliana Fajardini [Wed, 22 Dec 2021 17:57:25 +0000 (17:57 +0000)]
devguide: clarify cargo test usage for modules
The documentation was showing an invalid path for running single tests.
Philippe Antoine [Tue, 30 Nov 2021 14:06:38 +0000 (15:06 +0100)]
http: move xff logging to alert object
Ticket: 4860
instead of root field
Philippe Antoine [Thu, 10 Mar 2022 14:09:57 +0000 (15:09 +0100)]
ssl: first pass limit when allocating buffer for certificates
With this check, on the first packet of a certificate presenting
a length of 16Mbytes, we only allocate up to 65Kb
When we get to the point where need more than 65Kb, we realloc
to the true size.
With this check, it makes it more expensive for an attacket to use
this allocation as a way to trigger ressource exhaustion...
Philippe Antoine [Tue, 22 Feb 2022 12:10:59 +0000 (13:10 +0100)]
smtp: check if there is a transaction to close
Ticket: 4948
When parsing the response for starttls
Philippe Antoine [Tue, 15 Mar 2022 19:59:28 +0000 (20:59 +0100)]
tmqh: fix possible null dereference
Coverity ID:
1502953
As we check just on the next line my_pool against NULL, we should
not dereference it, even for debug validation
Philippe Antoine [Tue, 15 Mar 2022 19:55:09 +0000 (20:55 +0100)]
detect: remove dead code about xbits keyword
Philippe Antoine [Thu, 10 Mar 2022 14:26:48 +0000 (15:26 +0100)]
log: prevents use of uninitialized variable
Even if the code seems unreachable for now
Jason Ish [Tue, 22 Mar 2022 15:46:45 +0000 (09:46 -0600)]
detect-content: error on single char hex pairs
Fix parsing of content like "|aa b cc|" which was parsed as "|aa bc|"
without error or warning. This will now fail out, requiring all hex
values to be 2 chars.
Ticket #5201
Victor Julien [Sun, 20 Mar 2022 15:14:10 +0000 (16:14 +0100)]
streaming: remove unused 'auto slide' support
Add debug validation checks for "impossible" conditions.
Philippe Antoine [Tue, 8 Mar 2022 11:50:16 +0000 (12:50 +0100)]
detect: makes config keyword really require a flow
Ticket: 4972
Completes commit
c3a220647
DETECT_CONFIG is added as DETECT_SM_LIST_POSTMATCH and not
as DETECT_SM_LIST_MATCH as other keywords handled in SignatureCreateMask
Modupe Falodun [Fri, 4 Mar 2022 13:10:54 +0000 (14:10 +0100)]
detect-pcre: remove unittests
These tests are reimplemented in Suricata-Verify
Task: 4911
Sam Muhammed [Wed, 23 Feb 2022 12:15:00 +0000 (14:15 +0200)]
nfs: Implement frames
Feature #4872
Frames:
- RPC Frames: Generic over TCP/UDP
- rpc.pdu
- rpc.hdr
- rpc.data
- rpc.creds -- for rpc calls
- NFSv2, NFSv3
- nfs.pdu
- nfs.status -- for nfs responses
- NFSv4 Only Frames
- nfs4.pdu
- nfs4.hdr
- nfs4.ops -- for compound request/response operations
- nfs4.status -- for nfs4 responses
RPC tcp/udp frames created with separate registeration functions e.g:
add_rpc_tcp_tc_frames()
add_rpc_udp_tc_frames()
Sam Muhammed [Mon, 28 Feb 2022 11:44:45 +0000 (13:44 +0200)]
rpc: Improve rpc_record struct
Add creds_len field to rpc_record
needed for rpc.creds frame length calculation
Sam Muhammed [Sun, 20 Feb 2022 17:46:03 +0000 (19:46 +0200)]
rust/nfs4: Add NFSPROC4_DESTROY_CLIENTID op parsers
Sam Muhammed [Sun, 20 Feb 2022 17:25:02 +0000 (19:25 +0200)]
rust/nfs4: Add NFSPROC4_DESTROY_SESSION op parsers
Also add respective request unittest
test_nfs4_request_destroy_session()
Sam Muhammed [Sun, 20 Feb 2022 17:10:41 +0000 (19:10 +0200)]
rust/nfs4: Add NFSPROC4_LAYOUTRETURN op parsers
Also add respective request unittest
test_nfs4_request_layoutreturn()
Sam Muhammed [Sun, 20 Feb 2022 16:40:11 +0000 (18:40 +0200)]
rust/nfs4: Add NFSPROC4_GETDEVINFO op parsers
Also add respective response/request unittests
test_nfs4_response_getdevinfo()
test_nfs4_request_getdevinfo()
Sam Muhammed [Sun, 20 Feb 2022 15:45:14 +0000 (17:45 +0200)]
rust/nfs4: Add NFSPROC4_LAYOUTGET op parsers
Also add respective response/request unittests
test_nfs4_response_layoutget()
test_nfs4_request_layoutget()
Sam Muhammed [Sun, 20 Feb 2022 12:47:08 +0000 (14:47 +0200)]
rust/nfs4: Add NFSPROC4_SECINFO_NO_NAME op parsers
Sam Muhammed [Sun, 20 Feb 2022 12:27:17 +0000 (14:27 +0200)]
rust/nfs4: Add NFSPROC4_RECLAIM_COMPLETE op parsers
Sam Muhammed [Sun, 20 Feb 2022 12:15:29 +0000 (14:15 +0200)]
rust/nfs4: Add NFSPROC4_CREATE_SESSION op parsers
Also add respective response/request unittests
test_nfs4_request_create_session()
test_nfs4_response_create_session()
Sam Muhammed [Sun, 20 Feb 2022 11:28:12 +0000 (13:28 +0200)]
rust/nfs4: Add NFSPROC4_EXCHANGEID response parser
Also add test_nfs4_response_exchangeid() unittest
Sam Muhammed [Sun, 20 Feb 2022 10:33:44 +0000 (12:33 +0200)]
rust/nfs4: improve NFSPROC4_OPEN op parser
Improve nfs4_res_open() parser to reflect other file-delegation types
Reflect the changes on test_nfs4_response_open() unittest
Philippe Antoine [Tue, 18 Jan 2022 09:50:46 +0000 (10:50 +0100)]
fuzz: fix integer warnings
Ticket: 4516
Philippe Antoine [Tue, 18 Jan 2022 09:43:56 +0000 (10:43 +0100)]
utils: fix integer warnings in r files
Ticket: 4516
Philippe Antoine [Mon, 17 Jan 2022 21:37:21 +0000 (22:37 +0100)]
stream-tcp: fix integer warnings
Ticket: 4516
Philippe Antoine [Mon, 17 Jan 2022 21:22:49 +0000 (22:22 +0100)]
util: fix int warnings in tm threads
Ticket: 4516
Philippe Antoine [Fri, 14 Jan 2022 12:15:57 +0000 (13:15 +0100)]
util: fix int warnings in unit tests
Ticket: 4516
Philippe Antoine [Fri, 14 Jan 2022 09:05:54 +0000 (10:05 +0100)]
util: fix int warnings
Ticket: 4516
Jason Ish [Mon, 28 Feb 2022 21:12:37 +0000 (15:12 -0600)]
smb: rules for messages in the wrong direction
Jason Ish [Fri, 18 Feb 2022 04:57:30 +0000 (22:57 -0600)]
smb: handle records in the wrong direction
If an SMB record is seen in the wrong direction, set an event on the PDU
frame and don't process the record in the state.
No error is returned, so the next record will be processed.
Jason Ish [Fri, 18 Feb 2022 17:43:17 +0000 (11:43 -0600)]
smb: expose smb1 request/reply flags with a method
Adds `.is_request()` and `.is_reply()` to check if a SMB record flags
say the message is a request or a reply.
Jason Ish [Thu, 17 Feb 2022 22:52:44 +0000 (16:52 -0600)]
smb: fix smb2 header flag parsing
The bits were being parsed in the order they're displayed in Wireshark,
rather than the order they were being seen on the wire, resulting in
direction and async being 0 more often than they should be.
Instead of bits, take the 4 bytes as an le_u32 and just use bit masks to
extract what we need into a struct, I think its easier to reason about
this way when comparing to the Microsoft documentation.
Philippe Antoine [Mon, 17 Jan 2022 13:47:48 +0000 (14:47 +0100)]
detect: only apply ConfigApplyTx with app-layers
Ticket: 4972
Otherwise, it makes no sense to look for a tx...
Juliana Fajardini [Thu, 24 Feb 2022 16:04:36 +0000 (16:04 +0000)]
applayer/frame: remove output from GetFrame funcs
As these functions can be probed, having output there results in
misleading output.