diff options
author | Florian Obser <florian@cvs.openbsd.org> | 2019-08-21 15:32:19 +0000 |
---|---|---|
committer | Florian Obser <florian@cvs.openbsd.org> | 2019-08-21 15:32:19 +0000 |
commit | 4f74f46798e48f16726d9230265d67293e730884 (patch) | |
tree | f19c406f7482fd420f854dbe3d629ea932105a6f /sys/net | |
parent | 6d4e88aea540b4a0a08d29e59e8e14ba092b9201 (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.c | 10 |
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 */ |