什麼是 BGP 劫持?

BGP 劫持是對網際網路流量的惡意重新路由,其利用了網際網路路由通訊協定 BGP 的信任特性。

學習目標

閱讀本文後,您將能夠:

  • 定義 BGP 劫持
  • 討論 BGP 劫持的一些真實範例
  • 概述一些防止 BGP 劫持的對策

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是 BGP 劫持?

BGP 劫持是指攻擊者惡意重新路由網際網路流量。攻擊者虛假地宣稱自己擁有 IP 位址群組(稱為 IP 首碼),然後實際上他們並不擁有、控製或路由到這些 IP 位址群組,以此方式來實現此目的。BGP 劫持就好比有人改變一段高速公路上的所有標誌,將汽車重新引導到錯誤的出口。

BGP 劫持重新路由

因為 BGP 建立在互連網路會真實表述它們擁有的 IP 位址這一假設之上,所以 BGP 劫持幾乎是無法停止的——想像一下,如果沒人監視高速公路標誌,只有觀察到許多汽車最終進入錯誤區域時才能判斷它們被惡意變更。但是,要發生劫持,攻擊者需要控製或入侵在一個自發系統 (AS) 與另一個自發系統之間橋接的、已啟用 BGP 的路由器,因此,並非任何人都可以執行 BGP 劫持。

什麼是 BGP?

BGP 是邊界閘道通訊協定的縮寫,是網際網路的路由通訊協定。換句話說,它提供方向,以便流量盡可能有效地從一個 IP 位址傳播到另一個 IP 位址。IP 位址是給定網站的實際網址。當使用者輸入網站名稱、而瀏覽器找到並載入該網站時,請求和回應會在使用者的 IP 位址和網站的 IP 位址之間來回傳遞。DNS (Domain Name System) 伺服器提供 IP 位址,但是 BGP 提供到達該 IP 位址的最有效方法。大體而言,如果 DNS 是網際網路的通訊簿,BGP 就是網際網路的路線圖。

每個 BGP 路由器都儲存一個含有自發系統之間最佳路線的路由表。隨著每個 AS*(通常是網際網路服務提供者 (ISP))廣播它們擁有的新 IP 首碼,這些路由表幾乎不斷更新。BGP 始終偏愛從一個 AS 到另一個 AS 的最短、最直接的路徑,以便通過網路中盡可能少的躍點到達各個 IP 位址。詳細瞭解 BaaS >>

*自發系統 (AS) 的定義

自發系統是由單個組織管理的大型網路或網路群組。一個 AS 可能有許多子網路,但是全部共用相同的路由原則。通常,AS 是 ISP 或者是自有網路的非常大型的組織,並且有從該網路到 ISP 的多個上游連線(這稱為「多重主目錄網路」)。每個 AS 都指派有其自己的自治號碼 (ASN),以輕鬆識別它們。詳細瞭解自發系統 >>

為什麼 BGP 如此重要?

BGP 使網際網路的大規模發展成為可能。網際網路由多個相互連接的大型網路組成。由於它是分散的,所以沒有治理機構或「交通」警察為資料封包到達其預期 IP 位址目的地的最佳路線製定方案。BGP 就承擔了這個角色。如果不使用 BGP,則由於路由效率低下,Web 流量可能會需要大量時間才能到達目的地,或者根本無法到達預期的目的地。

BGP 是如何被劫持的?

當 AS 宣告一個其實際上未控制的 IP 首碼的路由時,該宣告(如果未被篩選掉)可以傳播並新增到網際網路上 BGP 路由器的路由表中。從那時起,這些 IP 的流量將被路由到該 AS,直到有人注意到並糾正該路由。這就像是宣稱領土擁有權,而又沒有地方政府來核實和執行財產契約。

BGP 始終傾向於使用最短、最具體的路徑到達所需 IP 位址。為了使 BGP 劫持成功,路由通告必須:

1) 透過宣告比以前其他 AS 更小的 IP 位址範圍來提供更具體的路線。

2) 提供一條通往某些 IP 位址區塊的較短路徑。此外,不是任何人都可以宣告前往到較大網際網路的 BGP 路由。要發生 BGP 劫持,必須由 AS 的營運者或入侵 AS 的威脅行為者發出通告(第二種情況更為罕見)。

BGP 劫持流程

大型網路或網路群組(其中許多是 ISP)的營運者會明目張膽地進行這種惡意活動,這可能會令人感到驚訝。但是考慮到從部分計數來看,目前全球範圍內有 80,000 多個自發系統,其中一些不值得信任也不足為奇。此外,BGP 劫持並不總是很明顯或很容易偵測到。不良行為者可能將他們的活動掩藏在其他 AS 之後,或者可能宣告不太可能被注意到的未使用 IP 首碼區塊,以便避開偵測。

BGP 被劫持時會發生什麼?

BGP 被劫持後,網際網路流量可能走上錯路、被監控或攔截、進入「黑洞」,或作為中間人攻擊的一部分被導向到虛假網站。此外,垃圾郵件發信者可以使用 BGP 劫持或發生了 BGP 劫持的 AS 的網路,偽造合法 IP 來實現傳送垃圾郵件的目的。從使用者的角度來看,頁面載入時間將增加,因為請求和回應不會沿著最有效的網路路由傳遞,甚至可能不必要地遍歷整個世界。

在最佳情況下,流量只是會經過不必要的長路徑,導致增加延遲。在最壞的情況下,攻擊者可能會進行中間人攻擊,或將使用者重新導向到虛假網站以竊取認證。

現實世界中的 BGP 劫持

現實世界中有許多故意進行 BGP 劫持的範例。例如,在 2018 年 4 月,一家俄羅斯提供者宣告了實際上屬於 Route53 Amazon DNS 伺服器的多個 IP 首碼(IP 位址群組)。簡而言之,該宣告的最終結果是試圖登入加密貨幣網站的使用者被重新導向到由駭客控制的虛假網站。駭客因此竊取到大約價值 152,000 美元的加密貨幣。(更具體地說:透過 BGP 劫持,駭客劫持了 Amazon DNS 查詢,因此針對 myetherwallet.com 的 DNS 查詢轉到了他們控制的伺服器,傳回了錯誤的 IP 位址,並將 HTTP 請求導向到了虛假網站。請在我們的部落格貼文「BGP 洩漏和加密貨幣」中瞭解更多資訊。)

無意造成的 BGP 劫持情況也很普遍,這可能對整個全球網際網路產生負面影響。2008 年,巴基斯坦政府擁有的 Pakistan Telecom 試圖透過更新網站的 BGP 路由在巴基斯坦境內審查 Youtube。在看似偶然的情況下,宣告的新路由通往 Pakistan Telecom 的上游提供者,並從那裡廣播到整個網際網路。突然,所有針對 Youtube 的 Web 請求都導向到了 Pakistan Telecom,導致幾乎整個網際網路都有數個小時無法存取該網站,使 ISP 不堪重負。

使用者和網路如何保護自己免受 BGP 劫持?

除了持續監視網際網路流量的路由方式外,使用者和網路幾乎無法阻止 BGP 劫持。

IP 首碼篩選

大多數網路僅應在必要時接受 IP 首碼聲明,並且僅應向某些網路而不是整個網際網路聲明其 IP 首碼。這樣做有助於防止意外的路由劫持,並且可以防止 AS 接受虛假的 IP 首碼聲明。但是在實際上這很難執行。

BGP 劫持偵測

延遲增加、網路效能下降和網際網路流量導向錯誤都是 BGP 劫持的可能跡象。許多較大的網路會監視 BGP 更新,以確保其用戶端不會遇到延遲問題,實際上,一些安全研究人員確實在監視網際網路流量並發布其研究結果。

讓 BGP 更安全

BGP 旨在使網際網路正常運作,而且確實也做到了這一點。但是 BGP 在設計時並未考慮安全性。目前正在開發用於整個網際網路的更安全的路由解決方案(例如 BGPsec),但是尚未採用。暫時而言,BGP 天然地易受攻擊,並且將繼續如此。

Cloudflare 如何利用 BGP?

Cloudflare 在全球 320 個城市擁有資料中心,所有資料中心都廣播一個 ASN (AS13335) 和相同的 IP 首碼。這樣可以最大程度地減少為了達到 Cloudflare 託管的 IP 位址而需要穿越的網路流量。因此,幾乎在世界任何地方都可以找到通往 Cloudflare 擁有的 IP 位址的有效路徑。對於日本的 AS,通向 Cloudflare IP 的最短路徑可能只需跨越幾個網路躍點,最終到達位於日本本土的 Cloudflare 資料中心。在加利福尼亞州,流量可以去往位於同一 Cloudflare AS 中的相同 IP 位址,並最終透過加利福尼亞州的資料中心到達該位址。