]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
4 years agorelease: 4.1.10; update changelog; require htp 0.5.36 master-4.1.x suricata-4.1.10
Victor Julien [Fri, 4 Dec 2020 06:57:51 +0000 (07:57 +0100)] 
release: 4.1.10; update changelog; require htp 0.5.36

4 years agossl: upgarde to uint32 for bytes_processed
Philippe Antoine [Thu, 15 Oct 2020 19:32:27 +0000 (21:32 +0200)] 
ssl: upgarde to uint32 for bytes_processed

as it can overflow, and is compared with uint32 such as
message_length and message_start and

(cherry picked from commit 48f0c612e39c66400fd2e1991899e0a025f6dede)

4 years agodnp3: regenerate object decoders
Jason Ish [Thu, 3 Dec 2020 22:18:45 +0000 (16:18 -0600)] 
dnp3: regenerate object decoders

4 years agoscript/dnp3-gen: update generator to reflect in tree changes
Jason Ish [Fri, 10 Jul 2020 19:19:35 +0000 (13:19 -0600)] 
script/dnp3-gen: update generator to reflect in tree changes

Some changes were made to the generated files instead of the
generator script. Update the script to generate what is
in the current state of the in-tree generated files.

(cherry picked from commit 4976afd96abf7b8dd49b444ee81df8091668f75e)

4 years agodnp3: avoids DOS by too long loop over null-sized objects
Philippe Antoine [Thu, 19 Nov 2020 13:30:27 +0000 (14:30 +0100)] 
dnp3: avoids DOS by too long loop over null-sized objects

(cherry picked from commit 15980af7de4043bf32136e7af1e98c9470f8557f)

4 years agounix-socket: fix alert metadata logging
Angelo Mirabella [Wed, 11 Mar 2020 15:11:19 +0000 (15:11 +0000)] 
unix-socket: fix alert metadata logging

This changeset fixes a bug that was preventing suricata to dump
alert metadata info when running in unix-socket mode.
When running in unix-socket mode, suricata was skipping the
initialization of the output modules and, as a consequence,
the metadata output module was never invoked.

(cherry picked from commit ea15282f47c6ff781533e3a063f9c903dd6f1afb)

4 years agopacket: set length of 0 for too big copy
Philippe Antoine [Thu, 19 Nov 2020 13:10:58 +0000 (14:10 +0100)] 
packet: set length of 0 for too big copy

(cherry picked from commit d5ac77ee8b2008e3e401fff6cbe28ced3bdf69ba)

4 years agodecode/null: fix type parsing
Victor Julien [Mon, 23 Nov 2020 20:59:18 +0000 (21:59 +0100)] 
decode/null: fix type parsing

(cherry picked from commit 14aacbd067c483c72578a86c78d16253b7dc3e93)

4 years agorust: fix warnings found by nightly compiler
Victor Julien [Thu, 3 Dec 2020 20:06:11 +0000 (21:06 +0100)] 
rust: fix warnings found by nightly compiler

4 years agodetect/mpm: remove usused cleanup function
Victor Julien [Wed, 25 Nov 2020 08:49:54 +0000 (09:49 +0100)] 
detect/mpm: remove usused cleanup function

(cherry picked from commit e7b52010168a5b26a0d18500edd731f234b17646)

4 years agodetect: optimize prefilter result handling
Victor Julien [Wed, 25 Nov 2020 08:22:44 +0000 (09:22 +0100)] 
detect: optimize prefilter result handling

(cherry picked from commit e799357d9fbadb295468466907ab1972564b9a8c)

4 years agodetect/prefilter: small cleanup
Victor Julien [Wed, 25 Nov 2020 08:22:21 +0000 (09:22 +0100)] 
detect/prefilter: small cleanup

(cherry picked from commit ffb0945b4cc707bc8459e64771af677c2a673841)

4 years agodetect: fix inspection order with stateful rules
Victor Julien [Mon, 30 Nov 2020 06:44:54 +0000 (07:44 +0100)] 
detect: fix inspection order with stateful rules

When stateful detection rules, for which detection has already started
for a previous packet, are added to the candidates array, the array
is sorted to mantain the correct inspection order. However, due to a
trivial error in the sort helper the array was sorted in descending
instead of ascending order.

(cherry picked from commit 46644440671c3bfeb9c1423aa1684191ff6db961)

4 years agodnp3: set byte order when logging dnp3 src and dst
Jason Ish [Mon, 23 Nov 2020 18:11:42 +0000 (12:11 -0600)] 
dnp3: set byte order when logging dnp3 src and dst

DNP3 uses little endian on the wire, for the most part this
is handled as the messages are deserialize. However, the link
header is a cast over raw data, so swap these bytes as they
are being logged.

Redmine issue:
https://redmine.openinfosecfoundation.org/issues/4173

(cherry picked from commit 76e011a5ba9ef50b53692bbfeaf25ad28bc96389)

4 years agodnp3: fix memory leak with object containing bytearrays
Philippe Antoine [Thu, 19 Nov 2020 13:29:48 +0000 (14:29 +0100)] 
dnp3: fix memory leak with object containing bytearrays

(cherry picked from commit 5749024e3f21d503e074b59208e0753629552d1c)

4 years agodnp3: fix signed integer overflow
Philippe Antoine [Thu, 19 Nov 2020 13:28:43 +0000 (14:28 +0100)] 
dnp3: fix signed integer overflow

By using unsigned integers everywhere

(cherry picked from commit 001350547af4b8f2a3747eab19fbbe0b33f06d37)

4 years agogithub-ci: remove deprecated add-path 5620/head
Shivani Bhardwaj [Tue, 1 Dec 2020 14:24:53 +0000 (19:54 +0530)] 
github-ci: remove deprecated add-path

4 years agodecode: Improved handling of ICMPv4 messages
Jeff Lucovsky [Wed, 4 Nov 2020 13:34:51 +0000 (08:34 -0500)] 
decode: Improved handling of ICMPv4 messages

This commit improves handling of ICMPv4 messages, especially those with
variable sized headers.

This commit also adds a header length variable for use by the new
sticky buffer for the header.

(cherry picked from commit 988bb26828fc4f18a42b9eb44bf513a1eacf1066)

4 years agosmb: check post-gap timeouts once a second at most 5493/head
Victor Julien [Sun, 17 May 2020 12:24:07 +0000 (14:24 +0200)] 
smb: check post-gap timeouts once a second at most

(cherry picked from commit 25f2efe97749611760e6e26d388b420091423732)
(cherry picked from commit 83c9b305acc6d48eb96172292609f6e73185c7dd)

4 years agosmb: update ts only if it changed
Victor Julien [Sun, 17 May 2020 12:48:52 +0000 (14:48 +0200)] 
smb: update ts only if it changed

(cherry picked from commit 8aa380600da15b95e74a6649e6003a1c484c4ce0)
(cherry picked from commit 264eecbdefacbbf807c17b6de73a32ee607c255d)

4 years agosmb: fix 'dangling' files in lossy sessions
Victor Julien [Fri, 15 May 2020 07:57:42 +0000 (09:57 +0200)] 
smb: fix 'dangling' files in lossy sessions

In case of lossy connections the SMB state would properly clean up
transactions, including file transactions. However for files the
state was never set to 'truncated', leading to files to stay 'active'.

This would lead these files staying in the SMB's state. In long running
sessions with lots of files this would lead to performance and memory
use issues.

This patch cleans truncates the file that was being transmitted when
a file transaction is being closed.

(cherry picked from commit 65e9a7c31cc68bdb1fb3e1412b0a56260265c608)
(cherry picked from commit c8be282533d7a004877b8aea635bdbcdec52fa56)

4 years agorust: fix build warning for unknown lint 5487/head
Sumera Priyadarsini [Tue, 13 Oct 2020 10:01:33 +0000 (15:31 +0530)] 
rust: fix build warning for unknown lint

Builds for suricata with rustc 1.24.1 give the warning:
warning: unknown lint: `ellipsis_inclusive_range_patterns`

The builtin lint had been added to fix a deprecation warning
for the `...` range patterns. Although rustc 1.24.1 is
no longer the MSRV, rendering the lint unnecessary, removing it
results in a strict error for rustc 1.47.x.

Add relevant code to allow unknown lints.

4 years agorust: fix rust build for rustc 1.24.1
Sumera Priyadarsini [Sun, 11 Oct 2020 18:47:15 +0000 (00:17 +0530)] 
rust: fix rust build for rustc 1.24.1

Builds for suricata fail with rustc 1.24.1 due to usage of `crate`
to specify the absolute path for the app-layer-parser with the errors:
    error[E0433]: `crate` can only be used in absolute paths
    error: `crate` in paths is experimental

Modify relevant files to use relative paths instead.
Fixes Bug #4064

4 years agoversion: update to 4.1.9 suricata-4.1.9
Victor Julien [Wed, 7 Oct 2020 16:34:29 +0000 (18:34 +0200)] 
version: update to 4.1.9

4 years agochangelog: update for 4.1.9
Victor Julien [Wed, 7 Oct 2020 12:20:16 +0000 (14:20 +0200)] 
changelog: update for 4.1.9

4 years agoconfigure: require libhtp 0.5.35
Victor Julien [Wed, 7 Oct 2020 12:20:30 +0000 (14:20 +0200)] 
configure: require libhtp 0.5.35

4 years agoenip: use status for probing parser
Philippe Antoine [Sat, 2 May 2020 18:17:35 +0000 (20:17 +0200)] 
enip: use status for probing parser

(cherry picked from commit 0da4dc0deab8ae40f2f4476f68faa62a692a0350)

4 years agosignature: fix linked list for bidirectional signatures
Philippe Antoine [Sat, 2 May 2020 13:55:23 +0000 (15:55 +0200)] 
signature: fix linked list for bidirectional signatures

Bidirectional signatures are really two signatures with one id
This needs to be handled with care when changing a linked list

(cherry picked from commit 5ac8e41a130f7b17678be00a1a5510a85f7baa2e)

4 years agodcerpc: validate signature with dcerpc keywords
Philippe Antoine [Thu, 27 Aug 2020 15:32:41 +0000 (17:32 +0200)] 
dcerpc: validate signature with dcerpc keywords

so that they do not use another protocol's keywords

(cherry picked from commit c06d8f246303d767d2b5e8c504f58de401e64c0a)

4 years agodnp3: more precise probing for banners
Philippe Antoine [Wed, 30 Sep 2020 20:04:32 +0000 (22:04 +0200)] 
dnp3: more precise probing for banners

(cherry picked from commit bde0c88984f09804e153d95647c5892eadb9f656)

4 years agodnp3: fix probing test not using final null in string
Philippe Antoine [Tue, 6 Oct 2020 11:46:47 +0000 (13:46 +0200)] 
dnp3: fix probing test not using final null in string

(cherry picked from commit 12dfc33e05d042447027fa446fd07babd8086081)

4 years agosmb: adds file overlap event against evasions
Philippe Antoine [Tue, 14 Apr 2020 08:30:33 +0000 (10:30 +0200)] 
smb: adds file overlap event against evasions

Evasion scenario is
- a first dummy write of one byte at offset 0 is done
- the second full write of EICAR at offset 0 is then done
and does not trigger detection

The last write had the final value, and as we cannot "cancel"
the previous write, we set an event which is then transformed into
an app-layer decoder alert

(cherry picked from commit caa7946888c509ca7e46a26fdbe30aaaa5382fc4)

4 years agosmb: resistance against padding evasions
Philippe Antoine [Tue, 14 Apr 2020 12:24:22 +0000 (14:24 +0200)] 
smb: resistance against padding evasions

Scenario is use of dummy padding in write AndX request
or other similar commands using a data offset.

Parsing skips now these dummy bytes, and generates one event

(cherry picked from commit aaa69fe3c5366996348f2ad97d030b11b46889f2)

4 years agossl: adds safety checks
Philippe Antoine [Tue, 16 Jun 2020 11:54:46 +0000 (13:54 +0200)] 
ssl: adds safety checks

Ensure the client version is valid by checking hello flags

Ensure no integer underflow occurs in SSLv3ParseHandshakeType

(cherry picked from commit 2eacc6a9a84640877abe852cfb3f65fee6161b29)

4 years agossl: do not reuse struct session_id_length
Philippe Antoine [Fri, 31 Jul 2020 11:33:01 +0000 (13:33 +0200)] 
ssl: do not reuse struct session_id_length

As it can be confused between SSLv2 and TLSv13
In SSLv2, this variable is not used after the function scope, so
we can use a temporary variable.

(cherry picked from commit 4706b38866c07b0e39c12d22a8f2c322924d2807)

4 years agodhcp: set unidirection transaction flag
Jason Ish [Mon, 14 Sep 2020 19:47:17 +0000 (13:47 -0600)] 
dhcp: set unidirection transaction flag

(cherry picked from commit 0529a00ffdd05e9613c160008e16252851d86b0a)

4 years agoenip: set unidirection transaction flag
Jason Ish [Mon, 5 Oct 2020 21:05:41 +0000 (15:05 -0600)] 
enip: set unidirection transaction flag

(cherry picked from commit 2b215a45e04ff21ce8aa8fb421b4b053ef63b6c2)

4 years agoikev2: set unidirection transaction flag
Jason Ish [Mon, 14 Sep 2020 19:47:10 +0000 (13:47 -0600)] 
ikev2: set unidirection transaction flag

(cherry picked from commit 3036ec4db0f80baa42ebde7b81de77352603089a)

4 years agokrb5: set unidirection transaction flag
Jason Ish [Mon, 14 Sep 2020 19:30:46 +0000 (13:30 -0600)] 
krb5: set unidirection transaction flag

(cherry picked from commit f7dee602e9490c0d98729d1d8d11a06c67ebb0ab)

4 years agontp: set unidirection transaction flag
Jason Ish [Mon, 14 Sep 2020 19:05:09 +0000 (13:05 -0600)] 
ntp: set unidirection transaction flag

(cherry picked from commit 984d3c7f20560dae0adeae7fa09ba740f65d0868)

4 years agoapplayer: add flags to parser registration struct
Jason Ish [Mon, 13 Jul 2020 16:24:24 +0000 (10:24 -0600)] 
applayer: add flags to parser registration struct

This will allow Rust parsers to register for gap handing from
Rust (some Rust parsers do handle gaps, but they set the flag
from C).

(cherry picked from commit 53aa967e0b89417f2714fcbcbb6463be6ce8282e)

4 years agoapp-layer: handle unidirectional transactions
Jason Ish [Tue, 18 Aug 2020 16:39:42 +0000 (10:39 -0600)] 
app-layer: handle unidirectional transactions

(cherry picked from commit 60ebc27c4eb755800e6d3f4ec1a5d55a5230a214)

4 years agoapp-layer: backport unidirectional tx option
Jason Ish [Thu, 24 Sep 2020 17:50:03 +0000 (11:50 -0600)] 
app-layer: backport unidirectional tx option

This is a partial backport of:
ac3cf6ff75a3e5be39867bba1830076ac43e9f50

    detect/config: set config for special cases

    Allow app-layer to declare the txs are uni-directional and special
    care is needed for applying config.

4 years agodetect/rules: Fix copy/paste error 5470/head
Jeff Lucovsky [Wed, 23 Sep 2020 12:15:41 +0000 (08:15 -0400)] 
detect/rules: Fix copy/paste error

This commit corrects a copy/paste error handling the `include-mpm-stats`
configuration setting.

(cherry picked from commit db9776af64dfd0872cb4374b01e9871dea2a03b5)

4 years agodetect/rules: Increase array size to remove SEGV
Jeff Lucovsky [Sat, 19 Sep 2020 12:47:56 +0000 (08:47 -0400)] 
detect/rules: Increase array size to remove SEGV

This commit changes the size of reporting variables to be dynamic based
on the buffer ids in use instead of a fixed value to address a SEGV when
the fixed value was less than the max buffer/type id in use.

(cherry picked from commit d911fb87b8c9bb496adebed03a7113ec0b6526d8)

4 years agohttp: error check htp_list_size
Victor Julien [Mon, 5 Oct 2020 06:17:19 +0000 (08:17 +0200)] 
http: error check htp_list_size

This avoids a potential casting to uint64_t of -1, leading to a very
high upper bound of the tx loop.

(cherry picked from commit e07a4393a9dc07d199a04540d0b54119ee95a2a5)

4 years agoapplayer: keep running detection on protocol change 5448/head
Philippe Antoine [Wed, 9 Sep 2020 08:09:33 +0000 (10:09 +0200)] 
applayer: keep running detection on protocol change

ie do not stop on first try if we do not have enough data

(cherry picked from commit 07cbdb32b3f6e63e2d08b29e6db0c0ac3d819a70)

4 years agosignature: checks for integer overflow in limits propagation
Philippe Antoine [Thu, 23 Jul 2020 09:26:16 +0000 (11:26 +0200)] 
signature: checks for integer overflow in limits propagation

(cherry picked from commit a99ad4c1e4251c8a4a667d613ccb1fb334a9b268)

4 years agodetect: checks for overflow when comparing signatures priorities
Philippe Antoine [Thu, 27 Aug 2020 15:11:10 +0000 (17:11 +0200)] 
detect: checks for overflow when comparing signatures priorities

(cherry picked from commit 16742394424e8c9654708fbc93b990b9ddc70dff)

4 years agosignature: checks for integer overflow in limits propagation
Philippe Antoine [Thu, 23 Jul 2020 09:26:16 +0000 (11:26 +0200)] 
signature: checks for integer overflow in limits propagation

(cherry picked from commit 61c327dd80f02484481cbea6d48168063ae90a69)

4 years agodetect: fix read overflow in DetectGetLastSMByListId
Philippe Antoine [Thu, 23 Jul 2020 11:28:57 +0000 (13:28 +0200)] 
detect: fix read overflow in DetectGetLastSMByListId

(cherry picked from commit 5c31383d1c9ecbd93f0eae4ef02ae17ff98bcbed)

4 years agodetect/asn1: Fixes definite long form parsing of length field
Emmanuel Thomspon [Thu, 9 Apr 2020 16:22:11 +0000 (12:22 -0400)] 
detect/asn1: Fixes definite long form parsing of length field

(cherry picked from commit a9f590b350196d06375a926a35c05b6927aead97)

4 years agosignature: adds file flag for file_data keyword 5358/head
Philippe Antoine [Fri, 1 May 2020 08:54:51 +0000 (10:54 +0200)] 
signature: adds file flag for file_data keyword

So that SigValidate can check if a protocol not supporting
files was set after this keyword

(cherry picked from commit e5d4332ede1201c44b40d655b51dcc0062d5cfc1)

4 years agonfs: check post-gap timeouts once a second at most
Victor Julien [Mon, 20 Jul 2020 12:30:39 +0000 (14:30 +0200)] 
nfs: check post-gap timeouts once a second at most

Based on 25f2efe97749611760e6e26d388b420091423732

(cherry picked from commit fc7cecb4ae820c098322bb1098cd20902fd84604)

4 years agonfs: update ts only if it changed
Victor Julien [Mon, 20 Jul 2020 12:18:52 +0000 (14:18 +0200)] 
nfs: update ts only if it changed

Based on 8aa380600da15b95e74a6649e6003a1c484c4ce0

(cherry picked from commit 5d65e5a7481628d533dd7d8fdedd675b46867d80)

4 years agonfs: fix 'dangling' files in lossy sessions
Victor Julien [Mon, 20 Jul 2020 12:49:59 +0000 (14:49 +0200)] 
nfs: fix 'dangling' files in lossy sessions

In case of lossy connections the NFS state would properly clean up
transactions, including file transactions. However for files the
state was never set to 'truncated', leading to files to stay 'active'.

This would lead these files staying in the NFS's state. In long running
sessions with lots of files this would lead to performance and memory
use issues.

This patch cleans truncates the file that was being transmitted when
a file transaction is being closed.

Based on 65e9a7c31cc68bdb1fb3e1412b0a56260265c608

(cherry picked from commit bcd416e6baf8475fc4a41830c16488a4225b8eba)

4 years agohtp: enforce body limits more exact 5333/head
Victor Julien [Thu, 4 Jun 2020 20:50:38 +0000 (22:50 +0200)] 
htp: enforce body limits more exact

(cherry picked from commit a4568a634d5df223a4caaed4552b54f9e4598c12)

4 years agodetect/content: Validate content byte array
Jeff Lucovsky [Thu, 11 Jun 2020 13:08:42 +0000 (09:08 -0400)] 
detect/content: Validate content byte array

This commit checks whether the content byte array is compatible with the
transforms, if any, for the rule.

(cherry picked from commit 051465ee74422eb7578bdb8ef92f76037d7c47ec)
(cherry picked from commit 6d169fa90982239c5717ae85ae986f22a324496f)

4 years agodetect: Add transform validation api
Jeff Lucovsky [Thu, 11 Jun 2020 13:07:43 +0000 (09:07 -0400)] 
detect: Add transform validation api

This commit extends the API with a function that validates arguments
against the transforms for the SM list (if any).

(cherry picked from commit 8f1a7111ed10f2b017d5190682a6961a1729942d)
(cherry picked from commit 0e1b58847b1980f80ed5a5b488a292704ad66f14)

4 years agodetect/transform: Add validation function
Jeff Lucovsky [Thu, 11 Jun 2020 13:05:08 +0000 (09:05 -0400)] 
detect/transform: Add validation function

This commit adds a function to pre-validate buffers. If a content
buffer contains whitespace, the validation fails.

(cherry picked from commit bc81474e3fb715b1ef110338676fc15de34744c0)
(cherry picked from commit 96bac523d3c6e55d5cf33ace1a0cbd7a469cf7e3)

4 years agodetect/transform: Add transform "validate" function
Jeff Lucovsky [Thu, 11 Jun 2020 12:31:55 +0000 (08:31 -0400)] 
detect/transform: Add transform "validate" function

This commit adds an (optional) entry for a validation function. The
validation function, if present, will be used during rule processing.

Its role is to determine if the arguments are compatible with the
transform. E.g., a content string of "this string has whitespace" is not
compatible with the `strip_whitespace` transform.

(cherry picked from commit 596875fa68af18746abbbd9e307d14a93f23c3f7)
(cherry picked from commit 00ffcf1012178a9dfeb1559ec826cde60273830b)

4 years agowindows: fix timestring timezone display
Victor Julien [Sat, 23 May 2020 18:57:21 +0000 (20:57 +0200)] 
windows: fix timestring timezone display

Bug: #3690
(cherry picked from commit bbdc11842d324005567bac5eafdea5fd0fc62688)

4 years agodetect/asn1: Fix relative_offset keyword option
Emmanuel Thompson [Tue, 28 Apr 2020 18:03:26 +0000 (14:03 -0400)] 
detect/asn1: Fix relative_offset keyword option

- Fix relative_offset keyword option to be relative in regards to the
last content match
- Change relative_offset to int32_t with bounds check to allow the full
range of the packet buffer size (uint16_t)
- Added checks for over/underflows
- Changed the offset type to uint16_t because the offset is applied to
the payload length, which is a uint16_t
- Adjusted test cases to work relative to the content match
- Added test case to verify bounds

(cherry picked from commit be3379f00e30fd4776c6a3a622c2b27ca60a92e1)

4 years agoredis: ensure a dump per second
Eric Leblond [Thu, 23 Jan 2020 12:30:29 +0000 (13:30 +0100)] 
redis: ensure a dump per second

In sync mode, Suricata was waiting to have batch size alerts before
logging them. This was introducing delay in some configuration with
low traffic.

(cherry picked from commit f5e2968f129737ccbd5f0ee8ae3776203714b229)

4 years agoredis: fix reconnect in batch mode
Eric Leblond [Thu, 23 Jan 2020 12:10:44 +0000 (13:10 +0100)] 
redis: fix reconnect in batch mode

In case of redis outage, the redis session was reset but the replies
were still fetch even if there is none replies in the new session.

(cherry picked from commit ec8eba28a8ec0b7cb6eba5291da0174e8ab018db)

4 years agofile-hash-common: fix rule_file truncation
Jason Ish [Fri, 26 Jun 2020 17:45:38 +0000 (11:45 -0600)] 
file-hash-common: fix rule_file truncation

Loading file hash lists uses dirname(3) on the
de_ctx->rule_file which modifies the contents,
removing the last part of the path. So on subsequent
calls the rule_file no longer contains the rule_file,
but instead just the directory name.

Mostly noticed when using "-S" with rule files outside
of the default-rule-path which requires more hunting for
the rule file.

(cherry picked from commit b8d1677b9ce25a2fe2e1d275518613f9c7a45548)

4 years agodoc: Fix spelling error
Jeff Lucovsky [Fri, 12 Jun 2020 12:37:51 +0000 (08:37 -0400)] 
doc: Fix spelling error

(cherry picked from commit 297f91479e356bcba9301448b0e274f7762d4ea1)

4 years agogeneral: Fix spelling error
Jeff Lucovsky [Fri, 12 Jun 2020 12:37:23 +0000 (08:37 -0400)] 
general: Fix spelling error

(cherry picked from commit 9c47b8c1bfb5aa06e077ef976a348bf5e2d09bba)

5 years agodnp3: fix buffer over read in responses parsing 5181/head
Philippe Antoine [Sun, 21 Jun 2020 20:22:47 +0000 (22:22 +0200)] 
dnp3: fix buffer over read in responses parsing

(cherry picked from commit d465bb86863acd4c0cd534f0748c5a2ef1283241)

5 years agooutput/tftp: Include common options 5140/head
Jeff Lucovsky [Mon, 29 Jun 2020 13:48:20 +0000 (09:48 -0400)] 
output/tftp: Include common options

This commit will cause common metadata values and the community id to be
included in log output when configured.

(cherry picked from commit 0bb62e0abb0b4956e71b232c4e4094fa2545e1f9)

5 years agooutput/smb: Include common output options
Jeff Lucovsky [Mon, 29 Jun 2020 13:50:21 +0000 (09:50 -0400)] 
output/smb: Include common output options

This commit will cause common metadata values and the community id to be
included in log output when configured.

(cherry picked from commit c590d6f4591fc8127afc3e1468b879b5f4999875)

5 years agooutput/dhcp: Include common output options
Jeff Lucovsky [Mon, 29 Jun 2020 13:50:53 +0000 (09:50 -0400)] 
output/dhcp: Include common output options

This commit will cause common metadata values and the community id to be
included in log output when configured.

(cherry picked from commit 7a939ae9c237b17b31afd3bf91dfa1701be882ea)

5 years agochangelog: update for 4.1.8 suricata-4.1.8
Victor Julien [Mon, 27 Apr 2020 18:39:15 +0000 (20:39 +0200)] 
changelog: update for 4.1.8

5 years agohtp: fix test after libhtp changes
Victor Julien [Mon, 27 Apr 2020 07:34:16 +0000 (09:34 +0200)] 
htp: fix test after libhtp changes

5 years agodetect/smtp: Refactor command check
Jeff Lucovsky [Fri, 17 Apr 2020 18:01:36 +0000 (14:01 -0400)] 
detect/smtp: Refactor command check

This commit refactors the code that matches reply with command.

Bug: #3676

5 years agoapp-layer/smtp: Improve RSET handling
Jeff Lucovsky [Thu, 16 Apr 2020 14:44:53 +0000 (10:44 -0400)] 
app-layer/smtp: Improve RSET handling

This commit improves how the parser handles the `RSET` command.
Termination of the transaction occurs when the `RSET` ack is seen (reply
code 250).

Bug: #3676

5 years agoenip: more precise probing parser
Philippe Antoine [Mon, 6 Apr 2020 15:22:33 +0000 (17:22 +0200)] 
enip: more precise probing parser

Bug: #3674

5 years agodetect/port: limit recursion in port parsing
Victor Julien [Tue, 14 Apr 2020 09:00:39 +0000 (11:00 +0200)] 
detect/port: limit recursion in port parsing

Bug: #3601

5 years agodetect/address: limit recursion during parsing
Victor Julien [Tue, 14 Apr 2020 06:01:49 +0000 (08:01 +0200)] 
detect/address: limit recursion during parsing

Allow a max depth of 64.

Bug: #3601

5 years agoleak: fixes leak in DetectAddressParse2
Philippe Antoine [Wed, 3 Jul 2019 13:26:08 +0000 (15:26 +0200)] 
leak: fixes leak in DetectAddressParse2

(cherry picked from commit 19ab85f17e878dc237695be5f61b3fb269749eab)

5 years agodetect/address: minor cleanups
Victor Julien [Tue, 14 Apr 2020 06:01:37 +0000 (08:01 +0200)] 
detect/address: minor cleanups

5 years agodecode: cleanup packet properly on bad packets
Victor Julien [Sun, 5 Apr 2020 12:35:29 +0000 (14:35 +0200)] 
decode: cleanup packet properly on bad packets

In case of bad IPv4, TCP or UDP, the per packet ip4vars/tcpvars/udpvar
structures would not be cleaned up because the cleanup depends on the
'header' pointer being set, but the error handling would unset that.

This could mean these structures were already filled with values before
the error was detected. As packets were recycled, the next packet decoding
would use this unclean structure.

To make things worse these structures are part of unions. IPv4/IPv6 and
TCP/ICMPv4/ICMPv6 share the same memory location.

LibFuzzer+UBSAN found this both locally and in Oss-Fuzz:

decode-ipv6.c:654:9: runtime error: load of value 6, which is not a valid value for type 'bool'
    #0 0x6146f0 in DecodeIPV6 /src/suricata/src/decode-ipv6.c:654:9
    #1 0x617e96 in DecodeNull /src/suricata/src/decode-null.c:70:13
    #2 0x9dd8a4 in DecodePcapFile /src/suricata/src/source-pcap-file.c:412:9
    #3 0x4c8ed2 in LLVMFuzzerTestOneInput /src/suricata/src/tests/fuzz/fuzz_sigpcap.c:158:25
    #4 0x457e51 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:556:15
    #5 0x457575 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:470:3
    #6 0x459917 in fuzzer::Fuzzer::MutateAndTestOne() /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:698:19
    #7 0x45a6a5 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:830:5
    #8 0x448728 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:824:6
    #9 0x472552 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:19:10
    #10 0x7ff0d097b82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
    #11 0x41bde8 in _start (/out/fuzz_sigpcap+0x41bde8)

Bug: #3610

5 years agossl: don't say we consumed bytes if we didn't consume them
Victor Julien [Fri, 21 Feb 2020 19:07:19 +0000 (20:07 +0100)] 
ssl: don't say we consumed bytes if we didn't consume them

5 years agossl: fix handshake cert buffer sizing
Victor Julien [Fri, 3 Apr 2020 15:03:47 +0000 (17:03 +0200)] 
ssl: fix handshake cert buffer sizing

'trec' buffer was not grown properly when it was checked as too small.
After this it wasn't checked again so that copying into the buffer could
overflow it.

Bug: #3608

5 years agoftp: FTPParseResponse bufferizes lines 4891/head
Philippe Antoine [Mon, 16 Mar 2020 13:46:51 +0000 (14:46 +0100)] 
ftp: FTPParseResponse bufferizes lines

Protects against evasion by TCP packet splitting

The problem arised if the FTP response is split on multiple packets

The fix is to bufferize the content, until we get a complete line

5 years agodetect: refactoring parsing of ip range 4889/head
Philippe Antoine [Sat, 25 Apr 2020 09:38:53 +0000 (11:38 +0200)] 
detect: refactoring parsing of ip range

To optimize first netmask

(cherry picked from commit ae102ca0961fddd54c1f7d07b8772d43d06f3f41)

5 years agosignature: minimizes ip CIDR for ip range
Philippe Antoine [Wed, 22 Apr 2020 07:54:49 +0000 (09:54 +0200)] 
signature: minimizes ip CIDR for ip range

Example leading to over allocation is 41.232.107.2-43.252.37.6

(cherry picked from commit 8ca9c0e8f04598ebcbe72bafce1512b8fe2f554a)

5 years agofastlog: fix unlikely memleak 4885/head
Victor Julien [Fri, 24 Apr 2020 08:27:18 +0000 (10:27 +0200)] 
fastlog: fix unlikely memleak

Fix memleak is case of alloc error during startup.

(cherry picked from commit 28837b203e45a8cc24b4b7b97f7bf9c5e118eb7b)

5 years agogithub-ci: check all commits on pr
Jason Ish [Tue, 21 Apr 2020 15:29:57 +0000 (09:29 -0600)] 
github-ci: check all commits on pr

On a pull request, attempt to compile all commits from
the base branch to the head of the PR branch.

The job is in a separate workflow file to limit it to
pull-requests only, as the base branch is not available
on push (something to look into).

(cherry picked from commit d955acc01cc0ce7bd5bf04b0e36a96fb55ee56f5)

5 years agodetect/lua: Unregister Lua object on free
Jeff Lucovsky [Fri, 24 Apr 2020 12:56:33 +0000 (08:56 -0400)] 
detect/lua: Unregister Lua object on free

This commit ensures that the LUA object is unregistered when the Lua
object is freed.

(cherry picked from commit e718ec674f3e113e627d44bfa547474d90d01d8e)

5 years agoflow: cleanup expectations first 4881/head
Victor Julien [Fri, 3 Apr 2020 08:09:07 +0000 (10:09 +0200)] 
flow: cleanup expectations first

Make sure to cleanup expectations for a flow as the first step, before
parts of the flow itself are getting cleaned/freed.

Also indicate use unlikely as flows with expectations should be relatively
rare.

(cherry picked from commit 09a21545ce00de8ef161f097603f98770351e9be)

5 years ago app-layer-expectation: clean expectation and add limits
Eric Leblond [Fri, 7 Feb 2020 23:05:01 +0000 (00:05 +0100)] 
 app-layer-expectation: clean expectation and add limits

When a flow timeout, we can have still existing expectations that
are linked to this flow. Given that there is a delay between the
real ending of the flow and its destruction by Suricata, the
expectation should be already honored so we can assume the risk
to clean the expectations that have been triggered by the
to-be-deleted flow.

This patch introduces a limitation in term of number of
expectations attached to one IPPair. This is done using
a circle list so we have a FIFO approach on expectation
handling.

Circleq list code is copied from BSD code like was pre existing code
in queue.h.

(cherry picked from commit 1ddd77fae06d7b41b7d7752c70ebfce3d335983e)
(cherry picked from commit 6c9d1c08614fdbd42c22b5aca0d4c438bd404c5e)

Commits squashed to avoid circular dependeny by Shivani Bhardwaj.

5 years agoapp-layer-expectation: update copyright date
Eric Leblond [Sun, 9 Feb 2020 19:33:21 +0000 (20:33 +0100)] 
app-layer-expectation: update copyright date

(cherry picked from commit fcfeeeb694f01508bf98ecc8e22dc3d30ef34f95)

5 years agoapp-layer-expectation: remove unused parameter
Eric Leblond [Tue, 10 Dec 2019 21:15:14 +0000 (22:15 +0100)] 
app-layer-expectation: remove unused parameter

(cherry picked from commit 03e4bfeb026a568857617a2e1e135c4b3bbd1505)

5 years agodetect/ftp: FTP memory accounting fixes
Jeff Lucovsky [Tue, 21 Apr 2020 14:36:27 +0000 (10:36 -0400)] 
detect/ftp: FTP memory accounting fixes

This commit continues the work started by @vanlink and corrects the
accounting of FTP memory usage against the memcap limit.

(cherry picked from commit aa3f784d32308b642052c076787ace547b260781)

5 years agodetect: fix insertion in linked list for fast pattern
Philippe Antoine [Mon, 20 Apr 2020 11:57:44 +0000 (13:57 +0200)] 
detect: fix insertion in linked list for fast pattern

Make sure we do not add the same list_id twice
by checking at least all the lists with the current priority

(cherry picked from commit cd26fc139ec8766a73892174fd929e9478a050bc)

5 years agodetect: Provide function to clear per-thread ctx
Jeff Lucovsky [Sat, 21 Mar 2020 14:10:09 +0000 (10:10 -0400)] 
detect: Provide function to clear per-thread ctx

This commit provides an interface to free previously allocated
per-thread contextual information on the keyword lists.

(cherry picked from commit d1151f3f8e5d21f08c47dd9d3e3650768f7d3004)

5 years agoutil: removes warning about double conversion
Philippe Antoine [Fri, 1 Nov 2019 07:48:56 +0000 (08:48 +0100)] 
util: removes warning about double conversion

From clang 10 :
implicit conversion from 'unsigned long' to 'double' changes value
from 18446744073709551615 to 18446744073709551616

(cherry picked from commit 20e06f45c037d0943d58e6eb1d8b4f4f602032f0)

5 years agokerberos: fix against packet split in record size 4833/head
Philippe Antoine [Fri, 6 Mar 2020 09:45:23 +0000 (10:45 +0100)] 
kerberos: fix against packet split in record size

(cherry picked from commit 23f796a021cd4a0f2614418a5d2d40acefd56df3)

5 years agodetect/iponly: fix parsing of '0' valued netmask
Victor Julien [Sat, 11 Apr 2020 11:54:00 +0000 (13:54 +0200)] 
detect/iponly: fix parsing of '0' valued netmask

(cherry picked from commit 4d50eb1647709c9f2b8809f91b2af67be99ce4ab)