Date: Tue, 28 Jul 2015 23:50:51 -0600 From: Roger Wilson <roger@softridge.com> To: freebsd-security@freebsd.org Subject: Re: FreeBSD Security Advisory FreeBSD-SA-15:15.tcp Message-ID: <55B869BB.5070304@softridge.com> In-Reply-To: <20150728203026.4D19C1754@freefall.freebsd.org> References: <20150728203026.4D19C1754@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Probably not an issue; but would not hurt to patch anyway if it can be done as part of other patches. Roger Ben Wilson 303-579-5521, cell roger@softridge.com On 07/28/2015 14:30 , FreeBSD Security Advisories wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA512 > > ============================================================================= > FreeBSD-SA-15:15.tcp Security Advisory > The FreeBSD Project > > Topic: Resource exhaustion in TCP reassembly > > Category: core > Module: inet > Announced: 2015-07-28 > Credits: Patrick Kelsey (Norse Corporation) > Affects: All supported versions of FreeBSD. > Corrected: 2015-07-28 19:58:44 UTC (stable/10, 10.2-PRERELEASE) > 2015-07-28 19:58:44 UTC (stable/10, 10.2-BETA2-p2) > 2015-07-28 19:59:04 UTC (releng/10.2, 10.2-RC1-p1) > 2015-07-28 19:59:11 UTC (releng/10.1, 10.1-RELEASE-p16) > 2015-07-28 19:58:54 UTC (stable/9, 9.3-STABLE) > 2015-07-28 19:59:22 UTC (releng/9.3, 9.3-RELEASE-p21) > 2015-07-28 19:58:54 UTC (stable/8, 8.4-STABLE) > 2015-07-28 19:59:22 UTC (releng/8.4, 8.4-RELEASE-p35) > CVE Name: CVE-2015-1417 > > 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 Transmission Control Protocol (TCP) of the TCP/IP protocol suite > provides a connection-oriented, reliable, sequence-preserving data > stream service. > > The underlying simple and potentially unreliable IP datagram > communication protocol may deliver segments out of order, therefore, > the TCP receiver would need to reassemble the segments into their > original sequence to provide a reliable octet stream. Because the > reassembly requires additional resources to keep the queued segments, > historically resource exhaustion in the TCP reassembly path has been > prevented by limiting the total number of segments that could belong > to reassembly queues to a small fraction (1/16) of the total number of > mbuf clusters in the system. > > VNET is a technique to virtualize the network stack, first introduced in > FreeBSD 8.0. It changes global resources in the network stack into per > network stack resources, so that a virtual network stack can be attached > to a jailed prison and the prison can have unrestricted access to the > virtual network stack. VNET is not enabled by default and has to be > enabled by recompiling the kernel. > > II. Problem Description > > There is a mistake with the introduction of VNET, which converted the > global limit on the number of segments that could belong to reassembly > queues into a per-VNET limit. Because mbufs are allocated from a > global pool, in the presence of a sufficient number of VNETs, the > total number of mbufs attached to reassembly queues can grow to the > total number of mbufs in the system, at which point all network > traffic would cease. > > III. Impact > > An attacker who can establish concurrent TCP connections across a > sufficient number of VNETs and manipulate the inbound packet streams > such that the maximum number of mbufs are enqueued on each reassembly > queue can cause mbuf cluster exhaustion on the target system, resulting > in a Denial of Service condition. > > As the default per-VNET limit on the number of segments that can > belong to reassembly queues is 1/16 of the total number of mbuf > clusters in the system, only systems that have 16 or more VNET > instances are vulnerable. > > IV. Workaround > > FreeBSD 8.x, 9.x and 10.x systems that do not make use of VNETs > (option VIMAGE) are not affected. The support has to be specifically > compiled into a custom kernel, so its use is not common. > > For affected systems, the system administrators may consider reducing > the net.inet.tcp.reass.maxsegments tunable to the value of > kern.ipc.nmbclusters divided by one greater than the total number of > VNETs that are going to be used in the system in order to prevent a > Denial of Service via this vulnerability. For example, if there are > 16 VNETs in the system, the net.inet.tcp.reass.maxsegments tunable > should be set to kern.ipc.nmbclusters / 17. > > V. Solution > > Perform one of the following: > > 1) Upgrade your vulnerable system to a supported FreeBSD stable or > release / security branch (releng) dated after the correction date, > and reboot the system. > > 2) 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 > > And reboot the system. > > 3) 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. > > [FreeBSD 10.2] > # fetch https://security.FreeBSD.org/patches/SA-15:15/tcp.patch > # fetch https://security.FreeBSD.org/patches/SA-15:15/tcp.patch.asc > # gpg --verify tcp.patch.asc > > [FreeBSD 9.3 and 10.1] > # fetch https://security.FreeBSD.org/patches/SA-15:15/tcp-9.3-10.1.patch > # fetch https://security.FreeBSD.org/patches/SA-15:15/tcp-9.3-10.1.patch.asc > # gpg --verify tcp-9.3-10.1.patch.asc > > [FreeBSD 8.4] > # fetch https://security.FreeBSD.org/patches/SA-15:15/tcp-8.patch > # fetch https://security.FreeBSD.org/patches/SA-15:15/tcp-8.patch.asc > # gpg --verify tcp-8.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/8/ r285977 > releng/8.4/ r285980 > stable/9/ r285977 > releng/9.3/ r285980 > stable/10/ r285976 > releng/10.1/ r285979 > releng/10.2/ r285978 > - ------------------------------------------------------------------------- > > 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-2015-1417> > > The latest revision of this advisory is available at > <URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-15:15.tcp.asc> > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.1.6 (FreeBSD) > > iQIcBAEBCgAGBQJVt+FcAAoJEO1n7NZdz2rnOAgQAKw0jR1Eb/USmcXlFpfMrmUr > Z6UWHsPqE9CwDJaFddrFBRyjCsbeBv4LmPyVcOKJoqspEb8P52GtBNDe9vqcco1U > C+KpcQQKWTQmu170AdLAIRVvLjoNEX0C09ig4XMbKpisrmQ8zLXavTbTw8FlbPXq > o9t0nFgPKsDfaXJF3Oas41K/NsBj4hdqnfx+R7KeOaJ6sSwiFGbRxqQ+GG3k+79a > RI+KVLpw4QV/IkhXKzl416o6uk7eWnJu72GohdrxPvXYWHBVSBkSiT7pLl3O5C7r > 7+dpYyF9f4K0gnXLuATNixNS2/lL2WaJANb75ku7WnY2I5Yjx1oM2r5kE2eJ6Z/c > WXGnDE9/8SOVURqMwnpQgzVGopKZags0+X7FJAYKeW4/nWyUEAmDlQ+9dY7o/I0M > urFD+bsSxnrlGLLzjX55zKM1qyGlhNokowSusVeNlSEOl8/QV57CuyQDZ0wdAiUd > R2yl+fFxRKn4AeCMuKkEsoExLhISI7Uuz8Hjia7g0yJWfYjEjAWLcFpan/QmhwcP > 4PMg+2ZuPC0uUoXqCMBqu3d0NAaae4cOCzx8WCZUaaF3DwhRnUcld+XesV/h3SNo > kn3ygFyOVWrCd7bSsEd00qqUwUN/cp/uYTqlbI9im89Emaa7/mYR/i3sq2/MRagr > 2oio8OdZ8wwRuER4Jpq9 > =PC1V > -----END PGP SIGNATURE----- > _______________________________________________ > freebsd-security-notifications@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-security-notifications > To unsubscribe, send any mail to "freebsd-security-notifications-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?55B869BB.5070304>