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