Home / mailings FreeBSD Security Advisory FreeBSD-SA-20:23.sendmsg
Posted on 05 August 2020
FreeBSD security notificat=============================================================================FreeBSD-SA-20:23.sendmsg Security Advisory
The FreeBSD Project
Topic: sendmsg(2) privilege escalation
Category: core
Module: kernel compat32
Announced: 2020-08-05
Credits: m00nbsd working with Trend Micro Zero Day Initiative
Affects: All supported versions of FreeBSD.
Corrected: 2020-08-05 17:07:13 UTC (stable/12, 12.1-STABLE)
2020-08-05 17:14:01 UTC (releng/12.1, 12.1-RELEASE-p8)
2020-08-05 17:08:02 UTC (stable/11, 11.4-STABLE)
2020-08-05 17:14:01 UTC (releng/11.4, 11.4-RELEASE-p2)
2020-08-05 17:14:01 UTC (releng/11.3, 11.3-RELEASE-p12)
CVE Name: CVE-2020-7460
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit <URL:https://security.FreeBSD.org/>.
I. Background
FreeBSD provides the compat32 subsystem, used to enable execution of 32-bit
binaries on amd64 and other 64-bit platforms. System calls whose parameters
require translation are handled by compat32 before being dispatched to the
native system call handler.
sendmsg(2) and recvmsg(2) may be used to transmit or receive control messages
whose contents are evaluated by the kernel. Such messages have different
alignment constraints on 32-bit and 64-bit platforms and thus must be translated
by the compat32 subsystem when sendmsg(2) or recvmsg(2) are invoked by a 32-bit
process.
II. Problem Description
When handling a 32-bit sendmsg(2) call, the compat32 subsystem copies the
control message to be transmitted (if any) into kernel memory, and adjusts
alignment of control message headers. The code which performs this work
contained a time-of-check to time-of-use (TOCTOU) vulnerability which allows a
malicious userspace program to modify control message headers after they were
validated by the kernel.
III. Impact
The TOCTOU bug can be exploited by an unprivileged malicious userspace program
to trigger privilege escalation.
IV. Workaround
i386 and other 32-bit platforms are not vulnerable.
No workaround is available for amd64 or arm64. Kernels compiled without the
COMPAT_FREEBSD32 option are not vulnerable, but this option is configured in
GENERIC kernels.
V. Solution
Upgrade your vulnerable system to a supported FreeBSD stable or
release / security branch (releng) dated after the correction date,
and reboot.
Perform one of the following:
1) To update your vulnerable system via a binary patch:
Systems running a RELEASE version of FreeBSD on the i386 or amd64
platforms can be updated via the freebsd-update(8) utility:
# freebsd-update fetch
# freebsd-update install
# shutdown -r +10min "Rebooting for a security update"
2) To update your vulnerable system via a source code patch:
The following patches have been verified to apply to the applicable
FreeBSD release branches.
a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.
# fetch https://security.FreeBSD.org/patches/SA-20:23/sendmsg.patch
# fetch https://security.FreeBSD.org/patches/SA-20:23/sendmsg.patch.asc
# gpg --verify sendmsg.patch.asc
b) Apply the patch. Execute the following commands as root:
# cd /usr/src
# patch < /path/to/patch
c) Recompile your kernel as described in
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
system.
VI. Correction details
The following list contains the correction revision numbers for each
affected branch.
Branch/path Revision
- -------------------------------------------------------------------------
stable/12/ r363918
releng/12.1/ r363923
stable/11/ r363919
releng/11.4/ r363923
releng/11.3/ r363923
- -------------------------------------------------------------------------
To see which files were modified by a particular revision, run the
following command, replacing NNNNNN with the revision number, on a
machine with Subversion installed:
# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
Or visit the following URL, replacing NNNNNN with the revision number:
<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
VII. References
<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7460>
The latest revision of this advisory is available at
<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-20:23.sendmsg.asc>