Skip to content

Commit 5a8fc07

Browse files
author
Jeremy Harris
committedDec 25, 2023
Docs: Security release. Bug 3063
1 parent ce223f7 commit 5a8fc07

File tree

2 files changed

+73
-58
lines changed

2 files changed

+73
-58
lines changed
 

‎doc/doc-txt/ChangeLog

+4-58
Original file line numberDiff line numberDiff line change
@@ -2,67 +2,13 @@ This document describes *changes* to previous versions, that might
22
affect Exim's operation, with an unchanged configuration file. For new
33
options, and new features, see the NewStuff file next to this ChangeLog.
44

5-
Exim version 4.98
6-
-----------------
7-
8-
JH/01 Support list of dkim results in the dkim_status ACL condition, making
9-
it more usable in the data ACL.
10-
11-
JH/02 Bug 3040: Handle error on close of the spool data file during reception.
12-
Previously This was only logged, on the assumption that errors would be
13-
seen for a previous fflush(). However, a fuse filesystem has been
14-
reported as showing this an error for the fclose(). The spool is now in
15-
an uncertain state, and we have logged and responded acceptance. Change
16-
this to respond with a temp-reject, wipe spoolfiles, and log the error
17-
detail.
18-
19-
JH/03 Bug 3030: Fix handling of DNS servfail respons for DANE TLSA. When hit
20-
during a recipient verify callout, a QUIT command was attempted on the
21-
now-closed callout channel, causing a paniclog entry.
22-
23-
JH/04 Bug 3039: Fix handling of of an empty log_reject_target, with
24-
a connection_reject log_selector, under tls_on_connect. Previously
25-
with this combination, when the connect ACL rejected, a spurious
26-
paniclog entry was made.
27-
28-
JH/05 Fix TLS resumption for TLS-on-connect. This was broken by the advent
29-
of loadbalancer-detection for resumption, in 4.96 - which tries to
30-
use the EHLO response. SMTPS does not have one at the time it is starting
31-
TLS. Change the default for the smtp transport host_name_extract option
32-
to be a static string, for TLS-on-connect cases; meaning that resumption
33-
will always be attempted (unless deliberately overriden).
34-
35-
JH/06 Bug 3054: Fix dnsdb lookup for a TXT record with multiple chunks, with a
36-
chunk-separator specification. This was broken by hardening introduced
37-
for Bug 3031.
38-
39-
JH/07 Bug 3050: Fix -bp for old message_id format spoolfiles. Previously it
40-
included the -H with the id; this also messed up exiqgrep.
41-
42-
JH/08 Bug 3056: Tighten up parsing of DKIM DNS records. Previously, whitespace
43-
was not properly skipped and empty elements would cause mis-parsing.
44-
Tighten parsing of DKIM header records. Previously, all but lowercase
45-
alpha chars would be ignored in potential tag names.
46-
47-
JH/09 Bug 3057: Add heuristic for spotting mistyped IPv6 addresses in lists
48-
being searched. Previously we only had one for IPv4 addresses. Per the
49-
documentation, the error results by default in a no-match result for the
50-
list. It is logged if the unknown_in_list log_selector is used.
51-
52-
JH/10 Bug 3058: Ensure that a failing expansion in a router "set" option defers
53-
the routing operation. Previously it would silently stop routing the
54-
message.
5+
Since Exim version 4.97
6+
-----------------------
557

56-
JH/11 Bug 3046: Fix queue-runs. Previously, the arrivel of a notification or
57-
info-request event close in time to a scheduled run timer could result in
58-
the latter being missed, and no further queue scheduled runs being
59-
initiated. This ouwld be more likely on high-load systems.
60-
61-
JH/12 Refuse to accept a line "dot, LF" as end-of-DATA unless operating in
8+
JH/s1 Refuse to accept a line "dot, LF" as end-of-DATA unless operating in
629
LF-only mode (as detected from the first header line). Previously we did
6310
accept that in (normal) CRLF mode; this has been raised as a possible
64-
attack scenario (under the name "smtp smuggling").
65-
11+
attack scenario (under the name "smtp smuggling", CVE-2023-51766).
6612

6713

6814
Exim version 4.97

‎doc/doc-txt/cve-2023-51766

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
CVE ID: CVE-2023-51766
2+
Date: 2016-12-15
3+
Credits: https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/
4+
Version(s): all up to 4.97 inclusive
5+
Issue: Given a buggy relay, Exim can be induced to accept a second message embedded
6+
as part of the body of a first message
7+
8+
Conditions
9+
==========
10+
11+
If *all* the following conditions are met
12+
13+
Runtime options
14+
---------------
15+
16+
* Exim offers PIPELINING on incoming connections
17+
18+
* Exim offers CHUNKING on incoming connections
19+
20+
Operation
21+
---------
22+
23+
* DATA (as opposed to BDAT) is used for a message reception
24+
25+
* The relay host sends to the Exim MTA message data including
26+
one of "LF . LF" or "CR LF . LF" or "LF . CR LF".
27+
28+
* Exim interprets the sequence as signalling the end of data for
29+
the SMTP DATA command, and hence a first message.
30+
31+
* Exim interprets further input which the relay had as message body
32+
data, as SMTP commands and data. This could include a MAIL, RCPT,
33+
BDAT (etc) sequence, resulting in a further message acceptance.
34+
35+
Impact
36+
======
37+
38+
One or more messages can be accepted by Exim that have not been
39+
properly validated by the buggy relay.
40+
41+
Fix
42+
===
43+
44+
Install a fixed Exim version:
45+
46+
4.98 (once available)
47+
4.97.1
48+
49+
If you can't install one of the above versions, ask your package
50+
maintainer for a version containing the backported fix. On request and
51+
depending on our resources we will support you in backporting the fix.
52+
(Please note, that Exim project officially doesn't support versions
53+
prior the current stable version.)
54+
55+
56+
Workaround
57+
==========
58+
59+
Disable CHUNKING advertisement for incoming connections.
60+
61+
An attempt to "smuggle" a DATA command will trip a syncronisation
62+
check.
63+
64+
*or*
65+
66+
Disable PIPELINING advertisement for incoming connections.
67+
68+
The "smuggled" MAIL FROM command will then trip a syncronisation
69+
check.

0 commit comments

Comments
 (0)
Failed to load comments.