summaryrefslogtreecommitdiffstats
path: root/sys/netinet6
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2013-09-10 10:05:59 +0000
committerdes <des@FreeBSD.org>2013-09-10 10:05:59 +0000
commit21e6fd796b765b83afb4869cb49eb219ade8c54d (patch)
tree9f08d8dd919edd55c79e7cca2864adf598448f6e /sys/netinet6
parent96543c86c6fa7e82c3f4df84a1f9ad5a8a844674 (diff)
downloadFreeBSD-src-21e6fd796b765b83afb4869cb49eb219ade8c54d.zip
FreeBSD-src-21e6fd796b765b83afb4869cb49eb219ade8c54d.tar.gz
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: re
Diffstat (limited to 'sys/netinet6')
-rw-r--r--sys/netinet6/in6.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index 9d99930..e5c62df 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -431,6 +431,18 @@ in6_control(struct socket *so, u_long cmd, caddr_t data,
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;
OpenPOWER on IntegriCloud