CVE-2020-28016
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by...
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by parse_fix_phrase.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
7.8
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by parse_fix_phrase.
- Record
CVE-2020-28016- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - CVSS 2.0
- 7.2 High
AV:L/AC:L/Au:N/C:C/I:C/A:C - Weakness
- CWE-787
- Updated
- 2026-11-02
CVE List No score
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by parse_fix_phrase.
- Record
CVE-2020-28016- Updated
- 2026-11-02
EUVDEUVD-2020-20507 No score
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by parse_fix_phrase.
- Record
EUVD-2020-20507- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-ggp5-gp7q-6r3v No score
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by...
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by parse_fix_phrase.
- Record
GHSA-ggp5-gp7q-6r3v- Weakness
- CWE-787
- Updated
- 2026-11-02
OSVALPINE-CVE-2020-28016
7.8
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by parse_fix_phrase.
- Record
ALPINE-CVE-2020-28016- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-03
OSV
7.8
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by parse_fix_phrase.
- Record
CVE-2020-28016- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 5 moreShow less
OSVDEBIAN-CVE-2020-28016
7.8
Exim 4 before 4.94.2 allows an off-by-two Out-of-bounds Write because "-F ''" is mishandled by parse_fix_phrase.
- Record
DEBIAN-CVE-2020-28016- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVopenSUSE-SU-2021:0677-1 No score
Security update for exim
This update for exim fixes the following issues:
Exim was updated to exim-4.94.2
security update (boo#1185631)
- CVE-2020-28007: Link attack in Exim's log directory
- CVE-2020-28008: Assorted attacks in Exim's spool directory
- CVE-2020-28014: Arbitrary PID file creation
- CVE-2020-28011: Heap buffer overflow in queue_run()
- CVE-2020-28010: Heap out-of-bounds write in main()
- CVE-2020-28013: Heap buffer overflow in parse_fix_phrase()
- CVE-2020-28016: Heap out-of-bounds write in parse_fix_phrase()
- CVE-2020-28015: New-line injection into spool header file (local)
- CVE-2020-28012: Missing close-on-exec flag for privileged pipe
- CVE-2020-28009: Integer overflow in get_stdinput()
- CVE-2020-28017: Integer overflow in receive_add_recipient()
- CVE-2020-28020: Integer overflow in receive_msg()
- CVE-2020-28023: Out-of-bounds read in smtp_setup_msg()
- CVE-2020-28021: New-line injection into spool header file (remote)
- CVE-2020-28022: Heap out-of-bounds read and write in extract_option()
- CVE-2020-28026: Line truncation and injection in spool_read_header()
- CVE-2020-28019: Failure to reset function pointer after BDAT error
- CVE-2020-28024: Heap buffer underflow in smtp_ungetc()
- CVE-2020-28018: Use-after-free in tls-openssl.c
- CVE-2020-28025: Heap out-of-bounds read in pdkim_finish_bodyhash()
update to exim-4.94.1
- Fix security issue in BDAT state confusion. Ensure we reset known-good where we know we need to not be reading BDAT data, as a general case fix, and move the places where we switch to BDAT mode until after various protocol state checks. Fixes CVE-2020-BDATA reported by Qualys.
- Fix security issue in SMTP verb option parsing (CVE-2020-EXOPT)
- Fix security issue with too many recipients on a message (to remove a known security problem if someone does set recipients_max to unlimited, or if local additions add to the recipient list). Fixes CVE-2020-RCPTL reported by Qualys.
- Fix CVE-2020-28016 (PFPZA): Heap out-of-bounds write in parse_fix_phrase()
- Fix security issue CVE-2020-PFPSN and guard against cmdline invoker providing a particularly obnoxious sender full name.
- Fix Linux security issue CVE-2020-SLCWD and guard against PATH_MAX better.
-
bring back missing exim_db.8 manual page (fixes boo#1173693)
-
bring in changes from current +fixes (lots of taint check fixes)
- Bug 1329: Fix format of Maildir-format filenames to match other mail- related applications. Previously an 'H' was used where available info says that 'M' should be, so change to match.
- Bug 2587: Fix pam expansion condition. Tainted values are commonly used as arguments, so an implementation trying to copy these into a local buffer was taking a taint-enforcement trap. Fix by using dynamically created buffers.
- Bug 2586: Fix listcount expansion operator. Using tainted arguments is reasonable, eg. to count headers. Fix by using dynamically created buffers rather than a local. Do similar fixes for ACL actions 'dcc', 'log_reject_target', 'malware' and 'spam'; the arguments are expanded so could be handling tainted values.
- Bug 2590: Fix -bi (newaliases). A previous code rearrangement had broken the (no-op) support for this sendmail command. Restore it to doing nothing, silently, and returning good status.
-
update to exim 4.94
- some transports now refuse to use tainted data in constructing their delivery location this WILL BREAK configurations which are not updated accordingly. In particular: any Transport use of $local_user which has been relying upon check_local_user far away in the Router to make it safe, should be updated to replace $local_user with $local_part_data.
- Attempting to remove, in router or transport, a header name that ends with an asterisk (which is a standards-legal name) will now result in all headers named starting with the string…
- Record
openSUSE-SU-2021:0677-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2021:0753-1 No score
Security update for exim
This update for exim fixes the following issues:
exim was updated to 4.94.2:
security update (boo#1185631)
- CVE-2020-28007: Link attack in Exim's log directory
- CVE-2020-28008: Assorted attacks in Exim's spool directory
- CVE-2020-28014: Arbitrary PID file creation
- CVE-2020-28011: Heap buffer overflow in queue_run()
- CVE-2020-28010: Heap out-of-bounds write in main()
- CVE-2020-28013: Heap buffer overflow in parse_fix_phrase()
- CVE-2020-28016: Heap out-of-bounds write in parse_fix_phrase()
- CVE-2020-28015: New-line injection into spool header file (local)
- CVE-2020-28012: Missing close-on-exec flag for privileged pipe
- CVE-2020-28009: Integer overflow in get_stdinput()
- CVE-2020-28017: Integer overflow in receive_add_recipient()
- CVE-2020-28020: Integer overflow in receive_msg()
- CVE-2020-28023: Out-of-bounds read in smtp_setup_msg()
- CVE-2020-28021: New-line injection into spool header file (remote)
- CVE-2020-28022: Heap out-of-bounds read and write in extract_option()
- CVE-2020-28026: Line truncation and injection in spool_read_header()
- CVE-2020-28019: Failure to reset function pointer after BDAT error
- CVE-2020-28024: Heap buffer underflow in smtp_ungetc()
- CVE-2020-28018: Use-after-free in tls-openssl.c
- CVE-2020-28025: Heap out-of-bounds read in pdkim_finish_bodyhash()
update to exim-4.94.1
- Fix security issue in BDAT state confusion. Ensure we reset known-good where we know we need to not be reading BDAT data, as a general case fix, and move the places where we switch to BDAT mode until after various protocol state checks. Fixes CVE-2020-BDATA reported by Qualys.
- Fix security issue in SMTP verb option parsing (CVE-2020-EXOPT)
- Fix security issue with too many recipients on a message (to remove a known security problem if someone does set recipients_max to unlimited, or if local additions add to the recipient list). Fixes CVE-2020-RCPTL reported by Qualys.
- Fix CVE-2020-28016 (PFPZA): Heap out-of-bounds write in parse_fix_phrase()
- Fix security issue CVE-2020-PFPSN and guard against cmdline invoker providing a particularly obnoxious sender full name.
- Fix Linux security issue CVE-2020-SLCWD and guard against PATH_MAX better.
-
bring back missing exim_db.8 manual page (fixes boo#1173693)
-
bring in changes from current +fixes (lots of taint check fixes)
- Bug 1329: Fix format of Maildir-format filenames to match other mail- related applications. Previously an 'H' was used where available info says that 'M' should be, so change to match.
- Bug 2587: Fix pam expansion condition. Tainted values are commonly used as arguments, so an implementation trying to copy these into a local buffer was taking a taint-enforcement trap. Fix by using dynamically created buffers.
- Bug 2586: Fix listcount expansion operator. Using tainted arguments is reasonable, eg. to count headers. Fix by using dynamically created buffers rather than a local. Do similar fixes for ACL actions 'dcc', 'log_reject_target', 'malware' and 'spam'; the arguments are expanded so could be handling tainted values.
- Bug 2590: Fix -bi (newaliases). A previous code rearrangement had broken the (no-op) support for this sendmail command. Restore it to doing nothing, silently, and returning good status.
update to exim 4.94
- some transports now refuse to use tainted data in constructing their delivery location this WILL BREAK configurations which are not updated accordingly. In particular: any Transport use of $local_user which has been relying upon check_local_user far away in the Router to make it safe, should be updated to replace $local_user with $local_part_data.
- Attempting to remove, in router or transport, a header name that ends with an asterisk (which is a standards-legal name) will now result in all headers named starting with the string before…
- Record
openSUSE-SU-2021:0753-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2021:0754-1 No score
Security update for exim
This update for exim fixes the following issues:
Exim was updated to exim-4.94.2
security update (boo#1185631)
- CVE-2020-28007: Link attack in Exim's log directory
- CVE-2020-28008: Assorted attacks in Exim's spool directory
- CVE-2020-28014: Arbitrary PID file creation
- CVE-2020-28011: Heap buffer overflow in queue_run()
- CVE-2020-28010: Heap out-of-bounds write in main()
- CVE-2020-28013: Heap buffer overflow in parse_fix_phrase()
- CVE-2020-28016: Heap out-of-bounds write in parse_fix_phrase()
- CVE-2020-28015: New-line injection into spool header file (local)
- CVE-2020-28012: Missing close-on-exec flag for privileged pipe
- CVE-2020-28009: Integer overflow in get_stdinput()
- CVE-2020-28017: Integer overflow in receive_add_recipient()
- CVE-2020-28020: Integer overflow in receive_msg()
- CVE-2020-28023: Out-of-bounds read in smtp_setup_msg()
- CVE-2020-28021: New-line injection into spool header file (remote)
- CVE-2020-28022: Heap out-of-bounds read and write in extract_option()
- CVE-2020-28026: Line truncation and injection in spool_read_header()
- CVE-2020-28019: Failure to reset function pointer after BDAT error
- CVE-2020-28024: Heap buffer underflow in smtp_ungetc()
- CVE-2020-28018: Use-after-free in tls-openssl.c
- CVE-2020-28025: Heap out-of-bounds read in pdkim_finish_bodyhash()
update to exim-4.94.1
- Fix security issue in BDAT state confusion. Ensure we reset known-good where we know we need to not be reading BDAT data, as a general case fix, and move the places where we switch to BDAT mode until after various protocol state checks. Fixes CVE-2020-BDATA reported by Qualys.
- Fix security issue in SMTP verb option parsing (CVE-2020-EXOPT)
- Fix security issue with too many recipients on a message (to remove a known security problem if someone does set recipients_max to unlimited, or if local additions add to the recipient list). Fixes CVE-2020-RCPTL reported by Qualys.
- Fix CVE-2020-28016 (PFPZA): Heap out-of-bounds write in parse_fix_phrase()
- Fix security issue CVE-2020-PFPSN and guard against cmdline invoker providing a particularly obnoxious sender full name.
- Fix Linux security issue CVE-2020-SLCWD and guard against PATH_MAX better.
-
bring back missing exim_db.8 manual page (fixes boo#1173693)
-
bring in changes from current +fixes (lots of taint check fixes)
- Bug 1329: Fix format of Maildir-format filenames to match other mail- related applications. Previously an 'H' was used where available info says that 'M' should be, so change to match.
- Bug 2587: Fix pam expansion condition. Tainted values are commonly used as arguments, so an implementation trying to copy these into a local buffer was taking a taint-enforcement trap. Fix by using dynamically created buffers.
- Bug 2586: Fix listcount expansion operator. Using tainted arguments is reasonable, eg. to count headers. Fix by using dynamically created buffers rather than a local. Do similar fixes for ACL actions 'dcc', 'log_reject_target', 'malware' and 'spam'; the arguments are expanded so could be handling tainted values.
- Bug 2590: Fix -bi (newaliases). A previous code rearrangement had broken the (no-op) support for this sendmail command. Restore it to doing nothing, silently, and returning good status.
-
update to exim 4.94
- some transports now refuse to use tainted data in constructing their delivery location this WILL BREAK configurations which are not updated accordingly. In particular: any Transport use of $local_user which has been relying upon check_local_user far away in the Router to make it safe, should be updated to replace $local_user with $local_part_data.
- Attempting to remove, in router or transport, a header name that ends with an asterisk (which is a standards-legal name) will now result in all headers named starting with the string…
- Record
openSUSE-SU-2021:0754-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:10746-1 No score
exim-4.94.2-4.2 on GA media
These are all security issues fixed in the exim-4.94.2-4.2 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:10746-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
eximAlpine:v3.13 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.14 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.15 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.16 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.17 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.18 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.19 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.20 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.21 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.22 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
Show 11 moreShow less
| Package | Affected | Fixed |
|---|---|---|
eximAlpine:v3.23 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
eximAlpine:v3.24 |
4.00 up to 4.94.2-r0 | 4.94.2-r0 |
exim4Debian:12 |
before 4.94.2-1 | 4.94.2-1 |
exim4Debian:13 |
before 4.94.2-1 | 4.94.2-1 |
exim4Debian:14 |
before 4.94.2-1 | 4.94.2-1 |
eximopenSUSE:Leap 15.2 From an advisory covering 26 CVEs |
before 4.94.2-lp152.8.3.1 | 4.94.2-lp152.8.3.1 |
eximSUSE:Package Hub 15 SP1 From an advisory covering 30 CVEs |
before 4.94.2-bp151.2.4.1 | 4.94.2-bp151.2.4.1 |
libspf2SUSE:Package Hub 15 SP1 From an advisory covering 30 CVEs |
before 1.2.10-bp151.4.1 | 1.2.10-bp151.4.1 |
eximSUSE:Package Hub 15 SP2 From an advisory covering 26 CVEs |
before 4.94.2-bp152.6.4.1 | 4.94.2-bp152.6.4.1 |
libspf2SUSE:Package Hub 15 SP2 From an advisory covering 26 CVEs |
before 1.2.10-bp152.5.1 | 1.2.10-bp152.5.1 |
eximopenSUSE:Tumbleweed From an advisory covering 31 CVEs |
before 4.94.2-4.2 | 4.94.2-4.2 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected, aliases, references | OSV | |
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-28016 is a high vulnerability (CVSS 7.8) in Exim, published May 6, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.40%, the 33rd percentile. Fixed in exim 4.94.2-r0.
References
exim.org/static/doc/security/CVE-2020-qualys/CVE-2020-28016-PFPZA.txt
nvd.nist.gov/vuln/detail/CVE-2020-28016
github.com/advisories/GHSA-ggp5-gp7q-6r3v
security.alpinelinux.org/vuln/CVE-2020-28016
security-tracker.debian.org/tracker/CVE-2020-28016
lists.opensuse.org/archives/list/[email protected]/thread/4UGIR4NXSH3ADTQNJZHHL5EVSFNXRGTQ
Show 42 moreShow less
bugzilla.suse.com/1079832
bugzilla.suse.com/1171490
bugzilla.suse.com/1171877
bugzilla.suse.com/1173693
bugzilla.suse.com/1185631
suse.com/security/cve/CVE-2017-1000369
suse.com/security/cve/CVE-2017-16943
suse.com/security/cve/CVE-2017-16944
suse.com/security/cve/CVE-2018-6789
suse.com/security/cve/CVE-2019-16928
suse.com/security/cve/CVE-2020-12783
suse.com/security/cve/CVE-2020-28007
suse.com/security/cve/CVE-2020-28008
suse.com/security/cve/CVE-2020-28009
suse.com/security/cve/CVE-2020-28010
suse.com/security/cve/CVE-2020-28011
suse.com/security/cve/CVE-2020-28012
suse.com/security/cve/CVE-2020-28013
suse.com/security/cve/CVE-2020-28014
suse.com/security/cve/CVE-2020-28015
suse.com/security/cve/CVE-2020-28016
suse.com/security/cve/CVE-2020-28017
suse.com/security/cve/CVE-2020-28018
suse.com/security/cve/CVE-2020-28019
suse.com/security/cve/CVE-2020-28020
suse.com/security/cve/CVE-2020-28021
suse.com/security/cve/CVE-2020-28022
suse.com/security/cve/CVE-2020-28023
suse.com/security/cve/CVE-2020-28024
suse.com/security/cve/CVE-2020-28025
suse.com/security/cve/CVE-2020-28026
lists.opensuse.org/archives/list/[email protected]/thread/UMX36VOLIS2TDKA3MXOUO365NDUK5WQ3
bugzilla.suse.com/1136587
bugzilla.suse.com/1142207
bugzilla.suse.com/1154183
bugzilla.suse.com/1160726
suse.com/security/cve/CVE-2019-10149
suse.com/security/cve/CVE-2019-13917
suse.com/security/cve/CVE-2019-15846
suse.com/security/cve/CVE-2020-8015
lists.opensuse.org/archives/list/[email protected]/thread/3FZPX7R5ELKQM2EW7W2JYZ7EFIIDTT4E
suse.com/security/cve/CVE-2016-9963
Left out here: the rest of 3 source descriptions. The JSON record has them.