-
After recently-merged fixes to the node formula for Homebrew, JavaScript support via
ZeekJS can now be built on macOS using that installation of Node.
-
A new TapAnalyzer class was added allowing to tap into all packets delivered to
child analyzers attached to session adapters.
-
Two new hooks, Cluster::on_subscribe() and Cluster::on_unsubscribe() have been
added to allow observing Subscribe() and Unsubscribe() calls on backends by Zeek
scripts.
-
The ability to control the length of strings and containers in log output was added. The
maximum length of individual log fields can be set, as well as the total length of all
string or container fields in a single log record. This feature is controlled via four
new script-level variables:
Log::default_max_field_string_bytes
Log::default_max_total_string_bytes
Log::default_max_field_container_elements
Log::default_max_total_container_elements
When one of the field limits is reached, the individual field is truncated. When one
of the total limits is reached, all further strings will returned as empty and all
further container elements will not be output. See the documentation for those variables
for more detail.
The above variables control the truncation globally, but they can also be set for log
streams individually. This is controlled by variables with the same names that can be
set when the log stream is created.
Two new weirds were added to report the truncation: log_string_field_truncated and
log_container_field_truncated. New metrics were added to track how many truncations
have occurred: zeek_log_writer_truncated_string_fields_total and
zeek_log_writer_truncated_containers_total. The metrics are reported for each log
stream.
-
There exists a new configuration file <PREFIX>/etc/zeek/zeek.conf and a small
executable called zeek-systemd-generator that acts as a systemd unit file
generator. These two pieces allow for quickly running an opinionated single node cluster
deployment using systemd. See the tools/systemd-generator/README.md and
tools/systemd-generator/etc/zeek/zeek.conf files for more information.
If you've previously built Zeek process management by hand or with tools like
supervisord, runit, s6, etc on Linux, this might be a viable option to explore.
This is all Linux specific right now. However, the zeek.conf file is OS-agnostic to
keep options open for re-use it elsewhere.
-
The DNS analyzer now returns the set of parameters for SVCB data. It previously handled
SVCB packets, but omitted the parameters while parsing.
-
The QUIC analyzer now raises a QUIC::discarded_packet event when a packet with
fixed_bit set to 0 is encountered. Such an occurrence is included in the QUIC
history as X. This functionality can be controlled with
QUIC::max_discarded_packet_events. Setting this variable to -1 disables the
QUIC::discarded_packet event.
-
Added SHA224, SHA384, and SHA512 calculation BiFs: sha224_hash, sha224_hash_init,
sha224_hash_update, sha224_hash_finish. sha384_hash, sha384_hash_init,
sha384_hash_update, sha384_hash_finish. sha512_hash, sha512_hash_init,
sha512_hash_update, and sha512_hash_finish.
-
Added SHA224, SHA384 and SHA512 file hash analyzers. The analyzers are not enabled by
default.
-
Added the TCP::raw_options BiF, which returns the list of TCP options in the current
packet, including their raw data.
-
For SNMPv3, Zeek now parses the Security Parameters for the User-Based Security
model. If present, the data is added to the new user_security_parameters field of
the SNMP::HeaderV3 record.
-
The QUIC analyzer now raises QUIC::short_header_packet_threshold_crossed() for every
binary logarithmic threshold for QUIC packets with short headers. Each threshold is
added to the history as O or o. E.g., a history containing oOoO indicates
that originator and responder each send at least 3 short packets, while oOOoooooo
would indicate the originator sent at least 3 short packets early in the connection,
while the responder sent at least 127 packets.
-
Added SHA256 calculation BiFs: sha512_hash, sha512_hash_init,
sha512_hash_update, and sha512_hash_finish.
-
Added VLAN PCP and DEI bits when parsing packets. This is exposed alongside vlan and
inner_vlan in a packet's l2_hdr when scripting, if a VLAN header was present.
-
The DNS analyzer now supports parsing Dynamic Update messages (RFC 2136) and reporting
information about them into dns.log. The answer field in the log will contain
the prerequisites and updates for the dynamic update requests, whereas the query
field logs the zone name for the update request.
This also adds new opcode and opcode_name fields to the DNS log. Previously Zeek
was only handling opcode 0 (normal requests) so that information wasn't pertinent, but
with the addition of dynamic updates we're now handling a second opcode. The new policy
script policy/protocols/dns/disable-opcode-log-fields.zeek can be loaded to remove
these fields from the log if they are not desired.
-
The policy/misc/dump-events.zeek script now features a DumpEvents::use_json
boolean toggle, false by default, to report Zeek's events in JSON format.
-
The list of HTTP methods accepted by dynamic protocol detection was updated to add some
missing methods: BIND, LINK, MKCALENDAR, MKREDIRECTREF, REBIND, UNBIND, UNLINK.
-
The Docker images generated by Zeek's CI process now contain OCI-approved annotation
labels containing various metadata about the image. See
https://github.com/opencontainers/image-spec/blob/main/annotations.md for more details
about the labels.