]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
5 years agoinit: Fix dropping privileges in nflog runmode 4531/head
Timo Sigurdsson [Mon, 3 Feb 2020 22:17:17 +0000 (23:17 +0100)] 
init: Fix dropping privileges in nflog runmode

Using the run-as configuration option with the nflog capture method
results in the following error during the startup of suricata:
[ERRCODE: SC_ERR_NFLOG_BIND(248)] - nflog_bind_pf() for AF_INET failed

This is because SCDropMainThreadCaps does not have any capabilities
defined for the nflog runmode (unlike other runmodes). Therefore, apply
the same capabilities to the nflog runmode that are already defined for
the nfqueue runmode. This has been confirmed to allow suricata start
and drop its privileges in the nflog runmode.

Fixes redmine issue #3265.

Signed-off-by: Timo Sigurdsson <public_timo.s@silentcreek.de>
5 years agodecode: remove pseudo packet checks
Victor Julien [Mon, 11 Nov 2019 10:59:35 +0000 (11:59 +0100)] 
decode: remove pseudo packet checks

Bug 1107 checks/hacks should not longer be needed, so remove them.

5 years agothreading/queues: simplify error handling
Victor Julien [Wed, 13 Nov 2019 18:50:48 +0000 (19:50 +0100)] 
threading/queues: simplify error handling

5 years agothreading/queues: remove 256 queue limit
Victor Julien [Wed, 13 Nov 2019 16:16:06 +0000 (17:16 +0100)] 
threading/queues: remove 256 queue limit

Convert fixed size array to a dynamic TAILQ so we can
grow as needed.

5 years agothreading: remove 'trans_q' array of packet queues
Victor Julien [Wed, 13 Nov 2019 15:29:11 +0000 (16:29 +0100)] 
threading: remove 'trans_q' array of packet queues

Let the queues code set up PacketQueues on demand.

5 years agopacket-queue: create alloc and free functions
Victor Julien [Wed, 13 Nov 2019 15:16:15 +0000 (16:16 +0100)] 
packet-queue: create alloc and free functions

5 years agothreading: hide 'trans_q' from queue handlers
Victor Julien [Wed, 13 Nov 2019 14:59:51 +0000 (15:59 +0100)] 
threading: hide 'trans_q' from queue handlers

5 years agothreading/threadvars: optimize layout
Victor Julien [Wed, 13 Nov 2019 10:39:44 +0000 (11:39 +0100)] 
threading/threadvars: optimize layout

Make sure StatsPublicThreadContext is on its own cache line.

5 years agoflowworker/stream: use no-lock packet queue
Victor Julien [Wed, 13 Nov 2019 08:43:11 +0000 (09:43 +0100)] 
flowworker/stream: use no-lock packet queue

Use smaller structure for temporary packet queues.

5 years agothreading: change local packet queue logic
Victor Julien [Tue, 12 Nov 2019 21:34:51 +0000 (22:34 +0100)] 
threading: change local packet queue logic

Previously each 'TmSlot' had it's own packet queue that was passed
to the registered SlotFunc as an argument. This was used mostly for
tunnel packets by the decoders and by defrag.

This patch removes that in favor of a single queue in the ThreadVars:
decode_pq. This is the non-locked version of the queue as this is
only a temporary store for handling packets within a thread.

This patch removes the PacketQueue pointer argument from the API.
The new queue can be accessed directly through the ThreadVars
pointer.

5 years agopacket-queue: introduce a non-locked version
Victor Julien [Tue, 12 Nov 2019 13:54:55 +0000 (14:54 +0100)] 
packet-queue: introduce a non-locked version

Works exactly like PacketQueue, just does not contain a mutex
and cond var, leading to much reduced memory size.

5 years agothreading: more efficient TmSlot layout
Victor Julien [Tue, 12 Nov 2019 13:54:33 +0000 (14:54 +0100)] 
threading: more efficient TmSlot layout

5 years agothreading: remove 'id' field from TmSlot
Victor Julien [Tue, 12 Nov 2019 12:28:09 +0000 (13:28 +0100)] 
threading: remove 'id' field from TmSlot

Field was now unused.

5 years agodetect: cleanup reload thread handling
Victor Julien [Tue, 12 Nov 2019 12:03:58 +0000 (13:03 +0100)] 
detect: cleanup reload thread handling

5 years agothreading: simplify flow timeout loop
Victor Julien [Tue, 12 Nov 2019 11:54:18 +0000 (12:54 +0100)] 
threading: simplify flow timeout loop

5 years agothreading: shrink and reorganize TmSlot
Victor Julien [Tue, 12 Nov 2019 11:44:57 +0000 (12:44 +0100)] 
threading: shrink and reorganize TmSlot

5 years agothreading/threadvars: rearrange for better cache behavior
Victor Julien [Tue, 12 Nov 2019 09:01:18 +0000 (10:01 +0100)] 
threading/threadvars: rearrange for better cache behavior

5 years agothreading/threadvars: remove unused 'prev' field
Victor Julien [Mon, 11 Nov 2019 19:57:35 +0000 (20:57 +0100)] 
threading/threadvars: remove unused 'prev' field

5 years agothreading: remove unused 'TmThreadRemove' function
Victor Julien [Mon, 11 Nov 2019 19:53:03 +0000 (20:53 +0100)] 
threading: remove unused 'TmThreadRemove' function

5 years agothreading: remove handler names to shink struct
Victor Julien [Mon, 11 Nov 2019 19:49:24 +0000 (20:49 +0100)] 
threading: remove handler names to shink struct

Shrink ThreadVars by removing the queue handler names that are only
used at shutdown. Since this is not performance critical, we can use
the id's to look up the queue handler.

5 years agothreading/queues: add way to lookup by ID
Victor Julien [Mon, 11 Nov 2019 19:48:11 +0000 (20:48 +0100)] 
threading/queues: add way to lookup by ID

In preparation of doing runtime operations by ID instead of by name,
add functions to look up by ID and to convert name to ID.

5 years agothreading: shrink threadvars struct size
Victor Julien [Mon, 11 Nov 2019 16:01:12 +0000 (17:01 +0100)] 
threading: shrink threadvars struct size

5 years agothreading: remove unused threadvars field
Victor Julien [Mon, 11 Nov 2019 15:52:47 +0000 (16:52 +0100)] 
threading: remove unused threadvars field

5 years agothreading: clarify threadvars fields
Victor Julien [Mon, 11 Nov 2019 15:49:55 +0000 (16:49 +0100)] 
threading: clarify threadvars fields

5 years agothreading: cleanup packet thread shutdown loop
Victor Julien [Mon, 11 Nov 2019 15:11:55 +0000 (16:11 +0100)] 
threading: cleanup packet thread shutdown loop

5 years agosource-pcap: remove unused function
Victor Julien [Mon, 11 Nov 2019 14:44:33 +0000 (15:44 +0100)] 
source-pcap: remove unused function

5 years agothreading/modules: declare prototypes static
Victor Julien [Mon, 11 Nov 2019 07:16:26 +0000 (08:16 +0100)] 
threading/modules: declare prototypes static

Declare registered threading API funcs static where appropriate.

5 years agosources: fix pipeline failure handling
Victor Julien [Mon, 11 Nov 2019 14:26:32 +0000 (15:26 +0100)] 
sources: fix pipeline failure handling

When TmThreadsSlotProcessPkt fails it will return the packet that was
passed to it to the packetpool.

Some of the packet sources were doing this manually as well. This patch
fixes those sources.

5 years agothreading: use tm_flowworker for pseudo packets
Victor Julien [Mon, 11 Nov 2019 10:19:44 +0000 (11:19 +0100)] 
threading: use tm_flowworker for pseudo packets

Pseudo packets don't need to be processed by the decoding layer.

5 years agothreading: add shortcut to flowworker
Victor Julien [Mon, 11 Nov 2019 10:11:55 +0000 (11:11 +0100)] 
threading: add shortcut to flowworker

5 years agothreading: remove per slot post_pq
Victor Julien [Sat, 9 Nov 2019 19:24:21 +0000 (20:24 +0100)] 
threading: remove per slot post_pq

Use a single packet queue per thread for flow timeout packet
injection. The per slot queue was unused except for this use
case. Having a single queue makes the logic and implementation
simpler.

In case of 'autofp', the per thread packet queue will actually
use the threads input queue. For workers/single a dedicated
queue will be set up.

Rename TmThreadsSlotHandlePostPQs to TmThreadsHandleInjectedPackets
to reflect the changed logic.

5 years agoaf-packet: prototypes cleanup
Victor Julien [Mon, 11 Nov 2019 07:07:35 +0000 (08:07 +0100)] 
af-packet: prototypes cleanup

Remove unused prototype.

Declare other prototypes static.

5 years agothreading: remove post_pq argument from 'SlotFunc'
Victor Julien [Mon, 11 Nov 2019 07:07:35 +0000 (08:07 +0100)] 
threading: remove post_pq argument from 'SlotFunc'

This was not in use anywhere.

5 years agorunmodes: code cleanups
Victor Julien [Mon, 4 Nov 2019 18:40:07 +0000 (19:40 +0100)] 
runmodes: code cleanups

5 years agodetect: clean up threads handling
Victor Julien [Mon, 4 Nov 2019 10:46:54 +0000 (11:46 +0100)] 
detect: clean up threads handling

Clean up reload and break loop thread handling.

5 years agodetect: inject packet cleanup
Victor Julien [Mon, 4 Nov 2019 10:20:40 +0000 (11:20 +0100)] 
detect: inject packet cleanup

5 years agoflow-manager: code cleanups
Victor Julien [Sun, 3 Nov 2019 19:43:56 +0000 (20:43 +0100)] 
flow-manager: code cleanups

5 years agoflow-manager: avoid doubly signaling threads
Victor Julien [Sun, 3 Nov 2019 19:42:47 +0000 (20:42 +0100)] 
flow-manager: avoid doubly signaling threads

Don't try to wake up the threads we just flagged and validated that
they changed their state.

5 years agothreading: remove commented out function
Victor Julien [Sun, 3 Nov 2019 19:13:33 +0000 (20:13 +0100)] 
threading: remove commented out function

5 years agothreading: optimize and unify post_pq checks
Victor Julien [Sun, 3 Nov 2019 15:02:21 +0000 (16:02 +0100)] 
threading: optimize and unify post_pq checks

TmThreadsSlotProcessPkt did not need to look all 'slots' as only the first
slots post_pq can have been used.

Unify post_pq cleanup handling.

5 years agothreading: remove wrong unlikely statement; minor cleanups
Victor Julien [Sun, 3 Nov 2019 14:57:23 +0000 (15:57 +0100)] 
threading: remove wrong unlikely statement; minor cleanups

5 years agothreading: TmSlot::SlotFunc does not need to be atomic
Victor Julien [Sun, 3 Nov 2019 14:47:01 +0000 (15:47 +0100)] 
threading: TmSlot::SlotFunc does not need to be atomic

5 years agothreading: fix flags handling by using uint32_t everywhere
Victor Julien [Sun, 3 Nov 2019 09:37:06 +0000 (10:37 +0100)] 
threading: fix flags handling by using uint32_t everywhere

5 years agothreading: optimize error handling in main packet loop
Victor Julien [Sun, 3 Nov 2019 09:02:18 +0000 (10:02 +0100)] 
threading: optimize error handling in main packet loop

5 years agothreading: minor code style cleanups
Victor Julien [Sun, 3 Nov 2019 09:00:14 +0000 (10:00 +0100)] 
threading: minor code style cleanups

5 years agothreading: simplify packetpool checks
Victor Julien [Sun, 3 Nov 2019 08:58:34 +0000 (09:58 +0100)] 
threading: simplify packetpool checks

5 years agothreading/queues: add shortcut for packetpool check
Victor Julien [Sun, 3 Nov 2019 08:52:21 +0000 (09:52 +0100)] 
threading/queues: add shortcut for packetpool check

Allows code simplifycation in the threading loops.

5 years agothreading/queues: minor code cleanups
Victor Julien [Sun, 3 Nov 2019 08:28:46 +0000 (09:28 +0100)] 
threading/queues: minor code cleanups

5 years agoafl: fix compilation
Victor Julien [Fri, 7 Feb 2020 13:50:39 +0000 (14:50 +0100)] 
afl: fix compilation

5 years agoafl/decoder: make file dumps optional
Victor Julien [Fri, 20 Sep 2019 10:27:13 +0000 (12:27 +0200)] 
afl/decoder: make file dumps optional

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

5 years agosmb: handle file transactions post-GAP 4506/head
Victor Julien [Tue, 21 Jan 2020 11:20:40 +0000 (12:20 +0100)] 
smb: handle file transactions post-GAP

After a GAP all normal transactions are closed. File transactions
are left open as they can handle GAPs in principle. However, the
GAP might have contained the closing of a file and therefore it
may remain active until the end of the flow.

This patch introduces a time based heuristic for these transactions.
After the GAP all file transactions are stamped with the current
timestamp. If 60 seconds later a file has seen no update, its marked
as closed.

This is meant to fix resource starvation issues observed in long
running SMB sessions where packet loss was causing GAPs.

5 years agoflow: expose last time as a function
Jason Ish [Tue, 3 Dec 2019 20:10:45 +0000 (14:10 -0600)] 
flow: expose last time as a function

This function returns the individual components
of the timeval in output pointers making it suitable
for use over Rust FFI.

5 years agodefrag: set livedev on the reassembled packet (issue-3380)
Jason Ish [Thu, 23 Jan 2020 17:31:06 +0000 (11:31 -0600)] 
defrag: set livedev on the reassembled packet (issue-3380)

Set the livedev on reassembled packets to that of the parent
packet. Fixes issues with multidetect, specifically a segfault
as reported in issue 3380.

Bug #3380.

5 years agoconfigure: fix cygpath check
Victor Julien [Tue, 28 Jan 2020 10:12:19 +0000 (11:12 +0100)] 
configure: fix cygpath check

5 years agooutput/tx: split list of loggers per alproto 4503/head
Victor Julien [Sun, 17 Nov 2019 12:45:42 +0000 (13:45 +0100)] 
output/tx: split list of loggers per alproto

This patch splits the list of loggers the tx logging walks into lists per
alproto. The list was getting longer with each eve addition. The result
was that for each tx we would have to loop through multiple loggers that
did not apply to this tx as it was for the wrong protocol.

5 years agooutput: micro optimization
Victor Julien [Sat, 16 Nov 2019 14:56:15 +0000 (15:56 +0100)] 
output: micro optimization

LogFunc is always set, so don't check for it at runtime.

5 years agooutput: optimize root logging loop
Victor Julien [Sat, 16 Nov 2019 14:46:13 +0000 (15:46 +0100)] 
output: optimize root logging loop

Instead of unconditionally looping all the 'root' loggers, loop only
those that are in use.

Root loggers are: packet, tx, file, filedata, streaming.

5 years agooutput: clarify registration
Victor Julien [Sat, 16 Nov 2019 10:11:02 +0000 (11:11 +0100)] 
output: clarify registration

5 years agooutput/tx: bail early if no flow
Victor Julien [Mon, 9 Feb 2015 07:35:30 +0000 (08:35 +0100)] 
output/tx: bail early if no flow

5 years agooutput: fatal error if root logger alloc fails
Victor Julien [Wed, 20 Nov 2019 09:47:14 +0000 (10:47 +0100)] 
output: fatal error if root logger alloc fails

5 years agorust: make clean fixups 4501/head
Jason Ish [Fri, 24 Jan 2020 18:27:27 +0000 (12:27 -0600)] 
rust: make clean fixups

For make clean, only remove gen/ if cbindgen is available.
This prevents make clean from remove gen when the headers
were bundled, but cbindgen is not available to remove them.

Unconditionally remove gen and vendor in maintainerclean.

5 years agogithub-ci: test make after make clean
Jason Ish [Fri, 24 Jan 2020 16:14:21 +0000 (10:14 -0600)] 
github-ci: test make after make clean

On the CentOS 7 build, test a make after a make clean. Should
catch the case where bundled generated headers files get deleted
when cbindgen is not available to rebuild them.

5 years agorust: set edition to 2018
Jason Ish [Mon, 16 Dec 2019 19:42:44 +0000 (13:42 -0600)] 
rust: set edition to 2018

5 years agorust: cargo fix for Rust 2018 edition
Jason Ish [Mon, 16 Dec 2019 19:41:07 +0000 (13:41 -0600)] 
rust: cargo fix for Rust 2018 edition

5 years agogithub-ci: add .cargo/bin to path on cbindgen install
Jason Ish [Mon, 16 Dec 2019 16:48:44 +0000 (10:48 -0600)] 
github-ci: add .cargo/bin to path on cbindgen install

And remove cbindgen from builds that use the distribution
archive.

5 years agorust/cbindgen: Revert Makefile to a more pre-cbindgen state
Jason Ish [Tue, 14 Jan 2020 15:52:28 +0000 (09:52 -0600)] 
rust/cbindgen: Revert Makefile to a more pre-cbindgen state

The modifications as part of the cbindgen commit caused issues
with distcheck, revert the Makefile to how it was with the Python
generator, but still using cbindgen.

Also always assume we'll include the generated headers in the
distribution archive to fix make distcheck from distribution
archives with headers included, but no cbindgen.

5 years agobuild: cbindgen
Danny Browning [Tue, 25 Jun 2019 18:16:52 +0000 (12:16 -0600)] 
build: cbindgen

Rust headers are now generated using cbindgen. If cbindgen is present, they can
be generated during dist, otherwise they will be available for builds.

5 years agoversion: starting work on 6.0.0
Jason Ish [Fri, 24 Jan 2020 16:15:30 +0000 (10:15 -0600)] 
version: starting work on 6.0.0

Bump version to 6.0.0-dev.

5 years agostreaming/api: fix overlap check 4492/head
Victor Julien [Sat, 14 Dec 2019 19:20:45 +0000 (20:20 +0100)] 
streaming/api: fix overlap check

In some cases a SBB could be seen as overlapping with the requested
offset, when it was in fact precisely before it. In some special cases
this could lead to the stream engine not progressing the 'raw' progress.

5 years agodebug/validation: check tcp/app-layer data lengths
Victor Julien [Sat, 14 Dec 2019 06:11:26 +0000 (07:11 +0100)] 
debug/validation: check tcp/app-layer data lengths

5 years agostream: improve app-layer data retrieval with GAPs
Victor Julien [Fri, 13 Dec 2019 21:26:30 +0000 (22:26 +0100)] 
stream: improve app-layer data retrieval with GAPs

Don't assume that the next block after the sbb head is after the
requested offset.

If the next block was before the offset, the returned data_len
would underflow and return a nonsense value to the app-layer.

Bug #2993.

5 years agomodbus: Correct typo
Jeff Lucovsky [Sat, 11 Jan 2020 14:51:00 +0000 (09:51 -0500)] 
modbus: Correct typo

5 years agomodbus: Update correct TX flags
Jeff Lucovsky [Sat, 11 Jan 2020 14:49:55 +0000 (09:49 -0500)] 
modbus: Update correct TX flags

5 years agoanalysis: exit if table entries are stale
Jeff Lucovsky [Sat, 4 Jan 2020 14:12:38 +0000 (09:12 -0500)] 
analysis: exit if table entries are stale

This commit causes Suricata to exit when a buffer from the analyzer
table is not recognized.

Since the table must match what's registered, exiting will bring noticed
to the condition.

5 years agorust: fix vendor use on MinGW 4490/head
Victor Julien [Fri, 17 Jan 2020 15:40:38 +0000 (16:40 +0100)] 
rust: fix vendor use on MinGW

5 years agorust: Don't use --frozen during build.
Jason Ish [Thu, 16 Jan 2020 15:30:28 +0000 (09:30 -0600)] 
rust: Don't use --frozen during build.

If sources are vendored, we get the same effect of using frozen
with a lock file, and the Cargo.lock is generated based
on the vendored sources.

This also removes the need to ship a Cargo.lock.

Fixed out of source builds with vendored sources.

5 years agorust/Makefile: Don't include Cargo.toml
Jason Ish [Thu, 16 Jan 2020 15:09:13 +0000 (09:09 -0600)] 
rust/Makefile: Don't include Cargo.toml

There is no need to include Cargo.toml in the distribution,
it is always generated from Cargo.toml.in during
./configure.

5 years agogithub-ci: do distcheck on fedora 31 build
Jason Ish [Wed, 8 Jan 2020 16:16:40 +0000 (10:16 -0600)] 
github-ci: do distcheck on fedora 31 build

There were no distchecks being done on builds from git.

5 years agogithub-ci: make distcheck on centos 7 build
Jason Ish [Tue, 31 Dec 2019 15:19:43 +0000 (09:19 -0600)] 
github-ci: make distcheck on centos 7 build

Tests distcheck on a build from a distribution archive.

5 years agodoc/conf: Update copyright and regex for version
Shivani Bhardwaj [Sat, 21 Dec 2019 00:22:42 +0000 (05:52 +0530)] 
doc/conf: Update copyright and regex for version

Make the new regex in compliance with the modern autoconf syntax.
Closes redmine ticket #3423

5 years agodoc: minor capitalization fix 4460/head
jason taylor [Wed, 18 Dec 2019 14:59:54 +0000 (09:59 -0500)] 
doc: minor capitalization fix

Signed-off-by: jason taylor <jtfas90@gmail.com>
5 years agodoc: add bsize documentation and rule example
jason taylor [Wed, 18 Dec 2019 14:59:23 +0000 (09:59 -0500)] 
doc: add bsize documentation and rule example

Signed-off-by: jason taylor <jtfas90@gmail.com>
5 years agorust: remove unnecessary parentheses (Rust 1.40 fixup) 4457/head
Jason Ish [Thu, 19 Dec 2019 17:02:56 +0000 (11:02 -0600)] 
rust: remove unnecessary parentheses (Rust 1.40 fixup)

Rust 1.40 in strict mode will now fail the build on the
presence of unnecessary parentheses.

warning: unnecessary parentheses around type
  --> src/smb/smb2_ioctl.rs:41:12
   |
41 |         -> (&mut SMBTransaction)
   |            ^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
   |
   = note: `#[warn(unused_parens)]` on by default

5 years agogithub-ci: use container for 18.04 build 4444/head
Jason Ish [Fri, 13 Dec 2019 15:14:35 +0000 (09:14 -0600)] 
github-ci: use container for 18.04 build

As the action runs natively on 18.04 we were not explicitly
setting a container, but this means we're using what GitHub
provides us as a default state which might be broken. Instead
use the standard Ubuntu 18.04 container.

5 years agoversion: starting work on 5.0.2
Victor Julien [Fri, 13 Dec 2019 15:49:52 +0000 (16:49 +0100)] 
version: starting work on 5.0.2

5 years agoversion: release 5.0.1 suricata-5.0.1
Victor Julien [Thu, 12 Dec 2019 08:54:45 +0000 (09:54 +0100)] 
version: release 5.0.1

5 years agochangelog: update for 5.0.1
Victor Julien [Fri, 13 Dec 2019 10:09:18 +0000 (11:09 +0100)] 
changelog: update for 5.0.1

5 years agodetect/asn1: fix offset bounds checking
Victor Julien [Sun, 3 Nov 2019 08:50:14 +0000 (09:50 +0100)] 
detect/asn1: fix offset bounds checking

5 years agoipv4: continue parsing options after invalid option
Jason Ish [Thu, 14 Nov 2019 20:56:43 +0000 (14:56 -0600)] 
ipv4: continue parsing options after invalid option

As long as an option has a valid length, we can continue
parsing the options after an invalid one.

5 years agoipv4: fail packet decoding on bad ipv4 option length
Jason Ish [Thu, 14 Nov 2019 17:34:56 +0000 (11:34 -0600)] 
ipv4: fail packet decoding on bad ipv4 option length

Currently all failures in IPv4 option decode are ignore with
respect to continuing to handle the packet.

Change this to fail, and abort handling the packet if the
option length is invalid.

Ticket 3328:
https://redmine.openinfosecfoundation.org/issues/3328

5 years agostream: reject broken ACK packets
Victor Julien [Thu, 21 Nov 2019 15:10:21 +0000 (16:10 +0100)] 
stream: reject broken ACK packets

Fix evasion posibility by rejecting packets with a broken ACK field.
These packets have a non-0 ACK field, but do not have a ACK flag set.

Bug #3324.

Reported-by: Nicolas Adba
5 years agostream: fix SYN_SENT RST/FIN injection
Victor Julien [Thu, 21 Nov 2019 13:47:04 +0000 (14:47 +0100)] 
stream: fix SYN_SENT RST/FIN injection

RST injection during the SYN_SENT state could trick Suricata into marking
a session as CLOSED. The way this was done is: using invalid TSECR value
in RST+ACK packet. The ACK was needed to force Linux into considering the
TSECR value and compare it to the TSVAL from the SYN packet.

The second works only against Windows. The client would not use a TSVAL
but the RST packet would. Windows will reject this, but Suricata considered
the RST valid and triggered the CLOSED logic.

This patch addresses both. When the SYN packet used timestamp support
the timestamp of incoming packet is validated. Otherwise, packet responding
should not have a timestamp.

Bug #3286

Reported-by: Nicolas Adba
5 years agoconfigure: require libhtp 0.5.32 4441/head
Victor Julien [Fri, 13 Dec 2019 10:12:15 +0000 (11:12 +0100)] 
configure: require libhtp 0.5.32

5 years agodecode/tcp: accept TCP fast open cookie request
Victor Julien [Thu, 12 Dec 2019 14:57:29 +0000 (15:57 +0100)] 
decode/tcp: accept TCP fast open cookie request

5 years agoconfigure: fix test -f for rust/vendor, should be -e
Jason Ish [Tue, 10 Dec 2019 22:40:35 +0000 (16:40 -0600)] 
configure: fix test -f for rust/vendor, should be -e

Introduced with commit: c08ec8d8b27280e2bcb066c9caa24da97e0419ee

5 years agogithub-ci: in a dist build, check that --frozen is being used
Jason Ish [Tue, 10 Dec 2019 22:22:02 +0000 (16:22 -0600)] 
github-ci: in a dist build, check that --frozen is being used

Verify that ./configure is picking up the vendored Rust sources
when building from a dist archive.

5 years agohtp: close request only from request side
Victor Julien [Wed, 11 Dec 2019 19:57:57 +0000 (20:57 +0100)] 
htp: close request only from request side

This allows the response side to keep going for just
a bit longer.

5 years agostream: in IDS mode, call app-layer at EOF
Victor Julien [Wed, 11 Dec 2019 19:57:07 +0000 (20:57 +0100)] 
stream: in IDS mode, call app-layer at EOF

On stream end call app-layer with empty message in IDS mode.

5 years agoeve: support pcap_filename for unix socket mode 4436/head
Victor Julien [Tue, 10 Dec 2019 11:48:56 +0000 (12:48 +0100)] 
eve: support pcap_filename for unix socket mode

Bug #3390.