在此博文中,我們將解釋什么是路由泄漏,Cloudflare路由泄漏檢測的工作原理以及我們?yōu)楸Wo(hù)Internet免受路由泄漏所做的工作。
什么是路由泄漏,為什么我要關(guān)心?
當(dāng)Internet上的某個(gè)網(wǎng)絡(luò)告訴世界其他地方通過該網(wǎng)絡(luò)路由流量時(shí),則該流量不應(yīng)該正常到達(dá)該位置,就會(huì)發(fā)生路由泄漏。一個(gè)很好的例子及其帶來的影響是2019年6月的一次事件,賓夕法尼亞州的一家小型ISP開始宣傳部分Internet的路由,包括Cloudflare,Amazon和Linode。發(fā)往這些網(wǎng)絡(luò)的大部分流量都錯(cuò)誤地路由到了網(wǎng)絡(luò),從而泄漏了Cloudflare,Amazon和Linode的前綴,并給最終用戶造成了擁塞和無法訪問的網(wǎng)絡(luò)錯(cuò)誤。路由泄漏往往是由于對等會(huì)話或客戶路由器配置錯(cuò)誤,客戶或第三方路由器中的軟件錯(cuò)誤,中間人攻擊或惡意的客戶或第三方造成的。
一些路由泄漏是無害的。但是某些路由泄漏可能是惡意的,并且可能對安全產(chǎn)生非常實(shí)際的影響。攻擊者可能出于特定目的而通告特定的路由,目的是將用戶引導(dǎo)到他們的網(wǎng)絡(luò)以執(zhí)行諸如竊取加密貨幣和其他重要數(shù)據(jù)之類的事情,或者嘗試發(fā)行可用于模擬域的SSL / TLS證書。通過發(fā)布更具體的路由,攻擊者可以誘使您訪問您不想要的網(wǎng)站,如果它看起來與您期望的網(wǎng)站完全一樣,您可能會(huì)無意間輸入個(gè)人數(shù)據(jù),并有遭受攻擊的危險(xiǎn)。這是代表流量的圖,沒有路由泄漏:
路由泄漏后的流量:
因此,除了由于大量Internet流量正在通過無法處理的路徑而使用戶感到不滿之外,路由泄漏還可能帶來非常實(shí)際的數(shù)據(jù)泄漏隱患。
Cloudflare的路由泄漏檢測可讓您在路由泄漏時(shí)迅速得到通知,以便您知道何時(shí)可能發(fā)生攻擊。
Cloudflare路由泄漏檢測如何保護(hù)我的網(wǎng)絡(luò)?
如何配置路由泄漏檢測
為了配置路由泄漏檢測,您必須是具有“自帶IP”(BYOIP)地址的Cloudflare客戶,其中包括Magic Transit(L3),Spectrum(L4)和WAF(L7)客戶。只有Cloudflare通告的前綴才有資格進(jìn)行路由泄漏檢測。
可以通過在帳戶的“通知”選項(xiàng)卡中設(shè)置一條消息來配置路由泄漏檢測。
然后,Cloudflare將開始監(jiān)視您所有的內(nèi)置前綴中是否存在泄漏和劫持,并在它們通過電子郵件或?qū)iT用于呼叫工具(如PagerDuty)發(fā)生時(shí)向您發(fā)送警報(bào)。
Cloudflare的警報(bào)通知系統(tǒng)支持webhook,電子郵件和PagerDuty,因此您的團(tuán)隊(duì)可以通過網(wǎng)絡(luò)路由的變化隨時(shí)了解所需介質(zhì)的最新信息,以便他們可以響應(yīng)并在必要時(shí)采取糾正措施。
攻擊場景示例
惡意方試圖使用路由來獲取對客戶數(shù)據(jù)的訪問權(quán),便開始為我們的Magic Transit客戶之一提供車載前綴的子網(wǎng)。如果沒有找到并迅速糾正這種攻擊,可能會(huì)對客戶造成嚴(yán)重影響。當(dāng)攻擊者在客戶不知情的情況下開始通告前綴時(shí),BGP更新和路由更改會(huì)在全局路由表中快速開始發(fā)生-通常在60秒之內(nèi)。
讓我們逐步介紹客戶如何部署路由泄漏檢測??蛻鬉cme Corp.擁有IP前綴203.0.113.0/24。Acme已將203.0.113.0/24加入Cloudflare,Cloudflare告訴Internet的其余部分,可以通過Cloudflare的網(wǎng)絡(luò)訪問此前綴。
一旦Acme啟用了路由泄漏檢測,Cloudflare就會(huì)持續(xù)監(jiān)視Internet上203.0.113.0/24的路由信息。我們的目標(biāo)是在Internet上傳播錯(cuò)誤的路由信息后的五分鐘內(nèi)檢測泄漏。
讓我們回到攻擊場景。試圖攻擊Acme網(wǎng)絡(luò)的惡意方劫持了203.0.113.0/24的廣告,將合法用戶從預(yù)期的網(wǎng)絡(luò)路徑轉(zhuǎn)移到Acme(通過Cloudflare的網(wǎng)絡(luò)),然后轉(zhuǎn)移到旨在從不知情的用戶那里捕獲信息的Acme的網(wǎng)絡(luò)傳真中。
由于Acme啟用了路由泄漏檢測,因此警報(bào)將發(fā)送給Acme的管理員。
該警報(bào)包括所有看到由潛在惡意方發(fā)布的前綴的ASN。Acme能夠警告其用戶,他們可能面臨數(shù)據(jù)泄露攻擊的風(fēng)險(xiǎn),因此應(yīng)警惕可疑行為。
Acme還能夠快速聯(lián)系警報(bào)中列出的服務(wù)提供商,以停止遵守較小的路線。當(dāng)前,減輕路線泄漏的過程是高度手動(dòng)的過程,要求使用公開在公共數(shù)據(jù)庫中的聯(lián)系信息直接聯(lián)系服務(wù)提供商。將來,我們計(jì)劃構(gòu)建功能來自動(dòng)執(zhí)行此擴(kuò)展和緩解流程,以進(jìn)一步縮短緩解可能影響客戶的路由泄漏事件的時(shí)間。
Cloudflare如何檢測路由泄漏?
Cloudflare使用多種路由數(shù)據(jù)源來創(chuàng)建Internet如何看待通往BYOIP客戶的路由的綜合信息。然后,Cloudflare監(jiān)視這些視圖以跟蹤Internet上發(fā)生的任何突然更改。如果我們可以將這些更改與我們所采取的行動(dòng)相關(guān)聯(lián),那么我們知道該更改是良性的,并且照常進(jìn)行。但是,如果我們沒有進(jìn)行任何更改,我們會(huì)迅速采取行動(dòng),告訴您您的路線和用戶可能處于危險(xiǎn)之中。
Cloudflare的外部攝取管道
Cloudflare的主要數(shù)據(jù)來源來自外部維護(hù)的存儲(chǔ)庫,例如RIPE的RIS提要,RouteViews和Caida的公共BMP提要。在推斷Internet狀態(tài)時(shí),盡可能使用Internet路由表的多個(gè)外部視圖非常重要。Cloudflare對這些源進(jìn)行API調(diào)用,以提取數(shù)據(jù)并分析BGP路由中的更改。這些提要使我們能夠提取整個(gè)Internet的路由數(shù)據(jù)。Cloudflare將所有這些過濾為您先前已加入Cloudflare的前綴。
提取并過濾此數(shù)據(jù)后,Cloudflare將使用指示可能發(fā)生的劫持的指標(biāo)開始對全局路由表進(jìn)行交叉引用更新,例如可以直接看到您的路由的ASN數(shù)量,短時(shí)間內(nèi)發(fā)生的BGP更新數(shù)量,以及要通告多少個(gè)子網(wǎng)。如果直接看到您的路由的ASN數(shù)量或更新數(shù)量發(fā)生了巨大變化,則可能意味著您的前綴正在泄漏。如果您要發(fā)布的前綴的子網(wǎng)在全局路由表中發(fā)生了翻天覆地的變化,則很可能是您的前綴泄漏到了某個(gè)地方。
今天,Cloudflare已經(jīng)在我們自己的前綴上配置了此功能。這是當(dāng)我們的系統(tǒng)確定有問題時(shí)我們看到的示例:
Cloudflare擁有前綴范圍2606:4700:50 :: / 44,因?yàn)樗俏覀兙W(wǎng)站上此處列出的范圍之一的子網(wǎng)。在一個(gè)小時(shí)的時(shí)間內(nèi),我們注意到有人試圖將該范圍內(nèi)的子網(wǎng)發(fā)布給其他38個(gè)網(wǎng)絡(luò)。幸運(yùn)的是,由于我們已經(jīng)部署了RPKI,所以我們知道大多數(shù)網(wǎng)絡(luò)會(huì)拒絕而不是兌現(xiàn)攻擊者的這些路由通告。
將來如何防止路由泄漏?
防止路由泄漏的最佳方法是在網(wǎng)絡(luò)中部署RPKI,并敦促Internet提供商也這樣做。RPKI允許您和您的提供商對在Internet上發(fā)布的路由進(jìn)行簽名,以便其他任何人都不能竊取它們。如果有人在宣傳您的RPKI路由,則任何支持RPKI的提供商都不會(huì)將這些路由轉(zhuǎn)發(fā)給其他客戶,從而確保嘗試泄漏的位置盡可能靠近攻擊者。
僅在過去的三個(gè)月中,Cloudflare對RPKI的持續(xù)倡導(dǎo)就取得了成果。諸如Amazon,Google,Telstra,Cogent甚至Netflix之類的提供商已開始支持RPKI,并且正在過濾和刪除無效前綴。實(shí)際上,現(xiàn)在超過50%的頂級互聯(lián)網(wǎng)提供商以某種方式支持RPKI:
Cloudflare的路由泄漏檢測與更多實(shí)施RPKI的提供商相結(jié)合,有助于確保數(shù)據(jù)丟失和路由泄漏造成的停機(jī)時(shí)間已成為過去。