Topics
+1 more
Affected surfaces
Summary
AI summaryUpdates Highlights, Reliability and operational fixes, and Website announcement https://www.rsyslog.com/rsyslog-8-2606-0-stream-compression-elastic-beats-input-and-ongoing-defensive-hardening/ across a mixed release.
Full changelog
rsyslog 8.2606.0
June 2026 scheduled-stable release.
Scheduled-stable releases are bi-monthly snapshots of the daily-stable branch,
providing predictable update points with the same functional content as
daily-stable at the time of the snapshot.
Highlights
- Experimental TCP stream compression for
omfwdtoimtcp - New Elastic Beats / Lumberjack input module via
imbeats - Ongoing defensive hardening across parsers, inputs, outputs, queues, TLS, and
test coverage - New POSIX FIFO input module via
imfifo - Per-source ratelimit policy handling shared across multiple inputs
- New RainerScript helpers:
cbool(),tocef(),cef_ext_escape(), and
parse_time_localtz() - Improved queue, parser, TLS, Kafka, imfile, and output-action reliability
Headline: experimental stream compression
This release introduces experimental stream compression for TCP forwarding from
omfwd to imtcp.
The feature is aimed at high-traffic environments where bandwidth is a cost,
capacity, or resilience constraint. Compressing the rsyslog forwarding stream
can reduce network volume, support FINOPS goals, and help preserve available
bandwidth during traffic spikes or attack periods when log volume rises sharply.
omfwd can send compressed TCP streams with
compression.mode="stream:always", and imtcp can decompress matching streams
with zlib or zstd drivers on both sides. Receiver-side guardrails cover
expansion and per-receive decompression limits, and the feature ships with
impstats coverage, documentation, and RainerScript/YAML tests.
This is rsyslog stream compression, not TLS-native compression. Layering it with
TLS is supported by the new tests, but stream compression should still be
treated as experimental in 8.2606.0.
imptcp also gained stream:auto handling, allowing one listener to accept
both zlib-compressed and plain sessions. This can help staged rollouts where not
all forwarding clients switch at once.
New feature: imbeats input
imbeats adds Elastic Beats and Elastic Agent output.logstash ingestion via
Lumberjack v2.
The target audience is narrower than for stream compression, but important:
operators who want to use rsyslog inside Elastic-style pipelines for
performance, routing flexibility, enrichment, filtering, or to avoid total
vendor lock-in. The module accepts JSON event frames, compressed frames, and
cumulative acknowledgements over TCP or TLS, preserves the original JSON
payload, maps decoded fields into $!, and stores transport metadata under
$!metadata!imbeats.
The implementation includes bounds for frame, batch, window, decompressed
payload, and session limits, plus worker-based multiplexing so high client
counts do not require one thread per connection.
Defensive hardening and robustness
This release contains a large amount of defensive hardening and reliability
work. Some of it came from automated analysis, some from manual review, and
some from normal issue-driven maintenance. This is an ongoing project effort:
as automated exploitation and AI-assisted bug discovery become more common, we
are continuously tightening boundaries, parser behavior, cleanup paths, and
test oracles.
Notable examples include:
mmjsonparsecloses a bounded-scan trailing-data bypass infind-jsonmode.- Embedded NUL bytes passed through C-string helper boundaries are now escaped
instead of being silently truncated. mmdblookuppreserves large unsigned 64-bit MaxMind DB values.- Safe disk queue recovery now resets stale on-disk byte accounting.
- Transactional action queue batches interrupted during shutdown are re-enqueued
instead of being dropped. imdockermultiline and rate-limit paths were hardened.imptcp,imtcp, TLS drivers, parser paths, template handling, and runtime
message replacement received additional boundary and cleanup fixes.- The testbench gained more deterministic checks and de-flaking work, though a
small set of flakes remains under active investigation.
Other notable changes
Inputs, forwarding, and protocol handling
imfifoadds line-oriented POSIX FIFO input support with dynamic
non-blocking instances.imfilenow delivers same-file monitors independently and can expose
per-fileline_numbermetadata.- Deleted-file descriptor cleanup in
imfileinotify mode was improved so
disk space can be reclaimed after monitored files are removed. imkafkanow supports multiple topics in one input instance.imjournalnow diagnoses stalls caused by future-dated journal entries and
improves recovery after journal invalidation.
Configuration, RainerScript, and templates
- New
cbool(expr)helps render explicit JSON booleans through
jsonf datatype="bool". - New
tocef()andcef_ext_escape()helpers simplify Common Event Format
output. - New
parse_time_localtz()parses timestamps using local timezone semantics. parser.dropTrailingCROnReceptioncan strip a final carriage return after
normal LF handling.- RainerScript now warns on constant boolean operands such as common
$msg contains "a" or "b"mistakes. - Negated exact priority filters such as
local4.!=debugnow match the
documented priorities instead of accidentally matching nothing. - Duplicate action names and dynstats bucket names now emit warnings.
Reliability and operational fixes
omfwdTCP/TLS retry handling preserves retry state more reliably and avoids
rebind cleanup leaks.omhttpretry-ruleset handling avoids self-stalls after short HTTP outages.omclickhousenow reports HTTP 400+ responses as data failures through
normal diagnostics.omkafkaimproves reload serialization and DNS-failure suspension reporting.ommysqlnow handles closed MySQL connections before commit correctly.ompgsqlaccepts long cloud and Kubernetes-style server hostnames.mmpstrucdatasupports custom structured-data containers and bounded parsed
structured-data length.
TLS, portability, packaging, and CI
- wolfSSL-backed CRL and OCSP revocation checking is now supported through the
OpenSSL compatibility driver. - OpenSSL
PermittedPeerwildcard matching now checks certificate identities
consistently. omrelpcan opt into suspending instead of permanently disabling an action
on TLS authentication failure.- Builds now honor cross
pkg-configselection for libgcrypt. - AIX builds are fixed for systems without BSD
STAILQmacros. - The ETL Vespa container configuration now defaults to HTTPS.
- CI and local validation gained Ubuntu 26.04 coverage, s390x/QEMU coverage,
zizmor checks, and broader hardening/test relevance improvements.
Compatibility notes
libyamlsupport is now an explicit configure feature. It remains enabled by
default and must be satisfied by package builds unless--disable-libyamlis
passed. This removes the previous auto-detection behavior where the presence
or absence of libyaml development files silently changed the feature set.- TCP stream compression is experimental in this release. It is rsyslog stream
compression, not TLS-native compression. zlib/zstd driver choices must match
across sender and receiver. parser.dropTrailingCROnReceptiondefaults to off, preserving existing CR
handling unless explicitly enabled.- Duplicate action names and dynstats bucket names remain valid for
compatibility, but now produce diagnostics. - Configurations that accidentally relied on negated exact priority filters
such aslocal4.!=debugmatching nothing may now see the documented messages. - RainerScript boolean expressions with constant operands now produce parser
warnings. Existing syntax and truthiness behavior are unchanged. omelasticsearchnow warns when the legacysearchTypeparameter is
configured, because Elasticsearch mapping types are obsolete.omrelpkeeps its default TLS authentication failure behavior. The new
suspend-on-auth-failure behavior is opt-in via
tls.permanentFailureDisablesAction="off".
Contributors
Thanks to everyone who contributed to this release, including:
- 0xseiryuu
- Attila Lakatos
- Billie Alsup
- Jacob
- Julien Thomas
- Juliusz Sosinowicz
- Jeremie Jourdin
- Midnya
- shinigami35
- Tamir Suliman
- Yury Bushmelev
All other changes were contributed by Adiscon GmbH.
Website announcement
https://www.rsyslog.com/rsyslog-8-2606-0-stream-compression-elastic-beats-input-and-ongoing-defensive-hardening/
Artifact availability
Source release artifacts are attached here.
Container images are available on Docker Hub:
- https://hub.docker.com/r/rsyslog/rsyslog
- https://hub.docker.com/r/rsyslog/rsyslog-minimal
- https://hub.docker.com/r/rsyslog/rsyslog-collector
- https://hub.docker.com/r/rsyslog/rsyslog-dockerlogs
- https://hub.docker.com/r/rsyslog/rsyslog-etl
OS packages are also built and available via the usual package channels. See
the rsyslog package installation docs and the scheduled-stable downloads page
for package locations:
- https://www.rsyslog.com/doc/installation/packages.html
- https://www.rsyslog.com/downloads/download-v8-stable/
Distribution packages may still appear with some delay after the release
announcement as downstream publishing completes.
Release assets
This release includes the maintainer-built rsyslog-*.tar.gz source tarball
produced by make dist.
These uploaded assets are the official source-release artifacts and are
distinct from GitHub's auto-generated source snapshots.
Breaking Changes
- libyaml support now requires explicit configure flag; default behavior unchanged unless `--disable-libyaml` is passed
Security Fixes
- `mmjsonparse` closes bounded-scan trailing-data bypass in find-json mode
- Embedded NUL bytes are now escaped instead of silently truncated across C-string boundaries
- Additional parser, input, output, TLS, and queue boundary hardening to mitigate exploitation vectors
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
Related context
Beta — feedback welcome: [email protected]