Commit Graph

14503 Commits (a3c8105ac4e3956b208911ece38f2e6a3f724381)
 

Author SHA1 Message Date
Victor Julien a3c8105ac4 fuzz: spelling: AFLFUZZ_PERSISTENT_MODE 1 year ago
Victor Julien 4dbdaf8a8e doc/install: point to userguide 1 year ago
Victor Julien 19cabc9a02 doc: remove legacy windows install guide 1 year ago
Victor Julien 01f43604b9 doc: remove legacy pfring install guide 1 year ago
Victor Julien 9520aac79c prscript: remove as it is obsolete 1 year ago
Wes Hurd aee41957e1 doc: add docutils.conf to disable smart quotes 1 year ago
Victor Julien 2634e6b3f8 runmode/unix-socket: don't lead http range memory
Init was per run, Deinit global, so Init overwrote memory if multiple
pcaps were processed.

Bug: #6046.
1 year ago
Victor Julien 74d03c2b61 detect/loader: set proper thread flags
Fixes: 13beba141c ("source: add THV_RUNNING flag to notify of running state")

Bug: #6043.
1 year ago
Victor Julien d630f0fa34 rust: rustfmt files with recent new tests 1 year ago
Victor Julien 77f1658c2a rust: fix new clippy warnings 1 year ago
Andreas Herz 3045e75ee1 doc: add note on the hashsize recommendation for datasets 1 year ago
Lancer Cheng 0cf742a9ca smb: add unit tests
Issue: 4865
1 year ago
Victor Julien a006aef4d0 doc: fix description of iptables rules 1 year ago
tianjinshan 2c0c6cb0a5 smb/ntlmssp: fix parsing of negotiate flags
Ticket: #5783
1 year ago
Bazzan Don 38b3fffbc7 doc/optimization: move "convert.py" to Python3
Ticket: #5596
1 year ago
Morris Chan b9aac6dd18 yaml: grammar fixup 1 year ago
Juliana Fajardini ae2a477978 devguide: clarify clang formatting changes policy
It was pointed out by a contributor that our workflow mentioned
rewrite-branch as the preferred way, while in fact our policy is to add
said changes to a different commit. Updating documentation to prevent
other situations like that.
1 year ago
Juliana Fajardini dc71faaa8a scripts/clang: remove mention to rewrite-branch
Although we prefer that formatting changes (e.g. the ones made by
running clang) go in a different commit, our script error message was
still suggesting `rewrite-branch` as an option. Removed that and added
that the changes made by the script should go into a separate commit.
1 year ago
Rafael Girão 6ec3bc189a docs: remove obsolete af-packet warning 1 year ago
Jason Ish 0e55307c1d app-layer: remove APP_LAYER_PARSER_OPT_UNIDIR_TXS
This flag is no longer needed as a parser can now create a transaction
as unidirectional.

Setting this flag also doesn't make sense on parsers that may have
request/reply and some unidirectional messaging.
1 year ago
John Dewey 365bec3da6 netmap: Correct LB + Netmap YAML usage
Corrected the example YAML configuration when using Netmap and
LB.
1 year ago
Philippe Antoine 6b9fce7728 app-layer: shorter code for proto string helpers 1 year ago
Philippe Antoine e1046239ea scripts: fix setup app layer for output
using rust nowadays.

Also remove useless code about files that do not need changes
anymore
1 year ago
Philippe Antoine 5b2605bdfe debug: use AppProtoToString
instead of recoding it.
This way, setup-app-layer.py needs to patch one file less
1 year ago
Philippe Antoine e80974966d detect: allow 0-sized non-NULL buffers to match
Such as a HTTP1 header with an empty value

Ticket: #6025
1 year ago
Jason Ish b5fbdc3e5f capture: use uint16_t for max_pending_packets
Use a fixed type of max_pending_packets instead of intmax_t which can
differ based on the platform/standard library.

Should also prevent lints about possible arithmetic overflow.
1 year ago
Shivani Bhardwaj bbe13885a2 util/mime: enable debug validation check 1 year ago
Shivani Bhardwaj c0067a5fff smtp: return on line completion
Problem:
If we receive a long line w/o LF, we cap it to 4k bytes and wait until a
line with LF comes in order to consider the previous line complete. Any
data post the 4k bytes is discarded. Currently, if a line with LF comes
in after a long line, we reset all the parameters used for processing it
like the line.len and line.delim_len but we still make the call to
SMTPProcessRequest fn without even the need to process anything. Since
such a line (with len and delim_len set to 0) should not reach mime
decoder, a debug assertion triggers there in this case.

Fix:
Make sure to return early as the line has to be skipped and not
processed at all.

Bug 6019
1 year ago
Arne Welzel 51aef3c230 af-packet: Ignore outgoing packets on loopback interfaces
When reading a loopback interface, packets are received twice: Once as
outgoing packets and once as incoming packets.

Libpcap ignores outgoing packets. With current versions of Suricata, sniffing
a single http://localhost:80 request over lo using the af-packet source
minimally shows two syn packets, two synacks and twice as many packets in
the stats entries than you'd expect when running tcpdump or Wireshark.
1 year ago
Victor Julien cd7d6e651a error: minor header cleanup 1 year ago
Victor Julien 235ee36211 respond/reject: fix IPv6 TCP resets
Fix length and next header field settings.

Bug: #6038.
1 year ago
Victor Julien 1f0aed0775 respond/reject: minor code cleanups 1 year ago
Victor Julien adf0bef7f0 respond/reject: minor cleanups 1 year ago
Jason Ish f8ec993401 rust/time: add note why this needs to be pinned 1 year ago
Jason Ish 5925b63d82 rust: update x509-parser to 0.15.0 1 year ago
Shivani Bhardwaj 6190913a46 util/mime: disable assertion check until resolution 1 year ago
Victor Julien 5890a8a8ab detect: register multi-buffer keywords
Register the keywords that use multi buffer support as such, so that
rule parsing can set them up with multi-instance support.

Ticket: #5784.
1 year ago
Victor Julien ad88efc2d8 detect: support multi buffer matching
Multi buffer matching is implemented as a way for a rule to match
on multiple buffers within the same transaction.

Before this patch a rule like:

    dns.query; content:"example"; dns.query; content:".com";

would be equivalent to:

    dns.query; content:"example"; content:".com";

If a DNS query would request more than one name, e.g.:

    DNS: [example.net][something.com]

Eeach would be inspected to have both patterns present. Otherwise,
it would not be a match. So the rule above would not match, as neither
example.net and somthing.com satisfy both conditions at the same time.

This patch changes this behavior. Instead of the above, each time the
sticky buffer is specified, it creates a separate detection unit. Each
buffer is a "multi buffer" sticky buffer will now be evaluated against
each "instance" of the sticky buffer.

To continue with the above example:

    DNS: [example.net] <- matches 'dns.query; content:"example";'
    DNS: [something.com] <- matches 'dns.query; content:".com"'

So this would now be a match.

To make sure both patterns match in a single query string, the expression
'dns.query; content:"example"; content:".com";' still works for this.

This patch doesn't yet enable the behavior for the keywords. That is
done in a follow up patch.

To be able to implement this the internal storage of parsed rules
is changed. Until this patch and array of lists was used, where the
index was the buffer id (e.g. http_uri, dns_query). Therefore there
was only one list of matches per buffer id. As a side effect this
array was always very sparsely populated as many buffers could not
be mixed.

This patch changes the internal representation. The new array is densely
packed:

    dns.query; content:"1"; dns.query; bsize:1; content:"2";

    [type: dns_query][list: content:"1";]
    [type: dns_query][list: bsize:1; content:"2";]

The new scheme allows for multiple instances of the same buffer.
These lists are then translated into multiple inspection engines
during the final setup of the rule.

Ticket: #5784.
1 year ago
Jason Ish 1c6644ef4e detect: fix setting of flag for rule reload
As part of 6d8b50b748, the settings of
THV_CAPTURE_INJECT_PKT ended up in a location unreachable by capture
methods that did not have PktAcqBreakLoop.

Instead, always call TmThreadsCaptureBreakLoop which handles the logic
for how the read loop should be broken.

This fixes the case where read threads won't "break" for rule reloads
until packets are seen.

Ticket: #6021
1 year ago
Lukas Sismis f961d3bb95 runmodes: introduce unknown engine mode
Querying an engine mode with an unknown value signals a bug when
the engine mode has not been determined but is already queried by
other functions.

Ticket: #5959
1 year ago
Lukas Sismis 8f1c39bb1c policy: postpone evaluation of exception policy after setting the engine mode
Master exception policy queried engine mode earlier than it was
determined from the configuration file/command line. As a result it
used the default (IDS) mode. However, the engine mode could have been
reconfigured later on to the IPS mode. This lead into an undefined behavior
as master exception policy behaves according to the configured engine mode.

Ticket: #5960
1 year ago
Lukas Sismis 5a6d5702a4 bpf: refactor the BPF code and postpone querying of the engine mode
BPF codebase queried engine mode earlier than it was determined from
the configuration file/command line. As a result it used the default (IDS)
mode where it could've been configured later on to the IPS mode.
This could lead into an undefined behavior as some Suricata modules behave
according to the engine mode.

PF-Ring, Netmap and AF-Packet all shared almost identical code for
determining the engine mode. It was put into one common function.
Omitted the usage of SCStrdup function in PF-Ring module as it is
uppercased during thread initialization phase.

Ticket: #5957
1 year ago
Jeff Lucovsky 22485b368e source/nfq: Improve retry counter limit name
The NFQ verdict retry is based on attempts, not time; thus, we rename
the token controlling it to reflect that.
1 year ago
Jeff Lucovsky b470b55635 nfq: Ensure packet release function set
Issue: 5916

This commit ensures that the packet release function is set in
case the packet is released early.
1 year ago
Jeff Lucovsky 804c442568 general/typo: Correct typo
Issue: 5916
1 year ago
William Correia e378aa8d15 modbus: bump crate version
sawp 0.12 is available and addresses future compilation failures in
dependent crates.
Updated modbus test case to expect 12 bytes needed instead of 15. This
aligns with expectations as the test case slices 3 bytes off the end of
a 12 byte message so needing 12 bytes is correct.

Ticket #5989
1 year ago
Jeff Lucovsky 61783c4e42 pfring: Prefix messages with interface name
This commit modifies the log messages to follow the style of AF_PACKET
(and others). When the interface name is part of the message, the
message will be structured as: "<iface-name>: <message>"

Issue: 5975
1 year ago
Jeff Lucovsky 0ad6d4358f add to doc/pfring: Document additional cluster types 1 year ago
Jeff Lucovsky e26e7b4f0a gen: Typo correction
This commit fixes various typos in the pf-ring source modules.

Issue: 5975
1 year ago
Jeff Lucovsky 4f7a36ac2e config/pf-ring: Change default cluster type: cluster_flow
This commit changes the default pf-ring cluster type to cluster-flow.
Round-robin clustering is not recommended for Suricata.

Issue: 5975
1 year ago