]>
git.ipfire.org Git - thirdparty/suricata.git/log
Jason Ish [Fri, 20 Aug 2021 17:44:17 +0000 (11:44 -0600)]
rust(lint): suppress clippy lints that we should fix
Suppress all remaining clippy lints that we trip. This can be
fixed on a per-lint basis.
Jason Ish [Fri, 20 Aug 2021 17:41:40 +0000 (11:41 -0600)]
rust(lint): remove manual implement of map method
Using `if let` expressions in these cases is better expressed
by the map method, and considered idiomatic Rust for this usage.
Jason Ish [Fri, 20 Aug 2021 17:38:31 +0000 (11:38 -0600)]
rust(lint): map the error instead of using or_else
This is the preffered style and easier to understand the meaning
of the code.
Jason Ish [Fri, 20 Aug 2021 17:31:48 +0000 (11:31 -0600)]
rust(lint): replace push_str of single char to push(<char>)
Jason Ish [Fri, 20 Aug 2021 17:31:03 +0000 (11:31 -0600)]
rust(lint): fix some usages of references
- ref is discouraged for top level variables
- the other borrow is not required
Jason Ish [Fri, 20 Aug 2021 17:29:37 +0000 (11:29 -0600)]
rust(lint): replace checked_mul with saturating_mul
When defaulting checked_mul to u64::max, Rust has a method
that does the same thing called saturating_mul.
Jason Ish [Fri, 20 Aug 2021 17:20:49 +0000 (11:20 -0600)]
rust(lint): removed unused unit () return
This is code that is not needed and is a bit confusing to see.
Jason Ish [Fri, 20 Aug 2021 17:17:59 +0000 (11:17 -0600)]
rust(lint): remove extra parens around bitwise or
This is a readability fix, as on first look they almost look
like a Rust tuple.
Jason Ish [Fri, 20 Aug 2021 17:11:23 +0000 (11:11 -0600)]
rust(lint): remove useless conversions and clones
These add complexity and may not be optimized out by the compiler.
Jason Ish [Fri, 20 Aug 2021 17:03:45 +0000 (11:03 -0600)]
rust(lint): remove useless format calls
In these simple cases to_string() is recommended and likely
performs better as the formatter is not called.
Jason Ish [Fri, 20 Aug 2021 16:59:41 +0000 (10:59 -0600)]
rust(lint): don't use unwrap_or for function calls
Calling a function in unwrap_or causes that function to always
be called even when not needed. Instead use unwrap_or_else with
a closure which will only be called when needed.
Jason Ish [Fri, 20 Aug 2021 16:51:46 +0000 (10:51 -0600)]
rust(lint): fix redundant closures
This lint checks for a closure where a function can be directly
supplied. Runtime performance is unchanged, but this makes
less work for the compiler.
Jason Ish [Fri, 20 Aug 2021 16:22:30 +0000 (10:22 -0600)]
rust(lint): remove needless borrows
These are needless borrows (references) as the item is already
a reference.
Jason Ish [Mon, 26 Jul 2021 21:53:44 +0000 (15:53 -0600)]
rust: functions that reference raw pointers are unsafe
Based on the Rust clippy lint that recommends that any public
function that dereferences a raw pointer, mark all FFI functions
that reference raw pointers with build_slice and cast_pointer
as unsafe.
This commits starts by removing the unsafe wrapper inside
the build_slice and cast_pointer macros then marks all
functions that use these macros as unsafe.
Then fix all not_unsafe_ptr_arg_deref warnings from clippy.
Fixes clippy lint:
https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref
Jason Ish [Mon, 26 Jul 2021 19:25:17 +0000 (13:25 -0600)]
rust: remove all usage of transmute
All cases of our transmute can be replaced with more idiomatic
solutions and do no require the power of transmute.
When returning an object to C for life-time management, use
Box::into_raw to convert the boxed object to pointer and use
Box::from_raw to convert back.
For cases where we're just returning a pointer to Rust managed
data, use a cast.
KevinWang [Fri, 6 Aug 2021 11:39:04 +0000 (19:39 +0800)]
output/redis: Fix possible segv
Philippe Antoine [Thu, 22 Jul 2021 16:54:16 +0000 (18:54 +0200)]
qa: use time on fuzz targets being run on corpus
Juliana Fajardini [Tue, 10 Aug 2021 16:28:55 +0000 (17:28 +0100)]
stream-tcp-reassemble: fix typo, updt copyright yr
Juliana Fajardini [Tue, 10 Aug 2021 16:27:32 +0000 (17:27 +0100)]
stream-tcp-reassemble: fix ConfGetBool unc'kd call
Juliana Fajardini [Tue, 10 Aug 2021 16:17:19 +0000 (17:17 +0100)]
stream-tcp: fix typos, update copyright year
Juliana Fajardini [Tue, 10 Aug 2021 15:31:17 +0000 (16:31 +0100)]
stream-tcp: fix ConfGetBool unchecked call
Juliana Fajardini [Tue, 10 Aug 2021 15:29:31 +0000 (16:29 +0100)]
util-napatech: fix typos, update copyright year
Juliana Fajardini [Tue, 10 Aug 2021 15:03:50 +0000 (16:03 +0100)]
util-napatech: fix ConfGetBool unchecked call
Juliana Fajardini [Tue, 10 Aug 2021 14:57:48 +0000 (15:57 +0100)]
util-debug: fix unchecked ConfGetBool call
Victor Julien [Fri, 6 Aug 2021 11:16:13 +0000 (13:16 +0200)]
nfs: minor code cleanup
Victor Julien [Fri, 6 Aug 2021 11:15:58 +0000 (13:15 +0200)]
smb: minor formatting fixup
Victor Julien [Fri, 6 Aug 2021 11:15:43 +0000 (13:15 +0200)]
smb: minor code cleanup
Shivani Bhardwaj [Thu, 8 Jul 2021 12:12:07 +0000 (17:42 +0530)]
smtp: fix clang fmt
Shivani Bhardwaj [Fri, 25 Jun 2021 11:42:22 +0000 (17:12 +0530)]
nfs: fix comment
Shivani Bhardwaj [Thu, 24 Jun 2021 10:42:55 +0000 (16:12 +0530)]
nfs: Add rust registration function
Get rid of the C glue code and move registration completely to Rust.
Shivani Bhardwaj [Sat, 26 Jun 2021 11:13:35 +0000 (16:43 +0530)]
nfs: add missing code from rust impl of fns
Shivani Bhardwaj [Fri, 21 May 2021 10:01:16 +0000 (15:31 +0530)]
nfs: Change fn sign as per rust registration requirement
Registering parsers in Rust requires signatures to be a certain way and
compatible with C. Change signatures of all the functions.
Probe fn has also been changed to return AppProto as required by the new
fn signature.
Shivani Bhardwaj [Sat, 19 Jun 2021 07:53:14 +0000 (13:23 +0530)]
smb: Add rust registration function
Get rid of the C glue code and move registration completely to Rust.
Shivani Bhardwaj [Tue, 29 Jun 2021 09:30:07 +0000 (15:00 +0530)]
smb: add missing code from rust impl of fns
Shivani Bhardwaj [Fri, 18 Jun 2021 11:40:37 +0000 (17:10 +0530)]
smb: Change fn sign as per rust registration requirement
Registering parsers in Rust requires signatures to be a certain way and
compatible with C. Change signatures of all the functions.
Shivani Bhardwaj [Mon, 28 Jun 2021 11:55:55 +0000 (17:25 +0530)]
smb: add constants
Shivani Bhardwaj [Mon, 21 Jun 2021 11:06:42 +0000 (16:36 +0530)]
rust/core: Add flow flags
Jason Ish [Fri, 14 May 2021 15:29:54 +0000 (09:29 -0600)]
flow: provide flags accessor function
Add an accessor function for flow flags. To be used by Rust where
the flow struct is an opaque data type.
Shivani Bhardwaj [Thu, 6 May 2021 12:01:04 +0000 (17:31 +0530)]
rust/applayer: add more externs
Victor Julien [Mon, 4 Jan 2021 21:10:08 +0000 (22:10 +0100)]
stream: check if ACK packet is outdated
Outdated packets are ACK packets w/o data that have an ACK value
lower than our last_ack and also don't have an SACK records that
are new.
This can happen when some packets come in later than others (possibly
due to different paths taken).
Victor Julien [Fri, 8 Jan 2021 07:59:29 +0000 (08:59 +0100)]
stream/sack: clean up includes
Victor Julien [Mon, 4 Jan 2021 21:10:58 +0000 (22:10 +0100)]
stream/sack: minor debug improvements
Victor Julien [Thu, 31 Dec 2020 09:53:08 +0000 (10:53 +0100)]
stream: minor debug additions
Shivani Bhardwaj [Wed, 24 Feb 2021 08:05:37 +0000 (13:35 +0530)]
doc/dcerpc: add proto keywords
Sascha Steinbiss [Sat, 26 Jun 2021 11:40:09 +0000 (13:40 +0200)]
mqtt: enable in config and remove misleading comment
Victor Julien [Thu, 1 Jul 2021 14:31:35 +0000 (16:31 +0200)]
stream: update memcaps in code to match config
Philippe Antoine [Wed, 9 Jun 2021 10:09:23 +0000 (12:09 +0200)]
app-layer/pd: review bailout conditions
To take TCP window into account
And to actually bail out if we received too much data
where the limit is configured by stream.reassembly.depth
Victor Julien [Wed, 21 Apr 2021 13:20:49 +0000 (15:20 +0200)]
app-layer/pd: only consider actual available data
For size limit checks consider only available data at the stream start
and before any GAPS.
The old check would consider too much data if there were temporary gaps,
like when a data packet was in-window but (far) ahead of the expected
segment.
Victor Julien [Fri, 4 Jun 2021 13:31:33 +0000 (15:31 +0200)]
streaming/buffer: account sbb data size
When tracking data track the size of the blocks so that in case
of gaps we can still know how much data we hold.
Juliana Fajardini [Tue, 29 Jun 2021 21:05:21 +0000 (22:05 +0100)]
detect/iprep: convert to FAIL/PASS API
Philippe Antoine [Mon, 21 Jun 2021 07:57:09 +0000 (09:57 +0200)]
modbus: do not claim to handle gaps
showipintbri [Thu, 10 Jun 2021 21:32:34 +0000 (17:32 -0400)]
doc: Grammar Correction
Shivani Bhardwaj [Mon, 21 Jun 2021 18:35:06 +0000 (00:05 +0530)]
counters: only print alerts if stats are enabled
Juliana Fajardini [Mon, 21 Jun 2021 09:50:04 +0000 (10:50 +0100)]
detect: fix typos and update copyright year
Juliana Fajardini [Thu, 17 Jun 2021 16:18:09 +0000 (17:18 +0100)]
detect: fix bug where rule without sid is accepted
Before, if Suricata parsed a rule without a 'sid' option, instead of
failing that rule, the rule was parsed and attributed a sid 0.
Changes to:
detect-parse:
- add logic to filter out rules without sid;
- change unittest which didn't have a sid, but used to pass.
detect-sid: add unittest for rules without sid or with sid: 0
Philippe Antoine [Mon, 21 Jun 2021 08:04:10 +0000 (10:04 +0200)]
fuzz: only build fuzz_sigpcap_aware if asked
With the other fuzz targets, and do not build it if fuzzpcap
is available but we did not want to build the fuzz targets
Sascha Steinbiss [Tue, 22 Jun 2021 07:33:24 +0000 (09:33 +0200)]
rust: fix warnings with nightly
Eric Leblond [Fri, 28 May 2021 10:19:45 +0000 (12:19 +0200)]
stream/tcp: limit ACK validation
Only limit ACK value validation for packet where the ACK bit is
set.
Eric Leblond [Fri, 28 May 2021 10:19:38 +0000 (12:19 +0200)]
stream/tcp: don't reject on bad ack
Not using a packet for the streaming analysis when a non zero
ACK value and ACK bit was unset was leading to evasion as it was
possible to start a session with a SYN packet with a non zero ACK
value to see the full TCP stream to escape all stream and application
layer detection.
This addresses CVE-2021-35063.
Fixes: fa692df37 ("stream: reject broken ACK packets")
Ticket: #4504.
Eric Leblond [Fri, 28 May 2021 10:19:19 +0000 (12:19 +0200)]
stream/tcp: update ack handling logic
Only update the ack value of a session for regular packets when
the ACK bit is set.
Philippe Antoine [Tue, 9 Mar 2021 20:00:36 +0000 (21:00 +0100)]
dns: improve probing parser
Checks opcode is valid
Checks additional_rr do not exceed message length
Better logic for incomplete cases
Victor Julien [Tue, 15 Jun 2021 13:14:55 +0000 (15:14 +0200)]
detect/files: fix buffer tracking with multiple files
Victor Julien [Mon, 21 Jun 2021 19:10:55 +0000 (21:10 +0200)]
mqtt: move sub/unsub limits into app-layer config
Sascha Steinbiss [Mon, 10 May 2021 12:54:47 +0000 (14:54 +0200)]
detect/mqtt: add topic inspection limit
We add a new 'mqtt.(un)subscribe-topic-match-limit' option
to allow a user to specify the maximum number of topics in
a MQTT SUBSCRIBE or UNSUBSCRIBE message to be evaluated
in detection.
Philippe Antoine [Thu, 22 Apr 2021 08:28:15 +0000 (10:28 +0200)]
smtp: null terminate before calling strtoul
by copying in a temporary buffer
as is done in ByteExtractString
Philippe Antoine [Thu, 29 Apr 2021 09:57:15 +0000 (11:57 +0200)]
swf: right input length for decompression
Philippe Antoine [Mon, 12 Apr 2021 14:56:33 +0000 (16:56 +0200)]
dcerpc: handles bigger inputs than 2^16
By comparing integers with the largest size
Philippe Antoine [Thu, 6 May 2021 07:25:49 +0000 (09:25 +0200)]
detect: use u32 for InspectionBufferMultipleForList
So that we do not have an endless loop casting index to
u16 and having more than 65536 buffers in one transaction
Changes for all protocols, even ones where it is impossible
to have such a pattern, so as to avoid bad pattern copy/paste
in the future
Victor Julien [Thu, 13 May 2021 06:06:11 +0000 (08:06 +0200)]
detect: set event if max inspect buffers exceeded
If a parser exceeds 1024 buffers we stop processing them and
set a detect event instead. This is to avoid parser bugs as well as
crafted bad traffic leading to resources starvation due to excessive
loops.
Victor Julien [Thu, 13 May 2021 05:50:12 +0000 (07:50 +0200)]
detect: fix multi inspect buffer issue; clean up
Fix multi inspect buffer API causing cleanup logic in the single
inspect buffer paths. This could lead to a buffer overrun in the
"to clear" logic.
Multi buffers now use InspectionBufferSetupMulti instead of
InspectionBuffer. This is enforced by a check in debug validation.
Simplify the multi inspect buffer setup code and update the callers.
Victor Julien [Fri, 14 May 2021 05:53:55 +0000 (07:53 +0200)]
detect: reformat events table
Philippe Antoine [Tue, 16 Mar 2021 12:07:16 +0000 (13:07 +0100)]
nfs: improve probing parser
Checks credentials flavor is known
Philippe Antoine [Tue, 9 Mar 2021 14:54:16 +0000 (15:54 +0100)]
enip: improve probing parser
Strict length for register sessions
NOP command must have options=0
Philippe Antoine [Fri, 11 Jun 2021 12:13:44 +0000 (14:13 +0200)]
config: fix null dereference in MacSetRegisterFlowStorage
Crash happens with
--set outputs.eve-json.types.files.force-magic=yes
Philippe Antoine [Mon, 31 May 2021 07:32:33 +0000 (09:32 +0200)]
modbus: use ascii character classes while parsin rule
As the rust regex crate is unicode aware, which was
not the case of the C version
Philippe Antoine [Thu, 6 May 2021 11:30:49 +0000 (13:30 +0200)]
rust: SCLogDebug is real nop when built as release
Before, even if there were no outputs, all the arguments
were evaluated, which could turn expensive
All variables which are used only in certain build configurations
are now prefixed by underscore to avoid warnings
Victor Julien [Thu, 10 Jun 2021 19:03:31 +0000 (21:03 +0200)]
http2: set Debug on structs
Victor Julien [Wed, 9 Jun 2021 07:23:07 +0000 (09:23 +0200)]
unittests: optimize RunmodeIsUnittests()
Victor Julien [Fri, 11 Jun 2021 07:52:11 +0000 (09:52 +0200)]
stream: packet to stream flags macro
Victor Julien [Fri, 11 Jun 2021 08:52:25 +0000 (10:52 +0200)]
packets: more detailed entry debug for detect/stream
Victor Julien [Mon, 7 Jun 2021 11:29:11 +0000 (13:29 +0200)]
files: construct with default, free on drop
Update protocols.
Victor Julien [Mon, 7 Jun 2021 09:34:31 +0000 (11:34 +0200)]
files: implement default support
Philippe Antoine [Fri, 4 Jun 2021 08:28:10 +0000 (10:28 +0200)]
rust: fix app-layer parser flags
This especially allows for SSH bypass to work
Jeff Lucovsky [Mon, 24 May 2021 12:03:02 +0000 (08:03 -0400)]
decode/vxlan: Delay var init until needed
This commit modifies the var initialization slightly until after
integrity checks have been performed.
Jeff Lucovsky [Mon, 24 May 2021 12:02:45 +0000 (08:02 -0400)]
general/typo: Correct typo
Jeff Lucovsky [Mon, 24 May 2021 12:01:58 +0000 (08:01 -0400)]
decode: Eliminate NULL pkt checks
This commit removes the NULL pkt check that each decoder performs as
this is a "can't happen" case.
Mats Klepsland [Thu, 27 May 2021 10:02:55 +0000 (12:02 +0200)]
thresholds: Fix buffer overflow in threshold context
th_entry is resized using ThresholdHashRealloc() every time a rule with
a threshold using by_rule tracking is added. The problem is that this is
done before the rules are reordered, so occasionally a rule with by_rule
tracking gets a higher signature number (after reordering) than the
number of th_entries allocated, causing Suricata to crash.
This commit fixes this by allocating th_entries after all the rules are
loaded and reordered.
Backtrace from core dump:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000000000051b381 in ThresholdHandlePacket (p=p@entry=0x7fb0080f3960, lookup_tsh=0x51, new_tsh=new_tsh@entry=0x7fb016c316e0, td=td@entry=0x14adedf0, sid=
9800979 , gid=1, pa=0x7fb0080f3b18)
at detect-engine-threshold.c:415
415>---- if (TIMEVAL_DIFF_SEC(p->ts, lookup_tsh->tv1) < td->seconds) {
Bug #4503.
Mats Klepsland [Thu, 27 May 2021 09:04:15 +0000 (11:04 +0200)]
thresholds: syntax fixes
Fix syntax of if statement in SigGetThresholdTypeIter()
Mats Klepsland [Thu, 27 May 2021 08:59:36 +0000 (10:59 +0200)]
thresholds: remove unneeded function argument
Remove packet pointer from SigGetThresholdTypeIter() as it is
unused.
Juliana Fajardini [Wed, 2 Jun 2021 12:29:09 +0000 (13:29 +0100)]
doc/eve: common fields and alert updates
- update examples for both
- change app_proto from alert field to common field, as
per JsonBuilder's changes.
Juliana Fajardini [Wed, 2 Jun 2021 12:16:46 +0000 (13:16 +0100)]
doc/eve: fix typos
Jeff Lucovsky [Wed, 2 Jun 2021 11:31:20 +0000 (07:31 -0400)]
output: Fix possible null deref
This commit corrects an issue uncovered by Coverity. See the redmine
issue for details: https://redmine.openinfosecfoundation.org/issues/4495
Philippe Antoine [Thu, 22 Apr 2021 07:41:30 +0000 (09:41 +0200)]
http2: only mimic http1 request if there is one
That may not be the case in midstream/async configurations
Jason Ish [Fri, 21 May 2021 17:06:47 +0000 (11:06 -0600)]
makefile: don't include the whole test/ directory
Including the whole directory results in .deps files ending up
in the distribution archive which shouldn't be there. Instead
we have to list all the test sources individually.
Jeff Lucovsky [Sat, 22 May 2021 13:41:14 +0000 (09:41 -0400)]
rust/default: Enable Default usage
Jeff Lucovsky [Sat, 22 May 2021 13:40:34 +0000 (09:40 -0400)]
nfs: Rework constructs to use Self/Default
Jeff Lucovsky [Sat, 22 May 2021 13:12:43 +0000 (09:12 -0400)]
dhcp: Rework constructs to use Self/Default
Jeff Lucovsky [Sat, 22 May 2021 13:03:58 +0000 (09:03 -0400)]
dcerpc: Rework constructs to use Self/Default
Jeff Lucovsky [Sat, 22 May 2021 12:33:44 +0000 (08:33 -0400)]
dns: Rework constructs to use Self/Default
Jeff Lucovsky [Fri, 21 May 2021 20:30:53 +0000 (16:30 -0400)]
smb: Rework constructs to use Self/Default
This commit modifies the constructors to use Self and/or
Default::default() when feasible