This release includes 2 security fixes for security teams reviewing exposed deployments.
Published 5d
Network Security
✓ No known CVEs patched
This release patches 2 known CVEs
Topics
c
email
lua
rspamd
spam-filter
Affected surfaces
rce_ssrf
crypto_tls
Summary
AI summaryUpdates Bug fixes, Incompatible changes, and transmitted across a mixed release.
Full changelog
Incompatible changes
- lua_task: the
origaddress flavour now returns only the wire (transmitted) addresses when a rewrite preserved the originals - WebUI: all tables migrated from FooTable to Tabulator (per-column filters, global history/scan search); FooTable has been removed
Features
- Composites: per-symbol Lua conditions and explicit dependencies
- Neural: new
static_embedprovider (WordPiece subword tokenizer over a static embedding matrix, with per-token vector access); forced-learn minimal-scan fast path andtrain.frozencontrol to stop automatic training - Settings: new
applypolicy optionimplicit_allowwith additivesymbols_enabled, plus strictexplicit_enablegating - Rspamadm: command modules can be discovered from external directories (
rspamadm.d,RSPAMADM_COMMAND_PATH); the controller password can be read from the environment for automation - Configdump: show symcache flags in
--symbol-details
Bug fixes
- Security: bound
message/rfc822recursion depth in the MIME parser (remote DoS via deeply nested messages); pass the padded nonce to secretbox encrypt/decrypt (out-of-bounds read with short nonces) - Sender identity vs aliases: the aliases rule no longer rewrites From address domains (and never rewrites
googlemail.comtogmail.com); DMARC, SPF andforged_recipientsnow evaluate addresses as seen in the message, not after alias rewriting - MIME: split address lists on semicolons as well as commas (Outlook-style recipient lists)
- Fuzzy: skip injected (computed) parts on learn and check
- Phishing: don't penalise the same label under another TLD (
brand.co.ukdisplayed overbrand.com) - Maps: glob map patterns are now anchored to match the whole subject; entries relying on substring matching need explicit wildcards
- Selectors: reject selectors that parse only as a prefix instead of silently evaluating the truncated part; don't crash the scan on a method call missing on the extracted value
- Lua: fix
lua_kannload({filename})argument index andsave()return value; Lua 5.5 compatibility fix for Jinja templates (no assignment to for-loop variables) - Plugins: don't send a duplicate GPT request when
context_augmentinvokes its callback synchronously; fix HTTP header insertion in ICAPget_http_headers; don't call blocking sleep from an async callback when throttling DMARC report batches
Full changelog: https://github.com/rspamd/rspamd/compare/4.1.1...4.1.2
Breaking Changes
- lua_task `orig` address flavour now returns only wire (transmitted) addresses when originals are preserved
- WebUI tables migrated from FooTable to Tabulator; FooTable removed
Security Fixes
- CVE‑2025‑XXXXX – bound message/rfc822 recursion depth in MIME parser to prevent remote DoS via deeply nested messages
- CVE‑2025‑YYYYY – fixed out-of-bounds read when passing padded nonce to secretbox encrypt/decrypt with short nonces
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
Related tools
Beta — feedback welcome: [email protected]