Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Sep 2013 10:31:23 +0000 (UTC)
From:      Dag-Erling Smørgrav <des@FreeBSD.org>
To:        doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org
Subject:   svn commit: r42642 - in head/share: security/advisories security/patches/SA-13:11 security/patches/SA-13:12 security/patches/SA-13:13 xml
Message-ID:  <201309101031.r8AAVN1R013527@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: des
Date: Tue Sep 10 10:31:23 2013
New Revision: 42642
URL: http://svnweb.freebsd.org/changeset/doc/42642

Log:
  Fix the length calculation for the final block of a sendfile(2)
  transmission which could be tricked into rounding up to the nearest
  page size, leaking up to a page of kernel memory.  [13:11]
  
  In IPv6 and NetATM, stop SIOCSIFADDR, SIOCSIFBRDADDR, SIOCSIFDSTADDR
  and SIOCSIFNETMASK at the socket layer rather than pass them on to the
  link layer without validation or credential checks.  [SA-13:12]
  
  Prevent cross-mount hardlinks between different nullfs mounts of the
  same underlying filesystem.  [SA-13:13]
  
  Security:	CVE-2013-5666
  Security:	FreeBSD-SA-13:11.sendfile
  Security:	CVE-2013-5691
  Security:	FreeBSD-SA-13:12.ifioctl
  Security:	CVE-2013-5710
  Security:	FreeBSD-SA-13:13.nullfs
  Approved by:	so

Added:
  head/share/security/advisories/FreeBSD-SA-13:11.sendfile.asc   (contents, props changed)
  head/share/security/advisories/FreeBSD-SA-13:12.ifioctl.asc   (contents, props changed)
  head/share/security/advisories/FreeBSD-SA-13:13.nullfs.asc   (contents, props changed)
  head/share/security/patches/SA-13:11/
  head/share/security/patches/SA-13:11/sendfile-9.2-rc.patch   (contents, props changed)
  head/share/security/patches/SA-13:11/sendfile-9.2-rc.patch.asc   (contents, props changed)
  head/share/security/patches/SA-13:11/sendfile-9.2-stable.patch   (contents, props changed)
  head/share/security/patches/SA-13:11/sendfile-9.2-stable.patch.asc   (contents, props changed)
  head/share/security/patches/SA-13:12/
  head/share/security/patches/SA-13:12/ifioctl.patch   (contents, props changed)
  head/share/security/patches/SA-13:12/ifioctl.patch.asc   (contents, props changed)
  head/share/security/patches/SA-13:13/
  head/share/security/patches/SA-13:13/nullfs.patch   (contents, props changed)
  head/share/security/patches/SA-13:13/nullfs.patch.asc   (contents, props changed)
Modified:
  head/share/xml/advisories.xml

Added: head/share/security/advisories/FreeBSD-SA-13:11.sendfile.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-SA-13:11.sendfile.asc	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,126 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+=============================================================================
+FreeBSD-SA-13:11.sendfile                                   Security Advisory
+                                                          The FreeBSD Project
+
+Topic:          Kernel memory disclosure in sendfile(2)
+
+Category:       core
+Module:         sendfile
+Announced:      2013-09-10
+Credits:        Ed Maste
+Affects:        FreeBSD 9.2-RC1 and 9.2-RC2
+Corrected:      2013-09-10 10:07:21 UTC (stable/9, 9.2-STABLE)
+                2013-09-10 10:08:20 UTC (releng/9.2, 9.2-RC1-p2)
+                2013-09-10 10:08:20 UTC (releng/9.2, 9.2-RC2-p2)
+CVE Name:       CVE-2013-5666
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit <URL:http://security.FreeBSD.org/>.
+
+I.   Background
+
+The sendfile(2) system call allows a server application (such as an
+HTTP or FTP server) to transmit the contents of a file over a network
+connection without first copying it to application memory.  High
+performance servers such as Apache and ftpd use sendfile.
+
+II.  Problem Description
+
+On affected systems, if the length passed to sendfile(2) is non-zero
+and greater than the length of the file being transmitted, sendfile(2)
+will pad the transmission up to the requested length or the next
+pagesize boundary, whichever is smaller.
+
+The content of the additional bytes transmitted in this manner depends
+on the underlying filesystem, but may potentially include information
+useful to an attacker.
+
+III. Impact
+
+An unprivileged user with the ability to run arbitrary code may be
+able to obtain arbitrary kernel memory contents.
+
+IV.  Workaround
+
+No workaround is available.
+
+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.
+
+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.
+
+[FreeBSD 9.2-STABLE]
+# fetch http://security.FreeBSD.org/patches/SA-13:11/sendfile-9.2-stable.patch
+# fetch http://security.FreeBSD.org/patches/SA-13:11/sendfile-9.2-stable.patch.asc
+# gpg --verify sendfile-9.2-stable.patch.asc
+
+[FreeBSD 9.2-RC1 and 9.2-RC2]
+# fetch http://security.FreeBSD.org/patches/SA-13:11/sendfile-9.2-rc.patch
+# fetch http://security.FreeBSD.org/patches/SA-13:11/sendfile-9.2-rc.patch.asc
+# gpg --verify sendfile-9.2-rc.patch.asc
+
+b) Apply the patch.
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile your kernel as described in
+<URL:http://www.FreeBSD.org/handbook/kernelconfig.html>; and reboot the
+system.
+
+3) 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
+
+VI.  Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/9/                                                         r255443
+releng/9.2/                                                       r255444
+- -------------------------------------------------------------------------
+
+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:http://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>;
+
+VII. References
+
+<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-5666>;
+
+The latest revision of this advisory is available at
+<URL:http://security.FreeBSD.org/advisories/FreeBSD-SA-13:11.sendfile.asc>;
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.14 (FreeBSD)
+
+iEYEARECAAYFAlIu8rIACgkQFdaIBMps37K01ACgmwaW3PZhjDqWSlTHusjIPNVy
+A/YAn3DFUAvlX8sH89taM+sedjbD5In8
+=gZwu
+-----END PGP SIGNATURE-----

Added: head/share/security/advisories/FreeBSD-SA-13:12.ifioctl.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-SA-13:12.ifioctl.asc	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,150 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+=============================================================================
+FreeBSD-SA-13:12.ifioctl                                    Security Advisory
+                                                          The FreeBSD Project
+
+Topic:          Insufficient credential checks in network ioctl(2)
+
+Category:       core
+Module:         sys_netinet6 sys_netatm
+Announced:      2013-09-10
+Credits:        Loganaden Velvindron
+                Gleb Smirnoff
+Affects:        All supported versions of FreeBSD.
+Corrected:      2013-09-10 10:07:21 UTC (stable/9, 9.2-STABLE)
+                2013-09-10 10:08:20 UTC (releng/9.2, 9.2-RC1-p2)
+                2013-09-10 10:08:20 UTC (releng/9.2, 9.2-RC2-p2)
+                2013-09-10 10:08:20 UTC (releng/9.2, 9.2-RC3-p1)
+                2013-09-10 10:15:33 UTC (releng/9.1, 9.1-RELEASE-p7)
+                2013-09-10 10:12:09 UTC (stable/8, 8.4-STABLE)
+                2013-09-10 10:14:19 UTC (releng/8.4, 8.4-RELEASE-p4)
+                2013-09-10 10:13:14 UTC (releng/8.3, 8.3-RELEASE-p11)
+CVE Name:       CVE-2013-5691
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit <URL:http://security.FreeBSD.org/>.
+
+I.   Background
+
+The ioctl(2) system call allows an application to perform device- or
+protocol-specific operations through a file or socket descriptor
+associated with a specific device or protocol.
+
+The SIOCSIFADDR, SIOCSIFBRDADDR, SIOCSIFDSTADDR and SIOCSIFNETMASK
+ioctl requests are used to associate a network address, broadcast
+address, destination address (for point-to-point interfaces) or
+netmask with an interface.  They operate on the assumption that each
+interface only has one address per protocol, and are therefore of
+limited use for IPv4, where interfaces may have more than one address.
+They were never implemented for IPv6, where interfaces nearly always
+have at least two, and in many cases three, addresses; nor were they
+ever implemented for ATM.
+
+II.  Problem Description
+
+As is commonly the case, the IPv6 and ATM network layer ioctl request
+handlers are written in such a way that an unrecognized request is
+passed on unmodified to the link layer, which will either handle it or
+return an error code.
+
+Network interface drivers, however, assume that the SIOCSIFADDR,
+SIOCSIFBRDADDR, SIOCSIFDSTADDR and SIOCSIFNETMASK requests have been
+handled at the network layer, and therefore do not perform input
+validation or verify the caller's credentials.  Typical link-layer
+actions for these requests may include marking the interface as "up"
+and resetting the underlying hardware.
+
+III. Impact
+
+An unprivileged user with the ability to run arbitrary code can cause
+any network interface in the system to perform the link layer actions
+associated with a SIOCSIFADDR, SIOCSIFBRDADDR, SIOCSIFDSTADDR or
+SIOCSIFNETMASK ioctl request; or trigger a kernel panic by passing a
+specially crafted address structure which causes a network interface
+driver to dereference an invalid pointer.
+
+Although this has not been confirmed, the possibility that an attacker
+may be able to execute arbitrary code in kernel context can not be
+ruled out.
+
+IV.  Workaround
+
+No workaround is available.
+
+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.
+
+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 http://security.FreeBSD.org/patches/SA-13:12/ifioctl.patch
+# fetch http://security.FreeBSD.org/patches/SA-13:12/ifioctl.patch.asc
+# gpg --verify ifioctl.patch.asc
+
+b) Apply the patch.
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile your kernel as described in
+<URL:http://www.FreeBSD.org/handbook/kernelconfig.html>; and reboot the
+system.
+
+3) 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
+
+VI.  Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/8/                                                         r255445
+releng/8.3/                                                       r255446
+releng/8.4/                                                       r255447
+stable/9/                                                         r255443
+releng/9.1/                                                       r255448
+releng/9.2/                                                       r255444
+- -------------------------------------------------------------------------
+
+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:http://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>;
+
+VII. References
+
+<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-5691>;
+
+The latest revision of this advisory is available at
+<URL:http://security.FreeBSD.org/advisories/FreeBSD-SA-13:12.ifioctl.asc>;
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.14 (FreeBSD)
+
+iEYEARECAAYFAlIu8rUACgkQFdaIBMps37ImRQCdGUcSBvK6+kAN69aGChHT6fVb
+YI4AoJNveN9PSowTG0NnUkPJR9oJimZT
+=xb3g
+-----END PGP SIGNATURE-----

Added: head/share/security/advisories/FreeBSD-SA-13:13.nullfs.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/advisories/FreeBSD-SA-13:13.nullfs.asc	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,139 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+=============================================================================
+FreeBSD-SA-13:13.nullfs                                     Security Advisory
+                                                          The FreeBSD Project
+
+Topic:          Cross-mount links between nullfs(5) mounts
+
+Category:       core
+Module:         nullfs
+Announced:      2013-09-10
+Credits:        Mateusz Guzik
+		Konstantin Belousov
+Affects:        All supported versions of FreeBSD.
+Corrected:      2013-09-10 10:07:21 UTC (stable/9, 9.2-STABLE)
+                2013-09-10 10:08:20 UTC (releng/9.2, 9.2-RC1-p2)
+                2013-09-10 10:08:20 UTC (releng/9.2, 9.2-RC2-p2)
+                2013-09-10 10:08:20 UTC (releng/9.2, 9.2-RC3-p1)
+                2013-09-10 10:15:33 UTC (releng/9.1, 9.1-RELEASE-p7)
+                2013-09-10 10:12:09 UTC (stable/8, 8.4-STABLE)
+                2013-09-10 10:14:19 UTC (releng/8.4, 8.4-RELEASE-p4)
+                2013-09-10 10:13:14 UTC (releng/8.3, 8.3-RELEASE-p11)
+CVE Name:       CVE-2013-5710
+
+For general information regarding FreeBSD Security Advisories,
+including descriptions of the fields above, security branches, and the
+following sections, please visit <URL:http://security.FreeBSD.org/>.
+
+I.   Background
+
+The nullfs(5) filesystem allows all or a part of an already mounted
+filesystem to be made available in a different part of the global
+filesystem namespace.  It is commonly used to make a set of files
+available to multiple chroot(2) or jail(2) environments without
+replicating the files in each environment.  A common idiom, described
+in the FreeBSD Handbook, is to mount one subtree of a filesystem
+read-only within a jail's filesystem namespace, and mount a different
+subtree of the same filesystem read-write.
+
+II.  Problem Description
+
+The nullfs(5) implementation of the VOP_LINK(9) VFS operation does not
+check whether the source and target of the link are both in the same
+nullfs instance.  It is therefore possible to create a hardlink from a
+location in one nullfs instance to a file in another, as long as the
+underlying (source) filesystem is the same.
+
+III. Impact
+
+If multiple nullfs views into the same filesystem are mounted in
+different locations, a user with read access to one of these views and
+write access to another will be able to create a hard link from the
+latter to a file in the former, even though they are, from the user's
+perspective, different filesystems.  The user may thereby gain write
+access to files which are nominally on a read-only filesystem.
+
+IV.  Workaround
+
+No workaround is available, but systems which do not use the nullfs(5)
+filesystem, or do not null-mount different subtrees of the same source
+filesystem with different permissions, are not vulnerable.
+
+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.
+
+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 http://security.FreeBSD.org/patches/SA-13:13/nullfs.patch
+# fetch http://security.FreeBSD.org/patches/SA-13:13/nullfs.patch.asc
+# gpg --verify nullfs.patch.asc
+
+b) Apply the patch.
+
+# cd /usr/src
+# patch < /path/to/patch
+
+c) Recompile your kernel as described in
+<URL:http://www.FreeBSD.org/handbook/kernelconfig.html>; and reboot the
+system.
+
+3) 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
+
+VI.  Correction details
+
+The following list contains the correction revision numbers for each
+affected branch.
+
+Branch/path                                                      Revision
+- -------------------------------------------------------------------------
+stable/8/                                                         r255445
+releng/8.3/                                                       r255446
+releng/8.4/                                                       r255447
+stable/9/                                                         r255443
+releng/9.1/                                                       r255448
+releng/9.2/                                                       r255444
+- -------------------------------------------------------------------------
+
+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:http://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>;
+
+VII. References
+
+<URL:http://www.freebsd.org/doc/en/books/handbook/jails-application.html>;
+
+<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-5710>;
+
+The latest revision of this advisory is available at
+<URL:http://security.FreeBSD.org/advisories/FreeBSD-SA-13:13.nullfs.asc>;
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.14 (FreeBSD)
+
+iEYEARECAAYFAlIu8rgACgkQFdaIBMps37KX4QCgn/PjsnAZItGRi7CMbp2jlFvS
+IokAniKX2FVr8xXuJPtrLdv+7syjCTQt
+=Lj26
+-----END PGP SIGNATURE-----

Added: head/share/security/patches/SA-13:11/sendfile-9.2-rc.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-13:11/sendfile-9.2-rc.patch	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,20 @@
+Index: sys/kern/uipc_syscalls.c
+===================================================================
+--- sys/kern/uipc_syscalls.c	(revision 253912)
++++ sys/kern/uipc_syscalls.c	(working copy)
+@@ -2087,11 +2087,10 @@
+ 			 * or the passed in nbytes.
+ 			 */
+ 			pgoff = (vm_offset_t)(off & PAGE_MASK);
+-			if (uap->nbytes)
+-				rem = (uap->nbytes - fsbytes - loopbytes);
+-			else
+-				rem = va.va_size -
+-				    uap->offset - fsbytes - loopbytes;
++			rem = obj->un_pager.vnp.vnp_size - uap->offset;
++			if (uap->nbytes != 0)
++				rem = omin(rem, uap->nbytes);
++			rem -= fsbytes + loopbytes;
+ 			xfsize = omin(PAGE_SIZE - pgoff, rem);
+ 			xfsize = omin(space - loopbytes, xfsize);
+ 			if (xfsize <= 0) {

Added: head/share/security/patches/SA-13:11/sendfile-9.2-rc.patch.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-13:11/sendfile-9.2-rc.patch.asc	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.14 (FreeBSD)
+
+iEYEABECAAYFAlIuF7gACgkQFdaIBMps37LokwCcD0WafThPclpU1qRNCTzNhe61
+S04AmwfYZwH8ZsCbTWFw1bZVOhcqim/m
+=6DgA
+-----END PGP SIGNATURE-----

Added: head/share/security/patches/SA-13:11/sendfile-9.2-stable.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-13:11/sendfile-9.2-stable.patch	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,20 @@
+Index: sys/kern/uipc_syscalls.c
+===================================================================
+--- sys/kern/uipc_syscalls.c	(revision 255414)
++++ sys/kern/uipc_syscalls.c	(working copy)
+@@ -2126,11 +2126,10 @@
+ 			 * or the passed in nbytes.
+ 			 */
+ 			pgoff = (vm_offset_t)(off & PAGE_MASK);
+-			if (uap->nbytes)
+-				rem = (uap->nbytes - fsbytes - loopbytes);
+-			else
+-				rem = va.va_size -
+-				    uap->offset - fsbytes - loopbytes;
++			rem = va.va_size - uap->offset;
++			if (uap->nbytes != 0)
++				rem = omin(rem, uap->nbytes);
++			rem -= fsbytes + loopbytes;
+ 			xfsize = omin(PAGE_SIZE - pgoff, rem);
+ 			xfsize = omin(space - loopbytes, xfsize);
+ 			if (xfsize <= 0) {

Added: head/share/security/patches/SA-13:11/sendfile-9.2-stable.patch.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-13:11/sendfile-9.2-stable.patch.asc	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.14 (FreeBSD)
+
+iEYEABECAAYFAlIuF70ACgkQFdaIBMps37Ir2ACeJiObKBkQvyI/3HTotiQnx+7p
+laYAoJZlhgNrqHbAiaDg5qjUbTPZCECa
+=GX/T
+-----END PGP SIGNATURE-----

Added: head/share/security/patches/SA-13:12/ifioctl.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-13:12/ifioctl.patch	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,89 @@
+Index: sys/net/if.c
+===================================================================
+--- sys/net/if.c	(revision 254941)
++++ sys/net/if.c	(working copy)
+@@ -2553,11 +2553,23 @@
+ 		CURVNET_RESTORE();
+ 		return (EOPNOTSUPP);
+ 	}
++
++	/*
++	 * Pass the request on to the socket control method, and if the
++	 * latter returns EOPNOTSUPP, directly to the interface.
++	 *
++	 * Make an exception for the legacy SIOCSIF* requests.  Drivers
++	 * trust SIOCSIFADDR et al to come from an already privileged
++	 * layer, and do not perform any credentials checks or input
++	 * validation.
++	 */
+ #ifndef COMPAT_43
+ 	error = ((*so->so_proto->pr_usrreqs->pru_control)(so, cmd,
+ 								 data,
+ 								 ifp, td));
+-	if (error == EOPNOTSUPP && ifp != NULL && ifp->if_ioctl != NULL)
++	if (error == EOPNOTSUPP && ifp != NULL && ifp->if_ioctl != NULL &&
++	    cmd != SIOCSIFADDR && cmd != SIOCSIFBRDADDR &&
++	    cmd != SIOCSIFDSTADDR && cmd != SIOCSIFNETMASK)
+ 		error = (*ifp->if_ioctl)(ifp, cmd, data);
+ #else
+ 	{
+@@ -2601,7 +2613,9 @@
+ 								   data,
+ 								   ifp, td));
+ 		if (error == EOPNOTSUPP && ifp != NULL &&
+-		    ifp->if_ioctl != NULL)
++		    ifp->if_ioctl != NULL &&
++		    cmd != SIOCSIFADDR && cmd != SIOCSIFBRDADDR &&
++		    cmd != SIOCSIFDSTADDR && cmd != SIOCSIFNETMASK)
+ 			error = (*ifp->if_ioctl)(ifp, cmd, data);
+ 		switch (ocmd) {
+ 
+Index: sys/netinet6/in6.c
+===================================================================
+--- sys/netinet6/in6.c	(revision 254941)
++++ sys/netinet6/in6.c	(working copy)
+@@ -431,6 +431,18 @@
+ 	case SIOCGIFSTAT_ICMP6:
+ 		sa6 = &ifr->ifr_addr;
+ 		break;
++	case SIOCSIFADDR:
++	case SIOCSIFBRDADDR:
++	case SIOCSIFDSTADDR:
++	case SIOCSIFNETMASK:
++		/*
++		 * Although we should pass any non-INET6 ioctl requests
++		 * down to driver, we filter some legacy INET requests.
++		 * Drivers trust SIOCSIFADDR et al to come from an already
++		 * privileged layer, and do not perform any credentials
++		 * checks or input validation.
++		 */
++		return (EINVAL);
+ 	default:
+ 		sa6 = NULL;
+ 		break;
+Index: sys/netnatm/natm.c
+===================================================================
+--- sys/netnatm/natm.c	(revision 254941)
++++ sys/netnatm/natm.c	(working copy)
+@@ -339,6 +339,21 @@
+ 	npcb = (struct natmpcb *)so->so_pcb;
+ 	KASSERT(npcb != NULL, ("natm_usr_control: npcb == NULL"));
+ 
++	switch (cmd) {
++	case SIOCSIFADDR:
++	case SIOCSIFBRDADDR:
++	case SIOCSIFDSTADDR:
++	case SIOCSIFNETMASK:
++		/*
++		 * Although we should pass any non-ATM ioctl requests
++		 * down to driver, we filter some legacy INET requests.
++		 * Drivers trust SIOCSIFADDR et al to come from an already
++		 * privileged layer, and do not perform any credentials
++		 * checks or input validation.
++		 */
++		return (EINVAL);
++	}
++
+ 	if (ifp == NULL || ifp->if_ioctl == NULL)
+ 		return (EOPNOTSUPP);
+ 	return ((*ifp->if_ioctl)(ifp, cmd, arg));

Added: head/share/security/patches/SA-13:12/ifioctl.patch.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-13:12/ifioctl.patch.asc	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.14 (FreeBSD)
+
+iEYEABECAAYFAlIuF98ACgkQFdaIBMps37KefgCeNtxM4xIH3gYvoj4BbefvRoC8
+I8gAnRT1I915xp4nk2lgWK+5HGoDqApO
+=W+Ro
+-----END PGP SIGNATURE-----

Added: head/share/security/patches/SA-13:13/nullfs.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-13:13/nullfs.patch	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,28 @@
+Index: sys/fs/nullfs/null_vnops.c
+===================================================================
+--- sys/fs/nullfs/null_vnops.c	(revision 254941)
++++ sys/fs/nullfs/null_vnops.c	(working copy)
+@@ -858,6 +858,15 @@
+ 	return (error);
+ }
+ 
++static int
++null_link(struct vop_link_args *ap)
++{
++
++	if (ap->a_tdvp->v_mount != ap->a_vp->v_mount)
++		return (EXDEV);
++	return (null_bypass((struct vop_generic_args *)ap));
++}
++
+ /*
+  * Global vfs data structures
+  */
+@@ -871,6 +880,7 @@
+ 	.vop_getwritemount =	null_getwritemount,
+ 	.vop_inactive =		null_inactive,
+ 	.vop_islocked =		vop_stdislocked,
++	.vop_link =		null_link,
+ 	.vop_lock1 =		null_lock,
+ 	.vop_lookup =		null_lookup,
+ 	.vop_open =		null_open,

Added: head/share/security/patches/SA-13:13/nullfs.patch.asc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/share/security/patches/SA-13:13/nullfs.patch.asc	Tue Sep 10 10:31:23 2013	(r42642)
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.14 (FreeBSD)
+
+iEYEABECAAYFAlIuGawACgkQFdaIBMps37J1OgCgm847iabfWVTdyCXAeXVQkK/g
+ZR4AoJrz+a812XboghdqiTvVKVHUyD+b
+=wGcC
+-----END PGP SIGNATURE-----

Modified: head/share/xml/advisories.xml
==============================================================================
--- head/share/xml/advisories.xml	Tue Sep 10 10:25:27 2013	(r42641)
+++ head/share/xml/advisories.xml	Tue Sep 10 10:31:23 2013	(r42642)
@@ -8,6 +8,26 @@
     <name>2013</name>
 
     <month>
+      <name>9</name>
+
+      <day>
+	<name>10</name>
+
+	<advisory>
+	  <name>FreeBSD-SA-13:13.nullfs</name>
+	</advisory>
+
+	<advisory>
+	  <name>FreeBSD-SA-13:12.ifioctl</name>
+	</advisory>
+
+	<advisory>
+	  <name>FreeBSD-SA-13:11.sendfile</name>
+	</advisory>
+      </day>
+    </month>
+
+    <month>
       <name>8</name>
 
       <day>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309101031.r8AAVN1R013527>