傳統SLAAC地址對IPv6尋址的安全影響
編者按: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顯然成為節點的標識,從而可以將節點在多個網絡的活動關聯在一起。這通常稱為主機跟蹤。