summaryrefslogtreecommitdiff
path: root/sys/net
diff options
context:
space:
mode:
authorFlorian Obser <florian@cvs.openbsd.org>2019-08-21 15:32:19 +0000
committerFlorian Obser <florian@cvs.openbsd.org>2019-08-21 15:32:19 +0000
commit4f74f46798e48f16726d9230265d67293e730884 (patch)
treef19c406f7482fd420f854dbe3d629ea932105a6f /sys/net
parent6d4e88aea540b4a0a08d29e59e8e14ba092b9201 (diff)
Remove support for semantically opace interface identifiers (RFC 7217)
for IPv6 link local addresses. Some hosting and VM providers route customer IPv6 prefixes to link local addresses derived from ethernet MAC addresses (RFC 2464). This leads to hard to debug IPv6 connectivity problems and is probably not worth the effort. RFC 7721 lists 4 weaknesses: 3.1. Correlation of Activities over Time & 3.2. Location Tracking These are still possible with RFC 7217 addresses for an adversary connected to the same layer 2 network (think conference wifi). Since the link local prefix stays the same (fe80::/64) the link local addresses do not change between different networks. An adversary on the same layer 2 network can probably track ethernet MAC addresses via different means, too. 3.3. Address Scanning & 3.4. Device-Specific Vulnerability Exploitation These now become possible, however, as noted above a layer 2 adversary was probably able to do this via different means. People concerned with these weaknesses are advised to use ifconfig lladdr random. OK benno input & OK kn
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/if.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/sys/net/if.c b/sys/net/if.c
index 053fef352ff..17397b68831 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if.c,v 1.587 2019/08/06 22:57:54 bluhm Exp $ */
+/* $OpenBSD: if.c,v 1.588 2019/08/21 15:32:18 florian Exp $ */
/* $NetBSD: if.c,v 1.35 1996/05/07 05:26:04 thorpej Exp $ */
/*
@@ -1972,16 +1972,12 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, struct proc *p)
}
if (ISSET(ifr->ifr_flags, IFXF_INET6_NOSOII) &&
- !ISSET(ifp->if_xflags, IFXF_INET6_NOSOII)) {
+ !ISSET(ifp->if_xflags, IFXF_INET6_NOSOII))
ifp->if_xflags |= IFXF_INET6_NOSOII;
- in6_soiiupdate(ifp);
- }
if (!ISSET(ifr->ifr_flags, IFXF_INET6_NOSOII) &&
- ISSET(ifp->if_xflags, IFXF_INET6_NOSOII)) {
+ ISSET(ifp->if_xflags, IFXF_INET6_NOSOII))
ifp->if_xflags &= ~IFXF_INET6_NOSOII;
- in6_soiiupdate(ifp);
- }
#endif /* INET6 */