Commit graph

16055 commits

Author SHA1 Message Date
Arne Welzel
03e5ac3078 Merge branch 'topic/awelzel/topic/awelzel/2698-sqlite-backend-options'
* topic/awelzel/topic/awelzel/2698-sqlite-backend-options:
  broker/store: Extend SQLiteOptions around data safety and performance
  auxil/broker: Bump submodule
2023-01-30 11:06:27 +01:00
Arne Welzel
f35cf228dc broker/store: Extend SQLiteOptions around data safety and performance
Add configurability of synchronous and journal_mode for SQLite backed
Broker data stores. Setting these to synchronous=normal and journal_mode=wal
can significantly improve throughput at the cost of some durability in
the presence of power loss or OS crash. In the context of Zeek, this is
likely more than acceptable.

Additionally, add integrity_check and failure_mode options to support deleting
and re-opening a corrupted SQLite database at store creation.

Closes #2698
2023-01-30 10:25:37 +01:00
Arne Welzel
b720f71e5e auxil/broker: Bump submodule 2023-01-30 10:25:33 +01:00
Tim Wojtulewicz
a1b003a9e2 Merge remote-tracking branch 'origin/topic/timw/enable-debian10-prs'
* origin/topic/timw/enable-debian10-prs:
  Enable Debian 10 builds for PRs
2023-01-28 09:47:05 -07:00
Tim Wojtulewicz
4c3bd8b4a6 Enable Debian 10 builds for PRs 2023-01-28 09:25:28 -07:00
Tim Wojtulewicz
c6af2b2a8b Merge remote-tracking branch 'origin/topic/timw/update-smb1-test-pcap'
* origin/topic/timw/update-smb1-test-pcap:
  Update smb1-OSS-fuzz-54883.pcap to have correct snaplen
2023-01-28 08:52:44 -07:00
Tim Wojtulewicz
48a7a6a0fb Update smb1-OSS-fuzz-54883.pcap to have correct snaplen 2023-01-28 08:19:05 -07:00
Arne Welzel
d54b465409 ci-notification: No notifications for "skipped" runs [skip ci]
It is not useful to receive email notifications for CI runs
that were skipped.
2023-01-28 15:12:07 +01:00
Tim Wojtulewicz
84ac362c67 Restore/rename field in SMB2::Fscontrol record type
b41a4bf06d removed a field from this record
because it had a duplicate name as another field. The field does need to
exist, but it needs the correct name.
2023-01-27 17:39:10 -07:00
zeek-bot
3a4a6fad08 Update doc submodule [nomail] [skip ci] 2023-01-28 00:33:36 +00:00
Tim Wojtulewicz
bb094e30bf Merge remote-tracking branch 'origin/topic/awelzel/2726-smb1-expr-error-with-tree-connect-response'
* origin/topic/awelzel/2726-smb1-expr-error-with-tree-connect-response:
  smb1: Prevent accessing uninitialized referenced_tree
2023-01-27 13:25:08 -07:00
Tim Wojtulewicz
3648ded80e Merge remote-tracking branch 'origin/topic/neverlord/broker-submodule-bump'
* origin/topic/neverlord/broker-submodule-bump:
  Update Broker submodule
2023-01-27 13:23:48 -07:00
Tim Wojtulewicz
3216817d89 Merge remote-tracking branch 'origin/topic/timw/pvs-studio-findings'
* origin/topic/timw/pvs-studio-findings:
  Add tooling section to README
  A bunch of other minor issues reported by PVS-Studio
  Simplify setup of IPv6 DNS resolvers
  Add missing assignment operators to RobustDictIterator
  Fix some member-variable shadowing issues
  Fix/simplify some if statement comparisons
  Fix a few minor int pointer value initializations
  Fix a bunch of missing class member initializations
  Remove unnecessary virtual specifiers from final classes
2023-01-27 13:23:23 -07:00
Tim Wojtulewicz
467e0a27a7 Add tooling section to README 2023-01-27 13:03:52 -07:00
Tim Wojtulewicz
35ee96c4cb A bunch of other minor issues reported by PVS-Studio 2023-01-27 13:03:52 -07:00
Tim Wojtulewicz
53f2364a86 Simplify setup of IPv6 DNS resolvers 2023-01-27 13:03:52 -07:00
Tim Wojtulewicz
34f7c95a51 Add missing assignment operators to RobustDictIterator 2023-01-27 13:03:52 -07:00
Tim Wojtulewicz
4cdd68f019 Fix some member-variable shadowing issues 2023-01-27 13:03:19 -07:00
Tim Wojtulewicz
5bfd84a903 Fix/simplify some if statement comparisons 2023-01-27 13:03:19 -07:00
Tim Wojtulewicz
103b381874 Fix a few minor int pointer value initializations 2023-01-27 13:03:18 -07:00
Tim Wojtulewicz
3b0e8ee6f1 Fix a bunch of missing class member initializations 2023-01-27 13:03:18 -07:00
Tim Wojtulewicz
7374688d0d Remove unnecessary virtual specifiers from final classes 2023-01-27 13:03:18 -07:00
Arne Welzel
adf56ef4d8 Skip somer error reporting when the record type has errors
The added test cases around function/event invocations report the
following flurry of errors when only the first one is relevant and
actionable. There's little use in reporting a mismatch with "error".
Squelch them.

    error in <...>/function-invoke-mismatch-error.zeek, line 8: identifier not defined: MyEnumTypo
    error in <...>/function-invoke-mismatch-error.zeek, line 12 and error: type mismatch (M::MY_ENUM_A and error)
    error in <...>/function-invoke-mismatch-error.zeek, line 12: argument type mismatch in function call (M::to_string(M::MY_ENUM_A))
    error in <...>/function-invoke-mismatch-error.zeek, line 16 and error: type mismatch (M::MY_ENUM_B and error)
    error in <...>/function-invoke-mismatch-error.zeek, line 16: argument type mismatch in function call (M::to_string(M::MY_ENUM_B))
    error in <...>/function-invoke-mismatch-error.zeek, line 20 and error: type mismatch (M::e and error)
    error in <...>/function-invoke-mismatch-error.zeek, line 20: argument type mismatch in function call (M::to_string(M::e))

Record coercion also reports noisy errors when coercing to a type that
has errors for individual fields, type clashing with "error":

    $ zeek language/record-field-error.zeek
    error in ./language/record-coerce-error.zeek, line 8: identifier not defined: MyEnumTypo
    error in ./language/record-coerce-error.zeek, line 19 and ./language/record-coerce-error.zeek, line 5: type clash for field "e" ((coerce [$e=MY_ENUM_B, $s=test] to MyRecord) and MyEnum)
2023-01-27 20:49:22 +01:00
Tim Wojtulewicz
6876462f48 Merge remote-tracking branch 'origin/topic/timw/teredo-detect-length-check'
* origin/topic/timw/teredo-detect-length-check:
  Add a few extra length checks to Teredo::DetectProtocol
2023-01-27 12:08:34 -07:00
Arne Welzel
8be8c22b3e smb1: Prevent accessing uninitialized referenced_tree
The added pcap was created from an OSS Fuzz test case and is borderline
valid SMB traffic, but it triggered a scripting error.

Closes #2726
2023-01-27 19:22:13 +01:00
Arne Welzel
589e042e26 Merge branch 'topic/awelzel/ci-notification-adaption'
* topic/awelzel/ci-notification-adaption:
  github: cat the check_suite payload
  github: Send emails for success conclusion, too
2023-01-27 18:45:32 +01:00
Tim Wojtulewicz
2866bbea4d Add a few extra length checks to Teredo::DetectProtocol 2023-01-27 10:37:24 -07:00
Arne Welzel
24652d07b6 github: cat the check_suite payload
Seeing spurious emails being sent when rerunning tasks. Maybe
the event contains some details.
2023-01-27 18:25:21 +01:00
Arne Welzel
61fb0be021 github: Send emails for success conclusion, too
Default behavior of the ci-email-action is to filter
cancelled,neutral,success. We're interested in
success for the time being.
2023-01-27 17:35:27 +01:00
Arne Welzel
fa48c88533 mysql: Recognize when client/server negotiate SSL
This instantiates the SSL analyzer when the client requests SSL
so that Zeek now has a bit more visibility into encrypted MySQL
connections.

The pattern used is the same as in the IMAP, POP or XMPP analyzer.
2023-01-27 12:42:19 +01:00
Arne Welzel
e9caea9694 Merge branch 'topic/awelzel/2696-mysql-analyzer-issues'
* topic/awelzel/2696-mysql-analyzer-issues:
  testing/mysql: Add traces recorded with a free-tier MySQL instance
  MySQL: Fix endianness, introduce mysql_eof() event
2023-01-27 11:25:23 +01:00
Arne Welzel
03dc21a861 testing/mysql: Add traces recorded with a free-tier MySQL instance
Not sure this adds much more coverage then there was, but minimally
more recent software versions.

The instances/passwords were ephemeral, so hostname and password hashes
etc aren't useful to anyone.
2023-01-27 10:59:23 +01:00
Arne Welzel
672602dae7 MySQL: Fix endianness, introduce mysql_eof() event
We were parsing MySQL using bigendian even though the protocol is
specified as with "least significant byte first" [1]. This is most
problematic when parsing length encoded strings with 2 byte length
fields...

Further, I think, the EOF_Packet parsing was borked, either due to
testing the CLIENT_DEPRECATE_EOF with the wrong endianness, or due to
the workaround in Resultset processing raising mysql_ok(). Introduce a
new mysql_eof() that triggers for EOF_Packet's and remove the fake
mysql_ok() Resultset invocation to fix. Adapt the mysql script and tests
to account for the new event.

This is a quite backwards incompatible change on the event level, but
due to being quite buggy in general, doubt this matters to many.

I think there is more buried, but this fixes the violation of the simple
"SHOW ENGINE INNODB STATUS" and the existing tests continue to
succeed...

[1] https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_dt_integers.html
2023-01-27 10:59:23 +01:00
zeek-bot
b1b25e4d34 Update doc submodule [nomail] [skip ci] 2023-01-27 00:43:20 +00:00
Arne Welzel
1772a1bd6d Merge branch 'topic/awelzel/no-abort-identified-not-defined'
* topic/awelzel/no-abort-identified-not-defined:
  Tame error reporting and abort() for undefined types
2023-01-26 20:07:14 +01:00
Arne Welzel
25ee288a76 Tame error reporting and abort() for undefined types
The script added as a test case reports the following messages *and*
dumps a core file. Printing the first error and a normal failure exit
seems sufficient. IMO triggering an abort() due to user scripting issues
is not something that Zeek should do

    $ zeek ./identifier-not-defined-error.zeek
    error in ./identifier-not-defined-error.zeek, line 10: identifier not defined: MyEnu
    error in ./identifier-not-defined-error.zeek, line 10 and error: &default value has inconsistent type (M::MY_ENUM_A and error)
    internal error in ./identifier-not-defined-error.zeek, line 11: type inconsistency in ZVal constructor
    Aborted (core dumped)

Change is to skip certain checks when an error type is propagated.
2023-01-26 20:05:02 +01:00
Arne Welzel
c4302ec280 testing/http: http-11-request-then-cruft
A client sends a "proper" HTTP/1.1 request and afterwards a few T /\n\n sequences.
The latter ones aren't logged.
2023-01-26 19:59:39 +01:00
Arne Welzel
0b26866ecf testing/http: Add pcap extracted from m5-long external test-suite
This tests that the HTTP version is now updated if it changes in the
course of a connection.
2023-01-26 19:59:39 +01:00
Arne Welzel
dab551aaa3 testing/external: m57-long baseline update
There's a HTTP server that first replies with HTTP/1.1, then HTTP/1.0.
Seems actually nicer to have the real value within the log/event.
2023-01-26 19:59:28 +01:00
Arne Welzel
3af6b97c63 analyzers/http: Update request_version on subsequent SetVersion() calls
The #124 PR introduced special treatment when HTTP version 0.9
was set. With #127, a reproducer that set HTTP/1.0 in the first
request was created and subsequent requests wouldn't reset to
HTTP version 0.9.

This is subtle, but doesn't seem like things fall apart.

Improves runtime from 20 seconds to 2 seconds for the given
reproducer.

Fixes #127.
2023-01-26 19:59:02 +01:00
Arne Welzel
942f829825 testing/ftp: Add tests and pcaps with invalid reply lines
These have been created artificially. The tests show that for an
invalid reply line without a numeric code, with a numeric code < 100
or a numeric code not followed by a space we now raise an analyzer
violation and disable the analyzer.
2023-01-26 19:56:20 +01:00
Arne Welzel
cf375cf362 ftp: Harden reply handing a bit and don't raise bad replies to script-land
This improves runtime of the oss-fuzz generated traffic in #125.
Specifically, that reproducers included a 064- reply code that was
interpreted as needing to be continued.

Also, return after AnalyzerViolations() for server replies rather than
propagating bad replies them to script-land. This trusts server's to
generally behave according to specification.
2023-01-26 19:56:20 +01:00
Arne Welzel
8f96ac3b77 ftp: ignore invalid commands
Do not propagate wrong FTP commands to script land.
2023-01-26 19:56:20 +01:00
Tim Wojtulewicz
9a96e3b52a Merge remote-tracking branch 'origin/topic/bbannier/bump-spicy'
* origin/topic/bbannier/bump-spicy:
  Bump spicy to v1.6.1.
2023-01-26 10:55:08 -07:00
Tim Wojtulewicz
a27a3532d8 Merge remote-tracking branch 'origin/topic/timw/2658-avoid-teredo-violations'
* origin/topic/timw/2658-avoid-teredo-violations:
  Update external testing repo commit hashes for Teredo changes
  Update scripts.base.frameworks.analyzer.logging btest to use a different trace file
  Update btest baselines due to reduced calls to UID::Set
  Rework TeredoAnalzyer::DetectProtocol to not catch as many packets
2023-01-26 09:44:48 -07:00
Tim Wojtulewicz
f842a86e80 Update external testing repo commit hashes for Teredo changes 2023-01-26 09:23:22 -07:00
Tim Wojtulewicz
6ebfa02199 Update scripts.base.frameworks.analyzer.logging btest to use a different trace file 2023-01-26 09:14:00 -07:00
Tim Wojtulewicz
3d5918e6b3 Update btest baselines due to reduced calls to UID::Set
UID::Set is called by AnalyzerViolation, and since Teredo isn't calling nearly
as many of those anymore the UIDs used by other calls changed as well.
2023-01-26 09:14:00 -07:00
Tim Wojtulewicz
b0ac20b2f2 Rework TeredoAnalzyer::DetectProtocol to not catch as many packets 2023-01-26 09:14:00 -07:00
Tim Wojtulewicz
8a9dd7b0ae Merge remote-tracking branch 'origin/topic/timw/2669-for-loop-error'
* origin/topic/timw/2669-for-loop-error:
  GH-2669: Give script location for type clash in for-loop construction
2023-01-26 09:11:51 -07:00