網路資安威脅
從使用者裝置攻擊 5G 基礎架構:5G 核心網路中的 ASN.1 漏洞
在本系列的第二篇,我們將檢視駭客如何發送偽裝成使用者流量的控制訊息來觸發漏洞,以便從使用者平面 (user plane) 跨越到控制平面 (control plane)。
在本系列的第一篇,我們探討了 GTP-U (GPRS 通道協定使用者平面) 通道如何遭使用者裝置利用,發送可導致封包處理核心當機的 GTP-U-in-GTP-U 巢狀封包。在本系列的第二篇,我們將檢視駭客如何發送偽裝成使用者流量的控制訊息來觸發漏洞,以便從使用者平面 (user plane) 跨越到控制平面 (control plane)。此外,我們也討論了攻擊的潛在衝擊,包括營運中斷 (造成財務與信譽損失),甚至可能癱瘓以 5G 技術建立的工業關鍵基礎架構。
5G 及 5G 專網
5G 是蜂巢式行動網路第五代無線技術的簡稱,延續了 1G、2G、3G 以及 4G 網路的發展進程。其吸引力不單只有在功能面,還有它可用來建立私有專屬蜂巢式行動網路。5G 的出現正好碰上各產業對私有專屬網路的需求不斷成長,而 5G 正好能提供其所需的關鍵要素:更多的頻譜選擇性、更強大的功能,以及更好的安全性。
私有專屬網路的日益普及,吸引了許多新的廠商為該網路的各個環節 (包括 5G 核心網路) 提供了各種解決方案。有別於那些已經成熟的廠商提供的是 (大致上) 已經成熟的蜂巢式技術 (Cellular Technology,簡稱 CT),這些新的廠商不是從無到有自行開發、就是採用開放原始碼解決方案。但很多時候,這些新式解決方案的成熟度與那些成熟廠商的解決方案顯然還是有一段差距。
5G 控制平面:N1/N2 介面
N2 介面是基地台 (gNodeB,也稱 gNB) 與 5G 核心網路之間用於交換控制訊息的介面。在 5G 核心網路中,與 N2 介面連接的元件是「存取與行動管理功能」(Access and Mobility Management Function,簡稱 AMF) 。
至於 N1 介面,則是將用戶設備 (UE) 連上 AMF 的一個透通介面,此處「透通」(transparent) 所指的意思是它並非直接連上 AMF,因為 N1 訊息是由 gNB 透過 N2 來傳送。
「次世代應用程式協定」(Next Generation Application Protocol,簡稱 NGAP) 是 N1 和 N2 介面所使用的一個上層通訊協定,定義在 3GPP TS 38.413 規格當中。在 N2 上,NGAP 是藉由「串流控制傳輸協定」(Stream Control Transmission Protocol/IP,簡稱 SCTP/IP) 來承載。NGAP 訊息是以「抽象語法統一表示法」(Abstract Syntax Notation One,簡稱 ASN.1) 來序列化及傳送。
ASN.1 支援多種編碼方式,例如:基本編碼規則 (Basic Encoding Rules,簡稱 BER)、封包編碼規則 (Packet Encoding Rules,簡稱 PER) 以及對齊封包編碼規則 (Aligned PER,簡稱APER)。BER 採用了「類型-長度-數值」(TLV) 的格式。
![圖 1:BER 編碼。](/content/dam/trendmicro/global/en/research/23/j/asn1-vulnerabilities-in-5g-cores/5G-2-1.png)
未指定長度的資料類型會有一個「內容結束」(End-of-Content) 八位元組 (octet) 來標記結束點。
PER 也採用了類似的格式,但有別於 BER,當資料類型已知或固定時,PER 就不會傳送類型或長度。至於 APER 則是一種資料對齊到八位元組邊界的 PER 格式,可加快接收節點的處理速度。最後,NGAP 採用的是 APER。
表面上,這看起來像是一個簡單的格式。但是,當遇到巢狀 (nesting) 編碼元素時,這個格式將變得比原先看起來的還要複雜。我們就用圖 1 來思考一個問題:當長度和數值不相符時會發生什麼事?
長久以來,ASN.1 解碼器經常會遇到資料格式不良的問題,過去兩年,各種不同產品 (包括 OpenSSL) 就出現了至少 12 個 ASN.1 解碼器相關的 CVE 漏洞。
NGAP 訊息
不同的 5G 核心網路廠商對於 NGAP ASN.1 解碼器的實作都不盡相同,有些採用開放原始碼解碼器,有些則採用自家開發的解碼器。我們測試了多種商用產品與免費開放原始碼產品的 NGAP 解碼漏洞。結果不令人意外:我們在商用和免費開放原始碼產品當中總共找到了數百個漏洞。以下將舉其中的一個來做分析,這是我們在 free5gc 這個開放原始碼 5G 核心網路實作當中發現的漏洞。
讓我們來看一個在 Wireshark 當中解碼的 NGAP 訊息:一個從 UE 發送至 AMF 來開始註冊 UE 的 InitialUE 訊息,裡面共有 5 個資訊元素 (Information Element,簡稱 IE):Item 0 到 Item 4。此處以 Item 1:NAS-PDU 作範例。
前兩個位元組代表 IE 識別碼 (id):0x0026,也就是 NAS-PDU。隨後的位元組代表數值欄位的關鍵性 (0x00) 和長度 (0x26)。長度欄位之後就是數值本身,從 0x7e 開始,總長度為:0x26 個位元組。
![圖 2:正常的 NGAP 訊息格式。](/content/dam/trendmicro/global/en/research/23/j/asn1-vulnerabilities-in-5g-cores/5G-2-2.png)
再來看看下面這個 NGAP 訊息:
![圖 3:格式不良的 NGAP 訊息。](/content/dam/trendmicro/global/en/research/23/j/asn1-vulnerabilities-in-5g-cores/5G-2-3.png)
此訊息有幾個問題。
- 程序代碼 (0x0028) 代表這是一個 UEContextModification 訊息。UEContextModification 訊息應該是從 AMF 發送給 gNB 才對,但在這裡,它卻是從 gNB 發送給 AMF。
- 長度欄位顯示訊息的總長度為 0x30。隨後的位元組 (0x3030 = 12,336) 代表訊息中的 IE 數量,此處為一個隨機的錯誤值。如果我們試圖將這訊息解碼,我們就會遇到數值兜不攏的問題。例如,從這個巢狀 IE 的長度欄位看到其長度為 0x30,但這顯然不正確,因為整個訊息的長度也是 0x30。
當 free5gc 收到這個封包,AMF 就會當掉,這就是 CVE-2022-43677 漏洞。free5gc 在 2023 年 5 月釋出了一個相關的修正。
就這個修正來看,它似乎是在 NGAP 的解析過程當中解決了這個問題。但我們又遇到其他問題,我們可以從用戶設備製造正常使用者流量 (也就是不需要存取基頻數據機) 來讓它當掉。
![圖 4:5G 網路拓樸。](/content/dam/trendmicro/global/en/research/23/j/asn1-vulnerabilities-in-5g-cores/5G-2-4.png)
NGAP 是控制平面的通訊協定 (訊號發送),使用的是 SCTP 連接埠 38412。GTP-U 則是包裝使用者資料的通訊協定,使用的是 UDP 連接埠 2152。從 UE,控制平面的訊號發送是由基頻數據機 (baseband modem) 來處理。
使用者無法直接存取基頻數據機,使用者平面的流量 (使用者在瀏覽或串流時傳送的資料) 是經 GTP-U 通道發送至「使用者平面功能」(User Plane Function,簡稱 UPF)。在 5G「控制平面與使用者平面分離」(Control Plane User Plane Separation,簡稱 CUPS) 的架構下,UPF 和 AMF 在功能上是分開的:它們是不同的網路功能,各自擁有自己的 IP 位址。一般使用者無權存取網路基礎架構,因此發送至控制平面的資料就變成了一種資安風險。
我們在測試中可以從 UE 應用程式層透過 AMF 來建立一個 SCTP 連線,藉由這個 SCTP 連線來發送異常的 NGAP 訊息。在 5GC 端來看,其封包看起來就好像是 NGAP-in-GTPU。這個 NGAP 訊息會發送至 AMF,結果就導致它當掉。
此處最令人擔心的弱點是使用者平面訊息的路由方式,這讓異常訊號的訊息可以被發送至 AMF。不過這類攻擊有個前提,那就是駭客必須知道 AMF 的 IP 位址,這一點我們可以從使用者平面執行 SCTP 掃描來達成。
請注意,這個測試是使用全功能 (all-in-one) 版本的 free5gc 虛擬機器,而非容器化的 free5gc 版本,這在路由的設定上會有所不同。
攻擊途徑
我們在測試中使用的攻擊途徑是藉由用戶設備來製造用戶流量,專門瞄準控制平面與使用者平面未適當分離的弱點。
這裡示牽涉到兩個問題:
- ASN.1 解析器不夠嚴謹的問題。
- 控制平面與使用者平面未適當分離的問題。
第一個問題應該跟程式撰寫有關,由於負責解析控制平面訊息的 ASN.1 解碼器非常複雜,所以經常會出現訊息格式不良所導致的漏洞。
第二個問題,也就是使用者流量滲透到控制平面,是一個架構上的問題,所以也可能導致更多其他問題。
當控制平面與使用者平面未適當分離時,就會有可能從 UE 發送格式不良的 N1 訊息來導致當機。不過要做到這點,UE 必須具備發送控制訊息的能力,目前已經有一些開放原始碼軟體可以做到這點 (例如 srsUE)。
營運衝擊
free5gc 專案是目前最受歡迎的開放原始碼 5G 核心網路實作。我們知道還有一些瞄準 5G 專網市場與電信業的封包處理核心主流廠商根據 free5gc 開發了一些商用解決方案。事實上,亞洲和歐洲都有一些國家的國防單位向這類廠商採購了 5G 網路產品。
CVE-2022-43677 漏洞利用的是 free5gc 當中的 CUPS 實作弱點,透過使用者流量來觸發控制平面發生阻斷服務 (DoS) 的情況,像這類針對封包處理核心的 DoS 攻擊一旦成功,將癱瘓整個網路。對於一些關鍵的產業 (如國防、警政、採礦、交通管制),網路連線的中斷將帶來嚴重的後果;對於一些使用即時感測器來監控製造流程的工廠,這將導致生產的產品出現瑕疵。
建議與洞見
對於正在使用上述 5G 技術的使用者,我們提供以下幾點最佳實務原則建議:
- 存取控管:僅允許信賴的裝置連上網路,SIM 卡的註冊與使用必須受到嚴格管制與管理。
- 明確分離控制平面與資料平面:在封包處理核心將這兩個平面徹底分離,可防止資料封包跨越到控制平面。
- 負責任地使用開放原始碼:在使用開放原始碼軟體來建立關鍵的基礎架構節點時,使用者必須要能立即修補及防範任何瑕疵。強烈建議使用者要仔細研究並了解其底層的程式碼,如果沒辦法做到,那麼在使用該軟體時要取得專屬的技術支援。
- 使用具備蜂巢式技術 (CT) 感應能力的深層封包檢查 (DPI) 解決方案/防火牆:關鍵的基礎架構節點很難能夠經常不斷更新,因為這麼做有可能造成服務中斷。所以,強烈建議使用專為封包處理核心量身打造的虛擬修補技術在 N2 上偵測異常的 NGAP 訊息,並在 N3 上監控是否有濫用 GTP-U 通道的情況 (例如 NGAP in GTP-U、GTP-U in GTP-U)。
我們建議採用能將 IT 與通訊技術資安及可視性整合的多層式資安解決方案。此外,建置一套零信任解決方案,例如 CTOne 推出的 Trend Micro™ Mobile Network Security,也可為企業和關鍵產業添加一道額外防護來防範私有專屬網路遭到未經授權的使用,進而維持工業系統的持續運轉,確保 SIM 卡只能在獲得授權的裝置上使用。此外,Trend Mobile Network Security 還能將 CT 與 IT 資安的可視性與管理整合至單一主控台上。