Repository navigation
[SECURITY] maddy 0.9.7 #885
foxcpp
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
This release includes fixes for several reported security
vulnerabilities with CVSS severity ranging Low to Medium, including
two DMARC verification bypasses. Upgrade is highly recommended.
This release fixes several long-standing issues in go-imap-sql
implementation. Upgrading is highly recommended for anyone using
IMAP implementation. Fixes are fully compatible with 0.9.6 -
messages written by 0.9.7 are readable by 0.9.6 as-is and vice versa.
Now storage.imapsql can store malformed MIME messages. Such messages are
stored as a single-part application/octet-stream message. This can cause
display issues with most IMAP clients but no data is lost.
Security
(GHSA-qh5c-2mrx-4ppj,
no CVE assigned yet).
Messages whose From domain contained uppercase characters could be checked
against the wrong organizational domain, so the domain’s published DMARC policy
was not applied. An attacker could spoof a domain that publishes
p=rejectorp=quarantineand get the message delivered.Affects configurations using inbound SMTP with
dmarc yes(default).enabled
(GHSA-fhw2-mvqf-h69c,
not CVE assigned yet) (Undisclosed security vulnerability (GHSA-fhw2-mvqf-h69c) #879).
Messages with a malformed or multiple-address
Fromheader were treated ashaving no DMARC policy and accepted, allowing an attacker to bypass DMARC by
deliberately breaking the
Fromheader. The newdmarc_reject_invalid_fromoption controls this behavior; it is enabled in the new default configuration,
while existing deployments must enable it explicitly.
Affects configurations using inbound SMTP with
dmarc yes(default).(GHSA-88mq-x5xv-cmrh;
no CVE assigned yet) (Undisclosed security vulnerability (GHSA-88mq-x5xv-cmrh) #880).
Unknown usernames previously caused fewer LDAP operations than existing
usernames, allowing unauthenticated clients to enumerate valid accounts through
timing differences. This can aid targeted phishing and credential-stuffing
attacks.
Affects all configurations using
auth.ldap.(GHSA-58jf-c377-6r8w;
no CVE assigned yet) (Undisclosed security vulnerability (GHSA-58jf-c377-6r8w) #884).
A bare IPv6 address in the
proxy_protocoltrust list was treated as a /32network, trusting unrelated IPv6 peers in the same range. A directly connected
attacker could forge PROXY headers to choose the client IP seen by SMTP/IMAP,
bypassing rate limits and DNSBL checks and falsifying audit logs.
Affects configurations using
proxy_protocolon a public-facing endpoints (notrecommended in general).
(GHSA-wcj3-m6rw-7gv9;
no CVE assigned yet).
With a
sourcelimit but noiplimit, exhausting the source bucket set madethe cleanup path dereference a nil IP limiter. A remote sender could trigger a
nil-pointer panic, disrupting message acceptance on the affected SMTP endpoint.
Bug fixes
Dateheader with a valid value instead ofrejecting the message during submission preparation (Unable to parse the date #518).
reported as "message too large" instead of "internal server error" ("Maximum message size exceeded" may get reported as "Internal server error" #772).
abort failed deliveries, preventing stuck deliveries and spurious "database
is locked" errors (database is locked error when using reroute #786).
client connected while the endpoint was stopping.
maddy_smtp_failed_loginsmetric and count failedAUTH attempts for every SASL mechanism (maddy_smtp_failed_logins is documented but never exported, and never incremented #868).
unavailable LMTP server produces a retryable
450response instead of apermanent
554(LMTP connection failures return 554 instead of 450 (regression in 0.9.5) #872) (PR smtpconn: Treat wrapped dial errors as network errors #874, thanks @amlaban65).APPENDLIMITreporting:STATUSnow returns theeffective per-mailbox limit, the capability is advertised without a value,
and disabling the limit is rejected instead of making clients see a zero
limit incorrectly (Bug report: IMAP APPENDLIMIT behave chaos #788).
delivery and clean up staged messages on failure, reducing “database is
locked” errors with concurrent deliveries and
reroute(database is locked error when using reroute #786).temporary errors so the sender retries instead of the message being lost.
SEARCH UNSEENreturning flags from other mailboxes andmissing unseen messages, and fix delivery ignoring the
\Seenflag set byIMAP filters ('SEARCH UNSEEN' doesn't return unseen messages #591).
which caused fetchmail to re-download already seen messages (Strange Behavior with fetchmail #703).
Content-Transfer-Encodingas 7BITin BODYSTRUCTURE instead of an invalid NIL value, fixing display in some IMAP
clients (Body encoding cannot be NIL #756).
instead of failing delivery (DATA error unexpected EOF #466).
such as read/unread state, stale (Messages that have already been read are still unread status #712).
the documented
5min × 1.25^(n−1)schedule (queue: infinite retries after reducing max_tries and bogus retry interval #678).initial_retry_timeto 5m from 15m, add missingdocumentation for delay configuration (queue: infinite retries after reducing max_tries and bogus retry interval #678).
internationalized (IDNA) domains.
lookup returns the address unchanged (Relative aliases dont work #734) (PR fix: allow relative aliases after unchanged exact chain lookups #871, thanks @mvanhorn).
maddy versionand the server startup log report the same version,including custom builds (Inconsistent version is logged between
maddy versionand the server start log #869) (PR log: fixup version string output by "maddy version" and "maddy run" to be consistent #870, thanks @MFAshby).and escaping in the Dovecot authentication protocol; the auth server now
passes the authenticated user ID back to Dovecot.
works (hetzner dns api outdated #807).
Improvements
/etc/resolv.confwhen it changes (checked at most every fiveseconds), so DNS changes from network reconfiguration take effect without
restarting maddy (Maddy tries to use a localhost dns resolver instead of the nameserver specified in /etc/resolve.conf #475).
policy names, effective security levels and rejection reasons, making
outbound delivery issues easier to diagnose (min_tls_level ignored (required_tls_level: encrypted) #717).
releases; leaseweb and gandi use forks upgraded to libdns 1.1, outdates
deprecation warnings were removed.
bashto the image so thecommandsystem filter can beused in container deployments (PR feat: added bash to Dockerfile #851, thanks @terminar).
Documentation
dependence on the Go version, and how to re-enable legacy ciphers for older
servers (outdated docs default tls version #702, TLS Connection Failure with Go 1.22+ Due to Disabled RSA Cipher Suites (Version 0.7.1 is good, but problems occur in later versions ) #789).
(aliases)file table syntax (Documentation for aliases #684) (PR Point towards syntax of (aliases) file table for new users. #729, thanks @stellarpower).
Misc
auth/pam,endpoint/dovecot_sasld,endpoint/imapand queue tests.This discussion was created from the release [SECURITY] maddy 0.9.7.
All reactions