IPv6路由發現協議的安全隱患
在IPv4下,網關地址往往需要自己手動設定。IPv6下由路由請求RS和路由宣告RA兩種ICMP6的報文共同構成了IPv6路由發現協議。該協議的作用一方面是為了幫助局域網內部的節點尋找網關或路由器,使該節點能夠與外網通信,另一方面,對于剛接入網絡的新IPv6節點,先根據網關或路由的信息設定自己的IPv6地址,才能和其他節點進行通信,兩種報文的格式。
IPv6路由發現協議的工作原理:
(1) 客戶端向所有路由器地址(FF02::2)發送路由請求消息RS或者路由器周期性地向所有節點(多播地址FF02::1)發送路由宣告消息RA。
RA報文的IP包源地址必須填寫本地鏈路地址,這是因為路由器往往有多塊網卡,如果填寫全局地址,接到宣告的節點不知道應該發給那個網卡,而利用本地鏈路地址與網卡Mac地址的一一對應性,能唯一的標識出為節點服務的網卡。IP包的目的地址分兩種,如果RA是路由定期廣播整個局域網的,就填廣播地址,如果是對于RS的應答,則填寫請求節點的地址。其他的諸如lifetime、reachable time以及options等都是一些設置參數,比如prefix(地址前綴)、優先級等,大部分對于本文意義不大,但是優先級的設置可以讓你在所有路由中,取得優勢地位。
(2) 客戶端根據RA消息配置地址前綴和路由信息。
路由請求RS報文比較簡單,IP包的目的地址當然要填寫廣播地址,而源地址填寫請求者的地址即可,options可以填寫請求者的Mac地址。
IPv6路由發現協議安全隱患分析
通過以上分析我們不難發現這個協議的漏洞。由于缺乏源地址認證,局域網內任意節點都都可以發送路由宣告消息RA,從而將自己偽裝成路由。對于動態獲取IPv6地址的節點,它是無法分辨哪個才是正確路由的。如果惡意的節點偽裝成路由,并且在RA中將路由的優先級設為最高,動態獲取IP的節點極有可能將數據包交由這個惡意節點轉發。
導致以上漏洞主要原因是缺乏認證機制。