]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
4 years agodecode/geneve: fix unittests now that config is disabled 5465/head
Victor Julien [Mon, 5 Oct 2020 07:43:57 +0000 (09:43 +0200)] 
decode/geneve: fix unittests now that config is disabled

4 years agodecode/geneve: disable by default w/o config
Victor Julien [Mon, 5 Oct 2020 06:38:56 +0000 (08:38 +0200)] 
decode/geneve: disable by default w/o config

4 years agoapplayer: keep running detection on protocol change 5440/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 agodecode/geneve: Disable geneve decoding by default.
Jeff Lucovsky [Tue, 22 Sep 2020 12:36:55 +0000 (08:36 -0400)] 
decode/geneve: Disable geneve decoding by default.

4 years agodecode/geneve: add config to yaml
Victor Julien [Fri, 4 Sep 2020 08:11:40 +0000 (10:11 +0200)] 
decode/geneve: add config to yaml

(cherry picked from commit 57a611b429d5108c5793e9b6b55f85d29d3f0758)

4 years agodecode/geneve: Add Geneve decoding functionality
Ali Jad Khalil [Wed, 29 Apr 2020 07:36:18 +0000 (07:36 +0000)] 
decode/geneve: Add Geneve decoding functionality

These changes are in response to feature request 3063. Geneve is
very similar to VXLAN, but uses a slightly different encapsulation
scheme.

(cherry picked from commit ef9e532f0739a87ffc163ed5ffb3699ffa9aa07b)

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 a99ad4c1e4251c8a4a667d613ccb1fb334a9b268)

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 agodnp3: adds unit test against previous bug 5335/head
Philippe Antoine [Tue, 23 Jun 2020 07:08:22 +0000 (09:08 +0200)] 
dnp3: adds unit test against previous bug

(cherry picked from commit 0ffa1c601456c7db67dcc488b016a8ae6dfe22c6)

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 44d7dd02b34a678972aeeadc03b68ba267531333)

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 760d6c187718ed1051607a766a51bfcbeb56c823)

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 f8e9fe95cb233ede9941e893b0e9789900368949)

4 years agooutput/anomaly: Restrict anomaly logger count
Jeff Lucovsky [Sat, 1 Aug 2020 13:45:04 +0000 (09:45 -0400)] 
output/anomaly: Restrict anomaly logger count

This commit restricts the anomaly logger count. The restriction is
necessary due to state maintenance in the logger that doesn't scale
beyond a single logger.

Until that issue's solved, when multiple anomaly loggers are configured,
an error message will be emitted to highlight the restriction.

(cherry picked from commit 8e2aab7467a92cedc8cb67647af8601d43b36e91)

4 years agofuzz: disable DNP3 checksums while fuzzing
Philippe Antoine [Fri, 19 Jun 2020 09:43:04 +0000 (11:43 +0200)] 
fuzz: disable DNP3 checksums while fuzzing

(cherry picked from commit 8a61f754c485b6c956c31c26176112d45d68b6e8)

4 years agoFix stack overflow in DetectFlowbitsAnalyze
Antti Tönkyrä [Fri, 26 Jun 2020 10:37:45 +0000 (10:37 +0000)] 
Fix stack overflow in DetectFlowbitsAnalyze

Use dynamically allocated array instead of stack and free it after it is no longer needed.

(cherry picked from commit fd4ef5cd541ad945fddae5f469e32ef0562447ca)

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 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)

5 years agodnp3: fix buffer over read in responses parsing 5180/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 agodnp3: probing parser fixes direction based on dnp3 header
Philippe Antoine [Fri, 19 Jun 2020 09:53:16 +0000 (11:53 +0200)] 
dnp3: probing parser fixes direction based on dnp3 header

(cherry picked from commit 629a16e3733dd577822d0c82d2e81cbeb3b9a4d2)

5 years agodetect/content: Validate content byte array 5130/head
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)

5 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 cbcb7c5b99f30ac0555bb47ba9ec093b3be2e55e)

5 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 aed6356e5b4888e20cff3bdf847bb95b6a6a66b7)

5 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)

5 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)

5 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)

5 years agoutil-log-redis: add support for unix socket
Eric Leblond [Fri, 29 May 2020 10:08:31 +0000 (12:08 +0200)] 
util-log-redis: add support for unix socket

If there is a '/' in the redis server string then we consider that
the connection should be done other a unix socket.

(cherry picked from commit e12437e31e9cab25576e9cb3d70cba620ba3023e)

5 years agoutil-log-redis: ensure a dump per second
Eric Leblond [Thu, 23 Jan 2020 12:30:29 +0000 (13:30 +0100)] 
util-log-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 3ae33bb7a10544babc2f2c56543c825a1f29599d)

5 years agoutil-log-redis: fix reconnect in batch mode
Eric Leblond [Thu, 23 Jan 2020 12:10:44 +0000 (13:10 +0100)] 
util-log-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 21431f166c337a7d3dd8ff8cc3aacbe686414ae3)

5 years agosignature: adds file flag for file_data keyword
pantoine [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 2d43d0de4b3828bda4178031c4cf1c6e0cc0bb6e)

5 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 3b135c609565e9393819b651f9785d58b20d79d2)

5 years agooutput/tftp: Include common options
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 agooutput/rdp: Include common output options
Jeff Lucovsky [Mon, 29 Jun 2020 13:51:35 +0000 (09:51 -0400)] 
output/rdp: 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 9b3cf5db489fbb0cd51ce1a80110529bd8b598e5)

5 years agowindows: fix timestring timezone display 5113/head
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)

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

(cherry picked from commit a4568a634d5df223a4caaed4552b54f9e4598c12)

5 years agodetect/http_raw_header: Correct type mismatch
Angelo Mirabella [Tue, 16 Jun 2020 09:04:06 +0000 (10:04 +0100)] 
detect/http_raw_header: Correct type mismatch

This changeset fixes a bug on the computation of the buffer
lenght for raw http headers. The bug is due to a mismatch
on the data type of the length (uint8_t vs uint32_t) and it
was causing signature misses.

(cherry picked from commit 0cdc009da1c97784b3c1742b33fa817e9597ea68)

5 years agoversion: starting work on 5.0.4
Victor Julien [Mon, 15 Jun 2020 07:44:26 +0000 (09:44 +0200)] 
version: starting work on 5.0.4

5 years agoversion: release 5.0.3, require libhtp 0.5.33 suricata-5.0.3
Victor Julien [Mon, 27 Apr 2020 13:25:11 +0000 (15:25 +0200)] 
version: release 5.0.3, require libhtp 0.5.33

5 years agochangelog: update for 5.0.3
Victor Julien [Mon, 27 Apr 2020 13:23:55 +0000 (15:23 +0200)] 
changelog: update for 5.0.3

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: #3592

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: #3592

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: #3600

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: #3600

5 years agodetect/address: dead code removal and style cleanups
Victor Julien [Tue, 1 Oct 2019 04:50:38 +0000 (06:50 +0200)] 
detect/address: dead code removal and style cleanups

(cherry picked from commit 42d112e7b6db6c85102c1864905cca0ea2c05f88)

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: #3609

5 years agodetect/keywords: dynamic version part of doc URL 4896/head
Victor Julien [Tue, 28 Apr 2020 07:56:44 +0000 (09:56 +0200)] 
detect/keywords: dynamic version part of doc URL

(cherry picked from commit 26bcc97515e6fd38b36d7cb39373b5bf8a63a5fc)

5 years agologging: fix default log format for release mode
Victor Julien [Tue, 28 Apr 2020 07:25:43 +0000 (09:25 +0200)] 
logging: fix default log format for release mode

(cherry picked from commit 8f2df0f9389d3e8aa99d7cc173004c7c85665eb7)

5 years agodetect: fix typo for ipv6.hdr description
Philippe Antoine [Fri, 28 Feb 2020 11:04:00 +0000 (12:04 +0100)] 
detect: fix typo for ipv6.hdr description

(cherry picked from commit 02d94f5cf24d903913516739b4b6de0868a5db46)

5 years agodetect: refactoring parsing of ip range
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 agonapatech: Correct timestamp rounding issue
Jeff Lucovsky [Fri, 24 Apr 2020 14:28:54 +0000 (10:28 -0400)] 
napatech: Correct timestamp rounding issue

This commit fixes the conversion of timestamps. Without the extra
parens, the resulting timestamp value for usecs will be 1 or 0 due to
the operator precedence order (+ takes precedence over ?:)

(cherry picked from commit 2b938987717b2128c2dcb984563bf876add6f0f7)

5 years agonapatech: Check for out-of-band control operations
Jeff Lucovsky [Fri, 24 Apr 2020 14:28:32 +0000 (10:28 -0400)] 
napatech: Check for out-of-band control operations

This commit causes the packet source to check for out of band control
operations when there are no packets immediately available.

(cherry picked from commit f12adcc58cf5b79aec13609c672918f5279d4a7d)

5 years agodag: Check for out-of-band control operations
Jeff Lucovsky [Fri, 24 Apr 2020 14:27:20 +0000 (10:27 -0400)] 
dag: Check for out-of-band control operations

This commit causes the packet source to check for out of band control
operations when there are no packets immediately available.

(cherry picked from commit 5b13468bfcbbd5d5a2a9743b317d2e5a9c3a5afe)

5 years agoapp-layer: fix protocol detection bail conditions for TCP fastopen 4887/head
Victor Julien [Tue, 21 Apr 2020 08:52:04 +0000 (10:52 +0200)] 
app-layer: fix protocol detection bail conditions for TCP fastopen

5 years agodatasets: reputation value validation
Victor Julien [Mon, 27 Apr 2020 06:17:51 +0000 (08:17 +0200)] 
datasets: reputation value validation

5 years agofastlog: fix unlikely memleak 4884/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 agodoc: typo: http.server_body should be http.response_body
Jason Ish [Fri, 24 Apr 2020 15:55:13 +0000 (09:55 -0600)] 
doc: typo: http.server_body should be http.response_body

Thanks to Jason Williams for pointing this out.

(cherry picked from commit 0dd1b2a616decfaa5ad5526540c72b9bf3ae1092)

5 years agoconf: add value checks for datasets hash/prealloc
jason taylor [Thu, 17 Oct 2019 00:26:51 +0000 (20:26 -0400)] 
conf: add value checks for datasets hash/prealloc

Signed-off-by: jason taylor <jtfas90@gmail.com>
5 years agogithub-ci: check all commits on pr 4880/head
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 agoflow: cleanup expectations first
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 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 bcff8ec5b5690ed5507b8d78656f682d07abd4b7)

5 years agoapp-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 a4cea196c0ea9aa5f2b34a43140056d689003c13)
(cherry picked from commit 230dbafa22dc015552ec73a3b0eb70e209ed2190)

Commits squashed to avoid circular dependeny by Victor Julien.

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 403eb3bf6121f8d6d198a4aab80d694c771f7e27)

5 years agodetect/ftp: FTP memory accounting fixes 4869/head
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 agodatasets: remove useless variables
Victor Julien [Fri, 17 Apr 2020 12:58:06 +0000 (14:58 +0200)] 
datasets: remove useless variables

(cherry picked from commit 1d8d03184dd91a33251e6a45f5286b387bfda38e)

5 years agodatasets: add 'dataset-remove' unix command
Victor Julien [Tue, 14 Apr 2020 12:21:31 +0000 (14:21 +0200)] 
datasets: add 'dataset-remove' unix command

(cherry picked from commit 7a6269798ba309deedc7110c5cc8bb763bd89926)

5 years agodatasets: add 'remove' support
Victor Julien [Mon, 13 Apr 2020 14:31:50 +0000 (16:31 +0200)] 
datasets: add 'remove' support

(cherry picked from commit af06883f65ff50d2b118ffd772d1bd93bb3b00f0)

5 years agodatasets: silence noisy 'dataset-add' log
Victor Julien [Tue, 14 Apr 2020 19:57:06 +0000 (21:57 +0200)] 
datasets: silence noisy 'dataset-add' log

(cherry picked from commit 03dc5d1d74dbee2ef63c402a599d0cddbec93f05)

5 years agodatasets: fix return values for 'add's
Victor Julien [Tue, 14 Apr 2020 19:49:33 +0000 (21:49 +0200)] 
datasets: fix return values for 'add's

(cherry picked from commit ff55a444d423f1b3b55be51712bee065f0d4fbda)

5 years agodatasets: fix ref cnt handling
Victor Julien [Tue, 14 Apr 2020 19:44:34 +0000 (21:44 +0200)] 
datasets: fix ref cnt handling

Each 'add' and 'lookup' would increment the use_cnt, without anything
bringing it back down.

Since there is no removal yet, nothing is actually affected by it yet.

(cherry picked from commit 381bc2dd64b2ba6a61b99563194df3a2739ed364)

5 years agothash: add 'remove' support
Victor Julien [Mon, 13 Apr 2020 14:31:35 +0000 (16:31 +0200)] 
thash: add 'remove' support

(cherry picked from commit 51726e0a0f9c56c452cf9c4a566ba302a26cb1d4)

5 years agodatasets: improve 'dataset-add' error checking
Victor Julien [Mon, 13 Apr 2020 13:47:18 +0000 (15:47 +0200)] 
datasets: improve 'dataset-add' error checking

(cherry picked from commit b80ab56d10d9907e3dcab8cdcd2285c711201de8)

5 years agoconf/datadir: fix possible out of bounds array access
Victor Julien [Fri, 17 Apr 2020 13:00:40 +0000 (15:00 +0200)] 
conf/datadir: fix possible out of bounds array access

(cherry picked from commit 0ce489bcc9629b7b4cc5a29288df318d2d5472a6)

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 a0823bc6ecc0c9787fc148229331957fd55f9e97)

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.

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 agoftp: indent FTPParseResponse again 4850/head
Philippe Antoine [Fri, 20 Mar 2020 13:42:50 +0000 (14:42 +0100)] 
ftp: indent FTPParseResponse again

(cherry picked from commit 699d6682daad908fb30f2b871129dfa826f4a476)

5 years agoftp: use switch for ftp commands for style
Philippe Antoine [Mon, 16 Mar 2020 13:52:32 +0000 (14:52 +0100)] 
ftp: use switch for ftp commands for style

(cherry picked from commit fef124b92dbabe64c6f1580113a251fae639857f)

5 years agoftp: FTPGetAlstateProgress for done port commands
Philippe Antoine [Mon, 16 Mar 2020 13:48:40 +0000 (14:48 +0100)] 
ftp: FTPGetAlstateProgress for done port commands

For a done transaction with command PORT,
we expect FTP_STATE_FINISHED
and we got FTP_STATE_PORT_DONE instead
which prevented logging of these transactions

We change the order of the evaluations to get the right result

(cherry picked from commit 6f36403219687b1bbcb667078a57c1c9d4aed185)

5 years agoftp: FTPParseResponse bufferizes lines
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

(cherry picked from commit a6294d6ec25d0f2f0b5d25f7a824c7325e8f87ce)

5 years agoconf: returns instead of exiting in ConfYamlParse
Philippe Antoine [Wed, 15 Apr 2020 09:48:13 +0000 (11:48 +0200)] 
conf: returns instead of exiting in ConfYamlParse

So that we can keep on fuzzing even on too much recursion

(cherry picked from commit fe1d36ec7eff8fecbe39f4d7447c0ab24a9d37ee)

5 years agokerberos: fix against packet split in record size 4829/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/parse: properly free bidir sigs in error path
Victor Julien [Fri, 10 Apr 2020 08:02:43 +0000 (10:02 +0200)] 
detect/parse: properly free bidir sigs in error path

(cherry picked from commit fc6ada85411caa9c08df3eae1cc908436a4ea257)

5 years agodetect/parse: fix minor memory leak in error path
Victor Julien [Fri, 10 Apr 2020 07:55:36 +0000 (09:55 +0200)] 
detect/parse: fix minor memory leak in error path

Only reachable on SCMalloc so should be unlikely to be reached.

(cherry picked from commit 5abead93259e8d0bfb3f7556b9653debe320621a)

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)

5 years agoconf/yaml: limit recursion depth while paring YAML
Jason Ish [Thu, 9 Apr 2020 21:59:23 +0000 (15:59 -0600)] 
conf/yaml: limit recursion depth while paring YAML

A deeply nested YAML file can cause a stack-overflow while
reading in the configuration to do the recursive parser. Limit
the recursion level to something sane (128) to prevent this
from happening.

The default Suricata configuration has a recursion level of 128
so there is still lots of room to grow (not that we should).

Redmine ticket:
https://redmine.openinfosecfoundation.org/issues/3630

(cherry picked from commit 4dc80a6e6f9b396de5dc25d3468522316c4661d0)

5 years agonfs: fix buffering code using wrong dir 4804/head
Victor Julien [Fri, 20 Mar 2020 08:40:23 +0000 (09:40 +0100)] 
nfs: fix buffering code using wrong dir

5 years agodetect/tls: Use pcre_copy_substring to avoid leak 4791/head
Jeff Lucovsky [Mon, 30 Mar 2020 11:57:36 +0000 (07:57 -0400)] 
detect/tls: Use pcre_copy_substring to avoid leak

This commit eliminates a memory leak while parsing TLS version
information. The leak was identified through fuzzing.

(cherry picked from commit 2823bc5aed3ade2f916a9592c0ecf214bb62481b)

5 years agodetect/ssl: Fix memory leak in version parsing
Jeff Lucovsky [Mon, 6 Apr 2020 13:55:41 +0000 (09:55 -0400)] 
detect/ssl: Fix memory leak in version parsing

This commit fixes a memory leak in the SSL version handling that
manifests when the version identifier is incomplete or incorrect.

(cherry picked from commit 6bffe0bd353654b0f2e5e123cd3f68d2570c5553)

5 years agodetect/pktvar: fix memory leaks
Victor Julien [Sun, 5 Apr 2020 14:56:35 +0000 (16:56 +0200)] 
detect/pktvar: fix memory leaks

(cherry picked from commit aba4e195484a4ee2068ca13ed7852aab81f00d5a)

5 years agodetect/threshold: Correct typos
Jeff Lucovsky [Wed, 4 Mar 2020 14:37:04 +0000 (09:37 -0500)] 
detect/threshold: Correct typos

(cherry picked from commit c20ab53eaeb57d873a5ea065f31adcec28786078)