Date: Tue, 4 Dec 2018 18:45:45 +0000 (UTC) From: Gordon Tetlow <gordon@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r52569 - in head/share: security/advisories security/patches/SA-18:14 xml Message-ID: <201812041845.wB4IjjfN090846@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: gordon (src,ports committer) Date: Tue Dec 4 18:45:45 2018 New Revision: 52569 URL: https://svnweb.freebsd.org/changeset/doc/52569 Log: Publish FreeBSD-SA-18:14.bhyve. Approved by: so Added: head/share/security/advisories/FreeBSD-SA-18:14.bhyve.asc (contents, props changed) head/share/security/patches/SA-18:14/ head/share/security/patches/SA-18:14/bhyve.patch (contents, props changed) head/share/security/patches/SA-18:14/bhyve.patch.asc (contents, props changed) Modified: head/share/xml/advisories.xml Added: head/share/security/advisories/FreeBSD-SA-18:14.bhyve.asc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/security/advisories/FreeBSD-SA-18:14.bhyve.asc Tue Dec 4 18:45:45 2018 (r52569) @@ -0,0 +1,133 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +============================================================================= +FreeBSD-SA-18:14.bhyve Security Advisory + The FreeBSD Project + +Topic: Insufficient bounds checking in bhyve(8) device model + +Category: core +Module: bhyve +Announced: 2018-12-04 +Credits: Reno Robert +Affects: All supported versions of FreeBSD. +Corrected: 2018-12-04 18:32:50 UTC (stable/11, 11.2-STABLE) + 2018-12-04 18:38:32 UTC (releng/11.2, 11.2-RELEASE-p6) +CVE Name: CVE-2018-17160 + +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 + +The bhyve hypervisor uses the bhyve(8) program to emulate support for most +virtual devices used by guest operating systems. + +II. Problem Description + +Insufficient bounds checking in one of the device models provided by bhyve(8) +can permit a guest operating system to overwrite memory in the bhyve(8) +processing possibly permitting arbitary code execution. + +III. Impact + +A guest OS using a firmware image can cause the bhyve process to crash, or +possibly execute arbitrary code on the host as root. + +IV. Workaround + +The device model in question is only enabled when booting guests with a +firmware image such as the UEFI images from the bhyve-firmware package. +Guests booted using bhyveload(8) or grub2-bhyve are not affected. Guests +using operating systems supported by bhyveload(8) or grub2-bhyve can be +booted using these tools as a workaround. + +No workaround is available for guest operating systems such as Windows that +require a firmware image. + +V. Solution + +Perform one of the following: + +Upgrade your vulnerable system to a supported FreeBSD stable or +release / security branch (releng) dated after the correction date. + +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 + +Afterward, restart guests using firmware images. + +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-18:14/bhyve.patch +# fetch https://security.FreeBSD.org/patches/SA-18:14/bhyve.patch.asc +# gpg --verify bhyve.patch.asc + +b) Apply the patch. Execute the following commands as root: + +# cd /usr/src +# patch < /path/to/patch + +c) Recompile the operating system using buildworld and installworld as +described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>. + +Afterward, restart guests using firmware images. + +VI. Correction details + +The following list contains the correction revision numbers for each +affected branch. + +Branch/path Revision +- ------------------------------------------------------------------------- +stable/11/ r341486 +releng/11.2/ r341488 +- ------------------------------------------------------------------------- + +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-2018-17160> + +The latest revision of this advisory is available at +<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-18:14.bhyve.asc> +-----BEGIN PGP SIGNATURE----- + +iQKTBAEBCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAlwGykdfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cKcIQ/+Ktt7+SZPoWZQmJv6LdT6qI+na0+/9LDwBoC+Tj37heFUnhcMTxDDH4o3 +nexELxF1xHmRchooRKfJr7npa8CF4jBzp2PSb+783q6TrFKe90ohlmt56lRB6gJg +3IJX5TxvAvLsqTgwPyALqyy3H5C8cY3btHPsZIArK0WVRTB74K3mr3L3IRVTcMCv +9cbUZyDO21ZIDTB5h9FYGo+6bg8hvZztmromkxssqlKKS8TUltGr/H3k6EHlnEA9 +rG+6kswIgyeXNFrdksD6ni7L5Z3lwR/DFiU2d/lageQZ6vgDUa3c0KMhepfelfJR +AiUtGpgfCDuHZ1NV2uyr9I6nPRHhdxPy3o2bF/B7+SLdn03tcZiO0tx3Wf68EQlt +jAYFuup7+TFKoupsHlb2fkQxNOeQCr6dF+ikJDVgwCqmx2zn9tDo/tWoNdH+Jylx +MDKsE369HOSRGR3Ua1ELEtOEzbGbcUHJyT6I1E2poctE61hYI+5te6pasY3ReN68 +vyFMAo5ey0kJ6mi2YVcvDo2ZEb/GP1noJkdquYpIm8Ko0TPtivaMHXLIPcpLiJUc +fBZexGCXJnb8f6ClMMU12U6f3H35Hz1AUPG3MSWHGgoczQBZJ8PECJ+r0X5bhkzW +Ymlksu/HprW4tFLCdD4mB7lewvr3qpmoRoS1KwgMoXnRKzPbGsc= +=4zGb +-----END PGP SIGNATURE----- Added: head/share/security/patches/SA-18:14/bhyve.patch ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/security/patches/SA-18:14/bhyve.patch Tue Dec 4 18:45:45 2018 (r52569) @@ -0,0 +1,97 @@ +--- usr.sbin/bhyve/fwctl.c.orig ++++ usr.sbin/bhyve/fwctl.c +@@ -79,8 +79,8 @@ + + struct op_info { + int op; +- int (*op_start)(int len); +- void (*op_data)(uint32_t data, int len); ++ int (*op_start)(uint32_t len); ++ void (*op_data)(uint32_t data, uint32_t len); + int (*op_result)(struct iovec **data); + void (*op_done)(struct iovec *data); + }; +@@ -119,7 +119,7 @@ + } + + static int +-errop_start(int len) ++errop_start(uint32_t len) + { + errop_code = ENOENT; + +@@ -128,7 +128,7 @@ + } + + static void +-errop_data(uint32_t data, int len) ++errop_data(uint32_t data, uint32_t len) + { + + /* ignore */ +@@ -188,7 +188,7 @@ + static size_t fget_size; + + static int +-fget_start(int len) ++fget_start(uint32_t len) + { + + if (len > FGET_STRSZ) +@@ -200,7 +200,7 @@ + } + + static void +-fget_data(uint32_t data, int len) ++fget_data(uint32_t data, uint32_t len) + { + + *((uint32_t *) &fget_str[fget_cnt]) = data; +@@ -285,8 +285,8 @@ + struct op_info *req_op; + int resp_error; + int resp_count; +- int resp_size; +- int resp_off; ++ size_t resp_size; ++ size_t resp_off; + struct iovec *resp_biov; + } rinfo; + +@@ -346,13 +346,14 @@ + static int + fwctl_request_data(uint32_t value) + { +- int remlen; + + /* Make sure remaining size is >= 0 */ +- rinfo.req_size -= sizeof(uint32_t); +- remlen = MAX(rinfo.req_size, 0); ++ if (rinfo.req_size <= sizeof(uint32_t)) ++ rinfo.req_size = 0; ++ else ++ rinfo.req_size -= sizeof(uint32_t); + +- (*rinfo.req_op->op_data)(value, remlen); ++ (*rinfo.req_op->op_data)(value, rinfo.req_size); + + if (rinfo.req_size < sizeof(uint32_t)) { + fwctl_request_done(); +@@ -401,7 +402,7 @@ + fwctl_response(uint32_t *retval) + { + uint32_t *dp; +- int remlen; ++ ssize_t remlen; + + switch(rinfo.resp_count) { + case 0: +@@ -436,7 +437,7 @@ + } + + if (rinfo.resp_count > 3 && +- rinfo.resp_size - rinfo.resp_off <= 0) { ++ rinfo.resp_off >= rinfo.resp_size) { + fwctl_response_done(); + return (1); + } Added: head/share/security/patches/SA-18:14/bhyve.patch.asc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/security/patches/SA-18:14/bhyve.patch.asc Tue Dec 4 18:45:45 2018 (r52569) @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEE/A6HiuWv54gCjWNV05eS9J6n5cIFAlwGymNfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZD +MEU4NzhBRTVBRkU3ODgwMjhENjM1NUQzOTc5MkY0OUVBN0U1QzIACgkQ05eS9J6n +5cJzbw//cA11jv1m7gHMt4lxFwjQYxEO+WvLXZWvPv+69sCMnx++3B22bx9ppYgR +DSTE3bdIod9qPbVt8DCgMIP5M1txy4a9WfXUy0UnNPy4Q8Kc91oztGQD4x5ne06M +sluBUK5fhEFwyYiwlzS0JbUH7JXQ3WNrbyuk9eyegPVijFmmuv71hNCs2QUA0gxl +XDbGg3xmfhkIYdVNVj+yp+kUCNaphe0GV4SeY2n3SrdUPePJnSyXGMFbPHtn8eJP +fqE4KaaOfGy1xehzdLnfGWK52n/VIpWoLLNP+7xeNyL1eJ8loAMTY06rbQufKq0H +BQKvd288RrIAESKHyCGsrb1KEruVPqQ3USO2LEB9IJrMpAiNSmjHa5M/u+KjMv6C +VSSAIiyDPu0XlCC5PaPeGoCb2d1RbVQqgiIi6/am6bxOWtMI5hZgcbrGywlZCM18 +JC0KnINEGwMh2P6ObOnFOuZmn6g7QPTTkSeZkKqsfsV2UQ2cRvfRGvaEl3oov2LZ +PpIYJQhOHhU+HrjZC6HyV+lQ9xlWMzsy94/oTyr8C2Dp7rAD3KbZSdAvgRfONkgk +Ht3+sniufuFpYa2dmUmHyYjvkw7ERwPaIA69hIPMylR/+QTwFsloCBgccB/lu/At +uet8vayiEEMo1TKk+LVt9HsVMcg6ZizKq+emAuxssb34QejcSj4= +=4eUb +-----END PGP SIGNATURE----- Modified: head/share/xml/advisories.xml ============================================================================== --- head/share/xml/advisories.xml Tue Dec 4 18:45:07 2018 (r52568) +++ head/share/xml/advisories.xml Tue Dec 4 18:45:45 2018 (r52569) @@ -8,6 +8,19 @@ <name>2018</name> <month> + <name>12</name> + + <day> + <name>04</name> + + <advisory> + <name>FreeBSD-SA-18:14.bhyve</name> + </advisory> + + </day> + </month> + + <month> <name>11</name> <day>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201812041845.wB4IjjfN090846>