编者按:IPv6自动配置地址越来越关注于IPv6寻址方式的安全性和保密性。IPv6自动配置地址有3个安全含义:它们缩小了攻击者发起地址扫描攻击的搜索范围,它们可以关联一个网络的节点活动,以及它们可以更轻松地跟踪主机。安全工程师和咨询师Fernando Gont介绍了一些抵制这些问题的方法,并且认为需要投入更多工作。
IPv6引入了两个不同的地址配置机制:无状态地址自动配置(SLAAC)和有状态第6版动态主机配置协议(DHCPv6)。在DHCPv6中,地址由一个DHCPv6服务器集中管理;因此,DHCPv6服务器可以应用许多地址分配策略(如连续地址和随机地址)。而SLAAC是一个集中分配地址的方法,每一个节点都可以基于本地策略自动配置IPv6寻址方式。
在SLAAC中,应用的具体策略取决于底层链路层技术。在以太网上,IETF标准规定IPv6地址由自动配置的前缀与嵌入底层链路地址的接口ID(IID)构成。具体来说,IID的步骤生成如下:
1.获取底层网络接口的以太网地址。
2. 反转以太网地址的IEEE组织唯一标识(OUI)的U/L位。
3. 在以太网地址的3个高位和3个低位之间插入值0xfffe。
然后,得到的64位将用于生成IPv6地址。
在创建IID之后,它们共享3个属性。第一,IID(至少在理论上)必须是全局唯一的,因为它们的来源以太网地址通常是唯一的。第二,它们遵循一定的模式,这些模式也源于底层以太网地址。例如,相同供应商制造的设备有相同的IID高5位:它们与IEEE OUI对应,另外2个字节保存0xfffe。第三,它们在一个或多个网络中保持不变,除非手动修改了底层以太网地址,或者更换了底层网络接口卡(NIC)。
传统SLAAC地址带来的问题
从底层以太网地址生成IID是一种生成全局唯一ID的好方法;这种方法也可以避免在网络中出现重复的IPv6地址。然而,安全社区很快发现,这种方法会对安全性和保密性产生负面影响。除此之外,这种方法也缩小了攻击执行IPv6地址扫描攻击的搜索范围。它还允许攻击者关联特定网络内和多个网络间的节点活动。
本文将介绍传统SLAAC地址对保密性的影响,特别是同一个网络内和多个网络之间的主机活动关联(主机跟踪)。
正如之前所提到的,在IPv6地址的IID中嵌入底层网卡MAC地址,将使该地址保持不变(除非更换NIC)。结果,它将成为攻击者跟踪网络中节点活动的手段。例如,假设有一个节点连接前缀为2001:db8:1::/64的网络,然后自动获得地址2001:db8:1::a00:27ff:fe89:7878。如果节点从网络断开,然后再重新连接网络,它就会自动获得相同的地址(同样,假定底层NIC未更换)。因此,攻击者可能将相同节点与IPv6地址2001:db8:1::a00:27ff:fe89:7878相关的所有网络活动连接在一起。这通常就称为一个网络中节点活动的关联。
利用“超级Cookie”实现主机跟踪
SLAAC IID不仅会在一个网络中保持不变,也会在多个网络中保持不变。这是因为,它们只依赖于底层NIC的MAC地址(这个地址是不会变化的)。因为这些接口标识通常也是全局唯一的(因为底层MAC地址通常是全局唯一的),因此就可以轻松关联节点在各个网络中的活动。例如,假设有一个节点连接一个前缀为2001:db8:1::/64的网络,然后自动获取地址2001:db8:1::a00:27ff:fe89:7878。这个节点先从网络断开,然后再连接到一个前缀为2001:db8:2::/64的网络,这时再自动获取到地址2001:db8:2::a00:27ff:fe89:7878。全局唯一且保持不变的接口ID a00:27ff:fe89:7878显然成为节点的标识,从而可以将节点在多个网络的活动关联在一起。这通常称为主机跟踪。