This release includes 10 security fixes for security teams reviewing exposed deployments.
Topics
+2 more
Affected surfaces
Summary
AI summaryMultiple high‑severity denial‑of‑service vulnerabilities across network protocol analyzers were fixed.
Full changelog
Thank you to Jan Grashöfer (@J-Gras), h4r4kIR1, Javid Khan (@dxbjavid), @jmestwa-coder,
and @uwezkhan for their contributions to this release.
This release fixes the following security issues:
-
HIGH: The NVT, Rlogin, and RSH analyzers have received fixes to avoid unbounded state
growth. Due to the fact that these packets can be received from remote hosts, these are
considered DoS risks. The fixes include additional length-checking when processing
packets, as well as a new set of weirds for when the standard Content-Line limits are
exceeded. -
HIGH: A specially crafted WebSocket payload can cause the Spicy WebSocket analyzer to
use excessive memory when processing close, ping, and pong frames. Due to the fact that
these packets can be received from remote hosts, these are considered a DoS risk. The
fix caps the size of those frames as per RFC 6455 (to 125 bytes) and adds a new weird
for when that limit is exceeded. -
HIGH: A specially crafted series of Finger packets can cause the Spicy Finger analyzer
to use excessive amounts of memory and potentially crash Zeek. Due to the fact that
these packets can be received from remote hosts, this is considered a DoS risk. The fix
includes a newFinger::max_line_lengthscript constant. Spicy will report protocol
violations if this limit is exceeded. -
HIGH: A specially crafted Kerberos packet can cause the Kerberos analyzer to enter an
invalid state and potentially crash Zeek. Due to the fact that these packets can be
received from remote hosts, this is considered a DoS risk. The fix includes additional
checks for the state reported by the Kerberos packets. -
HIGH: A specially crafted series of RDP packets can cause the RDP analyzer to use
excessive amounts of memory and potentially crash Zeek. Due to the fact that these
packets can be received from remote hosts, this is considered a DoS risk. The fix
includes a newrpc_max_pending_callsscript constant. If this limit is exceeded, a
newrpc_discarded_pending_callsevent is emitted and a weird is reported. -
HIGH: A specially crafted IP packet can cause the IP analyzer to read past the end of
the contents of the packet when emitting thepacket_contentsevent and possibly
crash. Due to the fact that these packets can be received from remote hosts, this is
considered a DoS risk. The fix changes how Zeek checks the remaining length of the
packet when emitting the event. Thepacket_contentsevent typically isn't used in
production setups. -
HIGH: A specially crafted IP packet can cause the packet discarding code to read off the
end of the packet when looking for follow-on header data. This may potentially lead to a
crash of Zeek. Due to the fact that these packets can be received from remote hosts,
this is considered a DoS risk. Note that this only applies if the user enables the
discarder by implementing one of thediscarder_check_* scriptfunctions. The fix
includes additional length checks to theIP_HDr::ToPktHdrValmethod to skip looking
for additional headers if there isn’t enough data. -
HIGH: A specially crafted series of Gnutella packets may cause Zeek to continue
accumulating memory and eventually crash. Due to the fact that these packets can be
received from remote hosts, this is considered a DoS risk. Note that the Gnutella
analyzer is disabled by default. The fix includes newGnutella::max_line_lengthand
Gnutella::max_header_lengthscript constant values to control the maximum size of data
processed, as well as new weirds for when the limits are exceeded. -
MEDIUM: A specially crafted ICMPv6 packet can cause the ICMP analyzer to skip part of
the packet and not report corresponding events and logs. Due to the fact that these
packets can be received from remote hosts, this is considered an evasion risk. The fix
includes additional length-checking and five new weirds to cover the cases where the
checks fail. -
MEDIUM: A specially crafted SSH packet can cause the SSH analyzer to throw BinPAC
exceptions for extremely large packets and skip logging them otherwise. Due to the fact
that these packets can be received from remote hosts, this is considered an evasion
risk. The fix includes newSSH::max_packet_lengthandSSH::max_string_lengthscript
constants to control the maximum size of SSH packets and strings, as well as new weirds
for when the limits are exceeded. -
MEDIUM: A number of issues with the HTTP analyzer were found involving unusual
Content-Length, Transfer-Encoding and Expect header usage. Due to the fact that these
packets can be received from remote hosts, this is considered an evasion risk. The fixes
add additional validity checks as well as a new set of weirds for violations. -
MEDIUM: A series of fixes were applied to the serialization code in Zeek to avoid buffer
overreads with both Broker and ZeroMQ traffic. On debug builds, these hit various
abort()conditions and cause Zeek to exit. Due to the fact that all of these states
require direct access to the Broker/ZeroMQ ports (meaning access to the local network to
some degree), this isn’t considered a DoS risk. The fixes include additional checks for
message format validity and message lengths.
This release fixes the following bugs:
-
Zeek now builds correctly with newer versions of LibreSSL.
-
ZeekJS was updated to v0.23.0, which brings compatibility with Node v26.
-
Spicy was updated to v1.14.1. This release includes a fix that resolves crashes when
running on Fedora 44 ARM hosts. -
The TCP analyzer now clamps the window scale to 14 bytes, which conforms with
RFC7323. If the limit is excceeded, a newTCP_scale_rangeweird is logged. -
The Geneve analyzer now properly parses encapsulated IPv6 packets.
-
A regression in the management framework's handling of metrics-port collision avoidance
was fixed. The regression was originally added in 7.2.0. -
A number of out-of-bounds reads where fixed in the following analyzers: BitTorrent,
DCE-RPC, GSS-API, GTPv1, IRC, KRB, Login, NetBIOS, NFLog, and SSL. These reads can
result in various protocol violations, included parsing evasions on release builds or
potential crashes under UBSan and ASan. -
A number of signed bit-shifting issues were fixed in the following analyzers: ASN.1,
DNS, DTLS, FTP, Geneve, IP, NetBIOS, Null, RFB, SNAP, SMB, and VXLAN. These issues can
result in various protocol violations, included parsing evasions on release builds or
potential crashes under UBSan and ASan. -
The Ident analyzer fixed a potential signed overflow when parsing port information.
-
A bug was fixed in the pcapng packet source with handling empty options blocks. This was
a null-dereference that could potentially crash Zeek. -
A potential segfault was fixed with the
global_idsBIF if it was called during
startup before all of the script-level type data was fully parsed. The fix is to
disallow callingglobal_idsfrom the GLOBAL context. It must be called from a
function, event handler, or hook instead. -
The NTP analyzer gained some additional length checking when parsing extension fields to
avoid potential integer overflows. BinPAC exceptions will be reported in
analyzer_debug.log if the limits are exceeded. This also prevents signed integer
overflow reports from the BinPAC-generated code when running under UBSan. -
Certain protocol fields in the RDP parser are capped to maximum values to prevent
unbounded buffering. This also prevents signed integer overflow reports from the
BinPAC-generated code when running under UBSan. -
A few fixes were applied to the handling of HTTP Content-Range values to avoid integer
overflows. New weirdsHTTP_content_range_cannot_parse,
HTTP_content_range_cannot_parse,HTTP_non_positive_content_range, and
HTTP_content_range_invalid_instancewere added for the various ways these checks can
be violated. -
The GENEVE and VXLAN analyzers now use the correct
packetobject when parsing the
inner packet, avoiding a possible null pointer dereference. This would cause crashes
when running under UBSan.
Security Fixes
- HIGH: NVT, Rlogin, and RSH analyzers – fixed unbounded state growth DoS via length checks
- HIGH: WebSocket analyzer – capped frame size to 125 bytes per RFC 6455 to prevent memory exhaustion
- HIGH: Finger analyzer – added `Finger::max_line_length` constant to limit line size and avoid crashes
- HIGH: Kerberos analyzer – added state validation checks to prevent invalid‑state crashes
- HIGH: RDP analyzer – introduced `rpc_max_pending_calls` constant, emits `rpc_discarded_pending_calls` event on overflow
- HIGH: IP analyzer – corrected out‑of‑bounds read when emitting `packet_contents` event
- HIGH: IP packet discarding code – added length checks in `IP_HDr::ToPktHdrVal` to avoid reads past end of packet (when discarder enabled)
- HIGH: Gnutella analyzer – added `Gnutella::max_line_length` and `Gnutella::max_header_length` limits
- MEDIUM: ICMPv6 analyzer – added length‑checking and new weirds to prevent evasion via skipped data
- MEDIUM: SSH analyzer – introduced `SSH::max_packet_length` and `SSH::max_string_length` limits
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Zeek
Zeek is a powerful network analysis framework that is much different from the typical IDS you may know.
Related context
Related tools
Earlier breaking changes
- v8.2.0 FreeBSD is no longer an officially‑supported platform (best‑effort only).
- v8.2.0 Btest Traces library now uses .pcap and .pcapng suffixes.
- v8.2.0 Minimum ZeroMQ version requirement increased to 4.3.0.
- v8.2.0 FreeBSD support removed from official support, best-effort only.
- v8.2.0 MetricsAddress default changed from 0.0.0.0 to 127.0.0.1.
Beta — feedback welcome: [email protected]