2 Date: 2019-09-27 (CVE assigned)
3 Version(s): from 4.92 up to and including 4.92.2
4 Reporter: QAX-A-TEAM <areuu@outlook.com>
5 Reference: https://bugs.exim.org/show_bug.cgi?id=2449
6 Issue: Heap-based buffer overflow in string_vformat,
7 remote code execution seems to be possible
9 Conditions to be vulnerable
10 ===========================
12 All versions from (and including) 4.92 up to (and including) 4.92.2 are
18 There is a heap-based buffer overflow in string_vformat (string.c).
19 The currently known exploit uses a extraordinary long EHLO string to
20 crash the Exim process that is receiving the message. While at this
21 mode of operation Exim already dropped its privileges, other paths to
22 reach the vulnerable code may exist.
27 There is - beside updating the server - no known mitigation.
32 We plan to publish a new security release (*will* be 4.92.3) of Exim
33 during the next 48 hours, ideally before monday 8.00 UTC. (We're still
34 running regression tests.)
36 Distros may have already picked the patch mentioned below and may have
37 already released a fixed version. Please check your distribution's
40 If you can't wait, please use use our git repository http://git.exim.org/exim.git,
41 checkout the branch exim-4.92.2+fixes and use the commit 478effbfd9c3cc5a627fc671d4bf94d13670d65f
43 A direct link to the commit is:
44 https://git.exim.org/exim.git/patch/478effbfd9c3cc5a627fc671d4bf94d13670d65f
48 --- a/src/src/string.c
49 +++ b/src/src/string.c
50 @@ -1132,7 +1132,7 @@ store_reset(g->s + (g->size = g->ptr + 1));
54 - count amount to grow by
55 + count amount to grow by, offset from p
59 @@ -1590,7 +1590,7 @@ while (*fp)
61 else if (g->ptr >= lim - width)
63 - gstring_grow(g, g->ptr, width - (lim - g->ptr));
64 + gstring_grow(g, g->ptr, width);
66 gp = CS g->s + g->ptr;
70 We thank you for using Exim.