-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 ============================================================================= 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 . 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 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: VII. References The latest revision of this advisory is available at -----BEGIN PGP SIGNATURE----- iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAl8q63hfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n 5cJDxw/+PML4MB46paBDyLvebprXe5Z/FrUN1ybH8YjrJTYFyX+aw8K3hAa2K+PB kUc3VwbIv0BAylSCgULXdTxx8JKpMnmHcN3Bk8LKdMCvp0gJvkzcAP/a7Kj1EKfY m04p3/7ka9f7u99n1QX1jnZP2XWEFKOoyWbEJWuDk0+NBW3ICQWqQLoiXaWAS4HD BrXAqowtyoR1vaMrAjmSyWaFSDFjQeiHw8nxCzRF1E6cKF/rwCt37cnpEGqSCAYi /ZyB1qy1s67F9hHnZp9+JhffWqUZAuLse8HTWgBG+svpzDrx2gNxE/C/Tui0lYXg S3akC3DbiySZpP007J8yR5PvytYAbSuECJVVRoC0dukmBabFqSFlacInpfIn363m fOg1nmq/oRh9MAJzaBKG+N6SD+mP3kvcV9Ad5fOKr4yLQtlwYEYyiN1WbCs0O/ve fnRIGB9xtibIr1i9IEY7+KNMAH3Di2F0E4ixFPMrBcJiStuZmCTqJRx99QLYtb0G p9p1bzjPUaWAMDi9mteFu1I+NO836MeLydbCZnSa5KLe+vc1PjP4kSvt6XQ9HFtO nXMddWxdcus8BmxZ04K5a4WaaSYOiN4e4O72WWuA714io+EWJAEaqleMr7KbYTCv f1fCmoKxyoFJcHL9z3oOOi5DqrBoFPnE0p/gPGFc8qyTNEbI428= =tTSr -----END PGP SIGNATURE-----