前言
隨著網路安全威脅的不斷增加,瞭解並預防可能的攻擊變得至關重要。 Blast-RADIUS 是一種嚴重影響 RADIUS 協議的安全性漏洞,能夠讓攻擊者繞過身份驗證獲取未經授權的存取權限。 本篇文章將深入探討該漏洞的工作原理、檢測方法及應對措施,幫助您有效防範潛在的安全風險。
圖一:Blast-RADIUS 漏洞安全風險
Blast-RADIUS 基礎知識
Blast-RADIUS 是一種影響 RADIUS 協議(依據 RFC 2865)的安全性漏洞。它允許位於 RADIUS 用戶端和伺服器之間的中間人攻擊者, 偽造一個有效的存取接受(access-accept)消息,回應已經失敗的認證請求,使攻擊者能夠在無需猜測或強制破解密碼和共用金鑰的情況下,就取得對網路設備與服務的存取權限。 攻擊者在請求中插入了一個惡意屬性,導致合法伺服器響應中的認證資訊與攻擊者偽造的消息發生碰撞,最終將拒絕轉為接受,並可添加任意協定屬性。不過,攻擊者不會取得用戶憑據。 該漏洞已在 CVE-2024-3596 中描述。
具體來說,此攻擊是透過計算碰撞來攻擊回應認證器的 MD5 簽名。由於這是協定層面問題,所以只要不使用 EAP 並透過 UDP 未加密通訊工作的 RADIUS 實現(特別是 PAP、CHAP),皆會處於受影響範圍。
圖二:Blast-RADIUS 漏洞原理示意圖(已放大)
如果無法直接使用 TLS 或 DTLS 進行傳輸加密,可以使用 RFC 2869 中描述的可選 RADIUS 屬性 “Message-Authenticator” 作為替代方法。 該方法為整個 RADIUS 數據包計算一個 HMAC-MD5 校驗和,任何未透過此完整性檢查的數據包必須被靜默丟棄。 由於沒有共用金鑰,攻擊者將無法偽造此 HMAC-MD5 簽名。如果在所有數據包中都要求使用有效的消息認證屬性,那麼這種攻擊將變得不可能。 可惜的是,這個屬性只有在 EAP 認證方法中才是強制性的,而在 PAP 和 CHAP 中並非強制;即便在 RFC 5080 中也只是「SHOULD」建議。
如何檢查漏洞
要檢查您的實現是否存在此漏洞,可以捕獲 RADIUS 伺服器和 RADIUS 用戶端之間的通訊數據包,依據受影響的協定特徵進行篩選。 我們可以使用 ProfiShark 或 IOTA 進行攔截,並將擷取到的封包透過 Wireshark 做進一步分析。 建議以內聯模式(見圖三)捕獲實際雙向通訊。
圖三:在 RADIUS 用戶端與伺服器間內聯連接 IOTA 或 ProfiShark
使用 Profishark 進行捕獲
在 ProfiShark Manager 中,請前往 “Network Ports” 選項卡,將 ProfiShark 設置為內聯模式(取消勾選 “Span Mode”,如圖四), 然後將其內聯整合至您的網路拓撲(如圖三)。
圖四:在 ProfiShark Manager 中禁用 SPAN 模式
接下來,切換到 “Capture” 選項卡,根據需求設定捕獲目錄,然後點選 “Start Capture” 按鈕開始捕獲數據,直到取得足夠封包後再停止(圖五), 最後匯出為 PCAPNG 檔並使用 Wireshark 開啟。
圖五:在 ProfiShark Manager 中開始抓包
使用 IOTA 進行捕獲
在 IOTA 介面上,首先進入 “Capture > Interface Configuration”,將介面設置為內聯模式(如圖六),然後將 IOTA 內聯部署於網路環境中, 透過設備按鈕或 “Capture > Capture Control” 頁面點選 “Start Capture” 開始捕獲(圖七)。
圖六:IOTA 一體化流量監控工具的介面配置
圖七:透過介面或設備按鈕開始捕獲
現在,我們可以應用協定或應用程式篩檢器鎖定 RADIUS 封包,最簡單的方式是將 “APPLICATION” 設為 “RADIUS”。 也可改透過 “PROTOCOL_STACK=Ethernet | IPv4 | UDP | RADIUS” 來過濾。當篩選到特定的 RADIUS 流後, 可於底部的流列表處選擇下載該流的 PCAPNG 檔(圖八)。
圖八:在 IOTA 上過濾 RADIUS 封包
圖九:流列表可依需求下載PCAPNG
分析易受攻擊的執行方式
打開匯出的 PCAPNG 檔後,在 Wireshark 中,我們可以使用以下顯示篩檢程式來鎖定可能易受攻擊的 RADIUS 封包:
(radius.code in {1,2,3,11}) and not (radius.Message_Authenticator or eap)
(如圖十)。這樣就能同時取得 Access-Requests(代碼1)、Access-Accepts(代碼2)、Access-Rejects(代碼3)及 Access-Challenges(代碼11),
但排除已使用 EAP 或帶有 Message-Authenticator 的安全封包。
圖十:在 Wireshark 中僅顯示不含 Message-Authenticator 或 EAP 的 RADIUS 封包
一旦封包中看見 “Message-Authenticator” 屬性(如圖十一),代表封包經 HMAC-MD5 校驗,便不易受 Blast-RADIUS 攻擊影響。 若所有 RADIUS 封包都帶有該屬性,攻擊將被阻擋。
圖十一:Message-Authenticator 防止攻擊的 RADIUS Access-Request