在2008年的DefCon國際黑客大會(huì)上。安全研究員安東·卡佩拉山(5Nines數(shù)據(jù)的數(shù)據(jù)中心和網(wǎng)絡(luò)主管)和亞歷克斯·皮里蘇瓦(Pilosoft的首席執(zhí)行官)對經(jīng)過修改的新版本邊界網(wǎng)關(guān)協(xié)議(BGP)進(jìn)行了說明。
邊界網(wǎng)關(guān)協(xié)議的工作原理
邊界網(wǎng)關(guān)協(xié)議運(yùn)行在互聯(lián)網(wǎng)服務(wù)提供商的路由器上,屬于一種“幕后”協(xié)議。我們都知道互聯(lián)網(wǎng)是一個(gè)龐大的互聯(lián)網(wǎng)絡(luò),邊界網(wǎng)關(guān)協(xié)議的路由就是建立聯(lián)系的橋梁。它可以讓路由器知道如何以及向哪里傳輸互聯(lián)網(wǎng)流量。相鄰的路由器在邊界網(wǎng)關(guān)協(xié)議被稱為鄰居。邊界網(wǎng)關(guān)協(xié)議的鄰居之間采用的是活躍連接,以便進(jìn)行信息交換。一旦邊界網(wǎng)關(guān)協(xié)議的路由表發(fā)生了變換。路由器會(huì)將變動(dòng)信息自動(dòng)發(fā)送給所有的鄰居。在邊界網(wǎng)關(guān)協(xié)議中,由于互聯(lián)網(wǎng)是一個(gè)非常有彈性的網(wǎng)狀網(wǎng)。所以鄰居的概念是很大的一個(gè)部分。
由于互聯(lián)網(wǎng)是一個(gè)網(wǎng)狀網(wǎng)絡(luò)的結(jié)果。所以每條路線總是會(huì)有多種選擇。因此,對于路由器來說,它們是怎么挑選鄰居的呢?第一,邊界網(wǎng)關(guān)協(xié)議的每個(gè)條目部包含了幾個(gè)參數(shù)。用來對不同性質(zhì)的路線進(jìn)行分析。下一步。一個(gè)算法將利用這些參數(shù)選擇出最佳路線。其中的一些參數(shù)是weight、local preference、origin和AS_path(請記住這一個(gè))。這些并不是全部,邊界網(wǎng)關(guān)協(xié)議會(huì)檢查更多的參數(shù)。但這個(gè)是最重要的。并且也是最根本的設(shè)計(jì)缺陷所在。導(dǎo)致竊聽行為成為可能。
為了找到最佳路線,邊界網(wǎng)關(guān)協(xié)議會(huì)對每個(gè)網(wǎng)絡(luò)的間隔進(jìn)行考慮。舉例來說,—個(gè)路由器正在尋找網(wǎng)絡(luò)地址10.10.10.25。從邊界網(wǎng)關(guān)協(xié)議的路由表中,它可以找到進(jìn)入10.xxx.xxx.xxx網(wǎng)絡(luò)的路線。不過,它還發(fā)現(xiàn)了另一條可以進(jìn)入10.10.xxx.xxx網(wǎng)絡(luò)的路線。因?yàn)檫M(jìn)入10.10.xxx.xxx網(wǎng)絡(luò)是一條比較好的路線。路由器將選擇它,將數(shù)據(jù)包發(fā)送到10.10.xxx.xxx網(wǎng)絡(luò)的路由器上。每個(gè)路由器都將重復(fù)上面的步驟,直至互聯(lián)網(wǎng)流量到達(dá)預(yù)定的目的地。
邊界網(wǎng)關(guān)協(xié)議的設(shè)計(jì)缺陷
現(xiàn)在我們對邊界網(wǎng)關(guān)協(xié)議的工作模式有了清晰的了解,下面我就說明一下為什么邊界網(wǎng)關(guān)協(xié)議的設(shè)計(jì)缺陷會(huì)導(dǎo)致攻擊者的重定向和竊聽成為可能?;旧?,由于邊界網(wǎng)關(guān)協(xié)議中的路由條目的鄰居的數(shù)量是非常多的。因此,路由器只是假設(shè)邊界網(wǎng)關(guān)協(xié)議的路由條且是正確的,并通過這條路徑傳輸數(shù)據(jù)包。
但攻擊者會(huì)肆無忌憚地利用這種信任,以便進(jìn)行邊界網(wǎng)關(guān)協(xié)議的重定向攻擊。竊聽者所要做的僅僅是比邊界網(wǎng)關(guān)協(xié)議官方提供的鄰居細(xì)化的網(wǎng)絡(luò)地址(例如使用10.10.25.xxx之類更接近真實(shí)的網(wǎng)絡(luò)lP地址)。在偽裝的邊界網(wǎng)關(guān)協(xié)議數(shù)據(jù)包傳播后,攻擊者的網(wǎng)絡(luò)不用很長的時(shí)間就可以得到傳輸?shù)臄?shù)據(jù)流了。
YouTube的中斷事件
邊界網(wǎng)關(guān)協(xié)議的重定向攻擊并不是什么新出現(xiàn)的事件,實(shí)際上你們中的許多人也許還記得發(fā)生在過去幾個(gè)月的時(shí)間里,YouTube的中斷事件。這起事件就是由于在巴基斯坦的一家互聯(lián)網(wǎng)服務(wù)提供商偶然誤操作的一次邊界網(wǎng)關(guān)協(xié)議重定向造成的。事件的具體細(xì)節(jié)和互動(dòng)式顯示過程可以在RIPE NCC(負(fù)責(zé)整個(gè)歐洲地區(qū)的IP地址資源分配與管理的組織)的網(wǎng)站上找到。
自治系統(tǒng)的路由器
如果已經(jīng)訪問了RIPE的網(wǎng)站,你就可以發(fā)現(xiàn)像ASl7557之類的略由器命名符。自治系統(tǒng)號碼(ASN)被分配到每個(gè)自治系統(tǒng)(AS)以便來進(jìn)行識(shí)別。簡單地說。每個(gè)自治系統(tǒng)是一個(gè)單獨(dú)實(shí)體,可以對路由信息控制進(jìn)行處理。該實(shí)體負(fù)責(zé)維護(hù)控制范圍內(nèi)所有采用邊界網(wǎng)關(guān)協(xié)議的路由器提供的服務(wù)。
兩次重定向
當(dāng)邊界網(wǎng)關(guān)協(xié)議的重定向發(fā)生時(shí),即使不是惡意的,造成的后果也是非常明顯的。為了對這種行為的后果進(jìn)行解釋。還以YouTube事件為例子。一旦巴基斯坦的互聯(lián)網(wǎng)服務(wù)提供商對邊界網(wǎng)關(guān)協(xié)議路由所做的改動(dòng)開始生效,YouTube的網(wǎng)站就無法進(jìn)入,并且會(huì)影響到所有國家的訪問。
卡佩拉山和皮里蘇瓦已經(jīng)找到一種方法??梢宰尰ヂ?lián)網(wǎng)用戶對重定向攻擊進(jìn)行確認(rèn)。他們創(chuàng)造性地增加了第二次調(diào)整,這樣就可以防止中間人類型(MitM)攻擊進(jìn)行的竊聽。專家們知道。這在理論上是可行的,但直到2008年的DefCon國際黑客大會(huì)之前,沒人能夠?qū)崿F(xiàn)這樣的效果。
通過增加第二次重定向,卡佩拉山和皮里蘇瓦給我留下了深刻的印象,因?yàn)檫@不是一個(gè)很直觀的過程。為了證明這一點(diǎn),我對確切發(fā)生的過程進(jìn)行一下概略的說明。首先,攻擊者的路由器作為到達(dá)原始目的地網(wǎng)絡(luò)的最佳途徑是通過欺騙自身實(shí)現(xiàn)的。由于邊界網(wǎng)關(guān)協(xié)議的工作原理。我們知道現(xiàn)在錯(cuò)誤的路由信息已經(jīng)傳播到攻擊者的路由器所有邊界網(wǎng)關(guān)協(xié)議的鄰居上。由于所有攻擊者的路由器的邊界網(wǎng)關(guān)協(xié)議的鄰居都認(rèn)為它是最佳途徑,因此,攻擊者的路由器的所有傳輸都會(huì)通過邊界網(wǎng)關(guān)協(xié)議的鄰居送回鄰居。現(xiàn)在,問題就出現(xiàn)了。不要著急,下面就是最酷的部分。
AS path prepending
卡佩拉山和皮里蘇瓦通過利用AS path prepending繞過了這個(gè)問題。在前面,我們說過路徑選擇采用了AS_path的屬性。在一次回旋操作中。將AS_path的屬性調(diào)整為自治系統(tǒng)的路由器拒絕來自攻擊者的路由器的欺騙性邊界網(wǎng)關(guān)協(xié)議條目。攻擊者將轉(zhuǎn)發(fā)網(wǎng)絡(luò)流量到具體的邊界網(wǎng)關(guān)協(xié)議鄰居。這樣的話,在數(shù)據(jù)到達(dá)目的地之前,采用邊界網(wǎng)關(guān)協(xié)議路由進(jìn)程的互聯(lián)網(wǎng)傳輸將保持正常。
這樣意味著什么?
確認(rèn)通過邊界網(wǎng)關(guān)協(xié)議進(jìn)行的竊聽是很困難的事情。路由追蹤可以用來分析,但很難確定是否存在異常行為。為了安全起見,我們必須考慮這是一個(gè)中間人類型的攻擊并使用相同的優(yōu)化技術(shù),也就是現(xiàn)在經(jīng)常說的虛擬專用網(wǎng)。
幾種臨時(shí)的解決方案正在試圖消除設(shè)計(jì)中存在的缺陷。其中的一種解決方案是對邊界網(wǎng)關(guān)協(xié)議的鄰居進(jìn)行驗(yàn)證,但它將耗費(fèi)大量資源。并且只要有一家互聯(lián)網(wǎng)服務(wù)提供商拒絕使用,整個(gè)網(wǎng)絡(luò)就將崩潰。另一種解決方案是使用簽名的證書,對邊界網(wǎng)關(guān)協(xié)議的鄰居進(jìn)行驗(yàn)證。但這只適用于傳輸過程的第一步。
一種解決方案被稱為安全邊界網(wǎng)關(guān)協(xié)議(S-BGP)。下面是他們的網(wǎng)站上對其工作方式的介紹:
“采用安全邊界網(wǎng)關(guān)協(xié)議的網(wǎng)絡(luò)環(huán)境包含了三種安全機(jī)制:首先是采用了公鑰基礎(chǔ)設(shè)施(PKl)的網(wǎng)絡(luò)地址認(rèn)證機(jī)制,并且擁有自治系統(tǒng)(AS)號碼,一個(gè)自治系統(tǒng)的身份,并且采用邊界網(wǎng)關(guān)協(xié)議的路由器的身份驗(yàn)證和授權(quán)系統(tǒng)類似自治系統(tǒng)。
其次,一個(gè)新的、可選的傳遞路徑用的邊界網(wǎng)關(guān)協(xié)議屬性可以用來進(jìn)行數(shù)字簽名,以便進(jìn)行邊界網(wǎng)關(guān)協(xié)議的路由信息更新。這些證書的簽名包含了地址的前綴和路徑等信息以便進(jìn)行驗(yàn)證。
第三,互聯(lián)網(wǎng)協(xié)議安全性系列(IPSec)可以為數(shù)據(jù)和部分序列的完整性提供保障,并且保證采用邊界網(wǎng)關(guān)協(xié)議的路由器可以對來自其它部分的流量進(jìn)行驗(yàn)證。”
安全邊界網(wǎng)關(guān)協(xié)議聽起來非常強(qiáng)大,但問題是現(xiàn)有的大多數(shù)路由器沒有足夠的內(nèi)存或處理能力來處理額外的工作量。
最后的思考
由于時(shí)代的變化,原來的網(wǎng)絡(luò)開發(fā)者希望的信任機(jī)制變得不可靠,安全方面的漏洞凸顯出來。不論是卡明斯基的錯(cuò)誤還是邊界網(wǎng)關(guān)協(xié)議導(dǎo)致的竊聽都是證明。我不能肯定未來會(huì)怎么變化,但仍然保持樂觀態(tài)度。
除此之外,由于費(fèi)用和開銷的問題。邊界網(wǎng)關(guān)協(xié)議導(dǎo)致的竊聽是很難修復(fù)的。我敢肯定。互聯(lián)網(wǎng)服務(wù)供應(yīng)商是不會(huì)主動(dòng)加入這個(gè)潮流的,除非用戶不斷地推動(dòng)。(cstyle)