2022-04-25

BGP可能有什麼資安風險?可以怎麼避免呢?

BGP可能有什麼資安風險?可以怎麼避免呢?
BGP是當代網路的支柱,將全球數百萬個電腦網路連結成我們使用的網際網路,若BGP受攻擊或停止運作時,可能招致嚴重後果,網路會陷入中斷或癱瘓,甚至進一步使網路服務供應商無法使用網路,將影響數百萬家企業及用戶。

前文提到2021年的Facebook大當機就是一個非常明確的例子,試想光是一個BGP的癱瘓就可能嚴重影響全球數億人口的生活,在萬物皆聯網的現代,BGP這類基礎網絡建設更應該是我們關注的重點。

BGP有哪些資安風險?
前面有提到,網際網路是以各個AS組成的,這些系統之間以BGP協定來交換路由資訊,因此這些自治系統都會知道哪個封包往哪去,往哪走是最好的。不過BGP協定本身並沒有考慮到「安全」,AS之間的互相交換資訊,除了可以隨時更新資訊,當然也可能「傳錯資訊」。

  1. BGP部分挾持
    一個AS擅自宣告自己持有某個網段,但這網段可能同時是別人持有的,就有可能造成複數的AS宣告擁有同一個網段,區間也相同。在這種狀況下,由於數據封包會依照「最短路徑」或是「最好路徑」來傳遞封包,讓有心人士可能挾持到部分的封包。
  2. BGP完全挾持
    一個AS宣告網段時,宣告了比原本更大的區間,稱為為完全挾持,與上述的部分挾持狀況類似,一樣會影響資料的傳遞。有可能是一個封包跑到最後找不到目的地,有可能是封包遭到有心人士攔截。理論上,網際網路服務供應商等單位都會針對BGP宣告做基本檢查,限定只能宣告一些正常的網段,不過實際上還是有可能會出現疏漏。
  3. BGP洩漏
    BGP洩漏與BGP挾持非常類似,不過通常是「無心的錯誤」。較常會發生的狀況是有一個AS實際上和兩個網際網路服務供應商對接,但這個AS只是為了其他因素,像是人員操作失誤等原因才造成跟兩邊都有對接,他本身並不想要幫忙在兩間供應商之間傳資料。

雖然造成的結果類似,但就本質上而言BGP洩漏(BGP Leak)比較像是「不小心接錯線」,而BGP挾持(BGP hijacking)則比較像是把線惡意的接到指定的主機,企圖攔截資料等。


BGP挾持可能受影響的服務:
加密貨幣

2018年4月24日,以太幣加密錢包服務MyEtherWallet遭駭客將流量導至偽造的俄國網站,誘導MyEtherWallet用戶輸入憑證,並成功清空受害用戶的帳號,盜走了價值17萬美元的以太幣,初期外界以為這只是尋常的DNS挾持(DNS hijacking),但資安專家卻發現它卻是個攻擊範圍與規模都更大的BGP挾持(BGP hijacking)攻擊。

根據資安專家的推測,駭客可能是藉由挾持BGP把Amazon Route 53服務的流量導至駭客所操縱的DNS伺服器,再將造訪MyEtherWallet的用戶導向偽造的網站。


HTTPS
我們在之前的文章有提過,要使一個網域的數位憑證有效,必須要找憑證授權中心CA來幫我們認證與簽發。而數位認證的等級有分為三種,分別是 DV(網域認證)、OV(組織驗證,需電話審核)和 EV(高階驗證,比OV更加嚴謹)。

由於OV和EV的認證更加嚴謹,較不易受BGP挾持影響,所以接下來討論的案例就以DV為主,DV等級的憑證簽發程序大致如下:

 
  1. 發出「憑證簽署申請」
  2. 授權中心確認用戶擁有該網域
  3. 確認付款後,供應商或是代理商就會替用戶簽發憑證,憑證就可以使用了。

當我們回過頭來用BGP挾持的角度來思考時,就會發現BGP挾持需要把他人的網段給覆蓋掉,並且把流量導回到自己的網段。依據認證方式的不同,就有各種不同的手法:
 
  1. 直接將受害者網域的BGP給覆蓋,並自己架設一個新的網站,然後再透過這個網站購買憑證。
  2. 把受害者網域中權威DNS的BGP覆蓋,自行架設一個DNS、自己寫DNS TXT。
  3. 把受害者網域的WHOIS伺服器的BGP覆蓋,自己架設一個新的WHOIS、自己寫內容。

基本上這些手法都很容易讓授權中心認為你真的有那個網域,當你得到這份數位憑證時你,就可以把BGP挾持先撤掉,並利用這份憑證假裝自己是中間人了;反過來說,有心人士也可以把授權中心的BGP蓋掉,讓人向自己申請憑證時騙取財物,但因為假貨是不會有私鑰的,所以沒辦法真的簽發數位憑證。


可以如何防範BGP攻擊?
BGP驗證機制

首先要提的是BGP連線時無法驗證對方身份的問題,其實在BGP提出後不久,就有人想到這個問題了,解決方法其實很簡單,就是雙方先約定好一組密碼,到時候傳送就想辦法比對這組密碼是不是相同的就行,對照到之前DNSSEC,在BGP框架下的就被稱為BGPSEC。