張奕鳴 劉彩霞 劉樹新
(中國人民解放軍戰(zhàn)略支援部隊信息工程大學 河南 鄭州 450002)
5G網(wǎng)絡為了滿足增強移動寬帶、超高可靠超低延遲通信和大規(guī)模機器類通信[1]等應用場景的業(yè)務需求,引入了毫米波、超密集組網(wǎng)、大規(guī)模多輸入多輸出、軟件定義網(wǎng)絡、網(wǎng)絡功能虛擬化、基于服務化架構(SBA)等新技術和新機制[2-3]。同時,互聯(lián)網(wǎng)開放和共享的一些優(yōu)勢技術也被5G技術標準采用,其中RESTful API作為5G SBA架構實現(xiàn)的一種關鍵技術被3GPP納入5G標準[4-5]。
REST(Representational State Transfer)是互聯(lián)網(wǎng)絡應用程序的一種設計理念與開發(fā)方式,其概念是Roy Thomas Fielding在2000年所發(fā)表的論文中提出的[6],F(xiàn)ielding在論文第6節(jié)中詳細描述了如何在互聯(lián)網(wǎng)中使用統(tǒng)一資源標識符(URI)、超文本傳輸協(xié)議(HTTP)和不同數(shù)據(jù)表示格式實現(xiàn)REST,滿足REST開發(fā)方式的API則被稱為RESTful API。當前,RESTful API已經(jīng)在Web服務和物聯(lián)網(wǎng)等場景得到成熟應用。
RESTful API在Web服務和物聯(lián)網(wǎng)應用場景中已經(jīng)發(fā)現(xiàn)面臨諸多安全問題,如:(1) 由于Web服務的大連接特性和物聯(lián)網(wǎng)終端處理能力受限特性使得RESTful API在這兩種場景中面臨DDoS攻擊威脅;(2) RESTful API的身份驗證機制導致其面臨中間人攻擊威脅;(3) 針對RESTful API輸入?yún)?shù)的注入攻擊威脅;(4) 由于RESTful API使用XML、JSON等序列化方法傳輸請求和響應數(shù)據(jù),使得攻擊者利用XML和JSON自身漏洞對RESTful API發(fā)起攻擊等。
針對RESTful API在Web服務與物聯(lián)網(wǎng)應用場景中的安全威脅,業(yè)界也開展了一些安全增強機制研究。文獻[7]提出基于ID的身份驗證算法,利用URI實現(xiàn)客戶端與服務器的輕量身份驗證,解決REST的無狀態(tài)特性帶來的復雜身份驗證問題。文獻[8]提出一種REST安全協(xié)議,采用數(shù)字證書、消息簽名、消息對稱加密方法為RESTful API消息提供機密性、完整性和不可抵賴性保護。文獻[9]提出一種一次性令牌機制,每個REST Web請求都攜帶唯一的不易偽造的一次性令牌,令牌中包含時間戳,并限制合法訪問的時間窗口,降低REST Web服務遭受中間人攻擊與劫持攻擊的風險。文獻[10]引入了RE-CHECKER框架分析軟件定義網(wǎng)絡控制器中的RESTful服務的漏洞。文獻[11]提出了一種基于RESTful API的體系結(jié)構保護物聯(lián)網(wǎng)設備安全,物聯(lián)網(wǎng)中間件使用RESTful API對終端進行身份驗證后下發(fā)令牌,并將持有令牌的終端生成的數(shù)據(jù)上傳至云服務器等。
由于5G網(wǎng)絡面向海量連接和大規(guī)模通信應用場景,網(wǎng)絡功能(NF)間存在身份驗證機制,控制平面NF間數(shù)據(jù)傳輸使用JSON編碼,故RESTful API在5G場景中也可能面臨相似的安全威脅。此外,RESTful API在5G網(wǎng)絡應用場景的特殊應用需求,也會引入新的安全威脅。
本文首先介紹5G核心網(wǎng)SBA架構,在此基礎上,介紹了REST的特點和SBA架構中應用RESTful API的具體流程,從DDoS攻擊、JSON安全威脅、中間人攻擊、注入攻擊四個角度分析了RESTful API在5G SBA架構中可能存在的安全威脅,最后,分別基于RESTful API請求頻率控制、JSON防護、令牌改進、參數(shù)檢查四個方面給出了在5G應用場景針對四類威脅的安全防護方案,為增強RESTful API在5G核心網(wǎng)的應用安全提供參考。
3GPP定義了5G網(wǎng)絡的架構,如圖1所示[12],定義了NF之間交互的兩種表示方法,分別是基于服務表示和參考點表示。圖1中5G網(wǎng)絡架構可以分為兩部分,分別是用戶平面與控制平面,虛線下方為用戶平面,虛線上方為控制平面。5G網(wǎng)絡中控制平面NF之間通過基于服務的表示進行交互,例如接入管理功能(AMF)通過Namf為其他控制平面的NF提供服務,參考點表示應用于用戶平面NF之間的交互,例如接入網(wǎng)((R)AN)通過參考點N3與用戶平面功能(UPF)進行交互,控制平面與用戶平面之間的交互同樣使用參考點表示,參考點分別是N1、N2、N4。

圖1 5G網(wǎng)絡架構
3GPP定義的基于服務表示方法以基于服務接口(SBI)作為實現(xiàn),3GPP對SBI的協(xié)議棧進行了定義[13]。SBI協(xié)議棧自底向上在網(wǎng)絡層協(xié)議采用IP,傳輸層協(xié)議采用TCP,應用層協(xié)議采用HTTP/2.0,采用JSON作為序列化方法,采用OpenAPI3.0作為接口描述語言,采用REST作為API開發(fā)方式[14]。RESTful API有以下幾個主要特點:(1) RESTful API的開發(fā)采用客戶端-服務器的設計架構;(2) RESTful API的無狀態(tài)性,即服務器不保存客戶端的信息,客戶端發(fā)送的每一個請求都需要包含所有必需的狀態(tài)信息;(3) 服務器中的所有資源采用URI進行標識,資源可以是文字、圖片、音頻、視頻、服務等;(4) 資源的表示形式根據(jù)客戶端的需要進行轉(zhuǎn)換,例如服務器可向客戶端發(fā)送XML、JSON、TXT等類型的數(shù)據(jù);(5) 客戶端對資源所進行的操作使用HTTP方法實現(xiàn),查詢操作采用GET方法,新增操作采用POST方法,修改更新操作采用PUT或PATCH方法,刪除操作采用DELETE方法。
RESTful API設計方案減少了5G網(wǎng)絡控制平面NF之間的耦合度和依賴性,符合5G網(wǎng)絡服務化的理念,此外,電信運營商可以使用RESTful API將不同地理位置和不同類型的NF組合到網(wǎng)絡切片中,實現(xiàn)5G網(wǎng)絡的云化、虛擬化和按需部署。
以AMF通過服務發(fā)現(xiàn)請求訪問NRF并使用SMF服務為例,闡述RESTful API應用流程,為了便于說明,例中應用場景為非漫游。在此場景中,AMF為NF服務消費者,SMF為NF服務生產(chǎn)者,NRF為授權服務器。NF之間交互如圖2所示。

圖2 AMF-NRF-SMF交互
5G核心網(wǎng)NF服務訪問授權采用OAuth2.0框架,5G核心網(wǎng)控制平面中的NF服務消費者通過RESTful API請求使用NF服務生產(chǎn)者的服務須經(jīng)過NRF授權且NF服務消費者與NRF之間授權的方式是OAuth2.0框架的Client Credentials,即NF服務消費者和NF服務生產(chǎn)者首先須要在NRF中注冊,注冊完成后NF服務消費者使用Nnrf_NFDiscovery_Request請求獲取NRF中已注冊的NF服務生產(chǎn)者信息,然后NF服務消費者使用Nnrf_AccessToken_GET_Request向NRF請求訪問令牌,NRF對NF服務消費者進行鑒權,若通過鑒權,則向NF服務消費者下發(fā)訪問令牌,NF服務消費者需要將訪問令牌與服務請求一同發(fā)送至NF服務生產(chǎn)者,NF服務生產(chǎn)者驗證令牌完整性后執(zhí)行服務。根據(jù)RFC 6749[15]和3GPP的定義[16],5G核心網(wǎng)控制平面的NF在OAuth2.0框架中的角色如下:(1) NRF為Authorization server;(2) NF服務消費者為Client;(3) NF服務生產(chǎn)者為Resource server。
RESTful API的無狀態(tài)特性提高了服務器可擴展性,服務器可以以此為基礎實現(xiàn)負載均衡,減輕流量壓力;RESTful API使用URI標識服務器資源,簡化了資源的發(fā)現(xiàn)過程;客戶端使用已有HTTP協(xié)議的方法對資源進行操作,提高了RESTful API的兼容性,這些優(yōu)勢使RESTful API在現(xiàn)代軟件架構設計中越來越重要。但與此同時引入了因RESTful API設計漏洞而產(chǎn)生的安全威脅。分布式拒絕服務(DDoS)攻擊尤為普遍和顯著,其本質(zhì)是攻擊者利用與受害主機的資源不對稱特性,控制5G網(wǎng)絡中不同位置的多臺假冒NF同時對受害NF發(fā)起惡意請求,導致受害NF資源耗盡,無法為合法NF提供正常服務[17]。JSON是5G核心網(wǎng)SBI協(xié)議棧中的序列化方法,即通過RESTful API發(fā)送請求和響應數(shù)據(jù)的編碼方式是JSON,故其安全漏洞會成為攻擊者通過RESTful API攻擊5G網(wǎng)絡的途徑。中間人攻擊是5G網(wǎng)絡安全威脅中一個重要部分,攻擊者可以建立中間人監(jiān)聽訪問令牌從而非法請求服務。RESTful API的輸入?yún)?shù)會受到注入攻擊的威脅,注入攻擊的根本原因是系統(tǒng)對用戶的輸入驗證不足,可以根據(jù)輸入內(nèi)容分類為以SQL語句作為輸入的SQL注入[18]、以系統(tǒng)無法處理的錯誤數(shù)據(jù)作為輸入的錯誤數(shù)據(jù)注入[19]、以惡意可執(zhí)行代碼作為輸入的惡意代碼注入等。5G核心網(wǎng)RESTful API安全威脅如圖3所示,以下對安全威脅進行詳細說明。

圖3 5G核心網(wǎng)RESTful API安全威脅
在5G核心網(wǎng)中,假設攻擊者控制多臺假冒NF在多個PLMN中的NRF中進行注冊,注冊完成后同時請求同一個PLMN中NRF的同一個服務RESTful API,如圖4所示,若該受害NRF的RESTful API運行需要消耗較多資源,例如服務發(fā)現(xiàn)RESTful API,則受害NRF可能會由于本身資源的耗盡而無法為合法NF提供正常服務。

圖4 DDoS攻擊
利用當前最新發(fā)現(xiàn)的JSON漏洞CVE-2020-10663,攻擊者可以在5G網(wǎng)絡NF的JSON解析器中創(chuàng)建惡意對象。3GPP規(guī)定了當前5G核心網(wǎng)控制面中PLMN之間JSON消息數(shù)據(jù)傳輸由SEPP和IPX進行保護[16],SEPP使用JWE[21]對JSON數(shù)據(jù)進行機密性和完整性保護,IPX使用JWS[22]對修改后JSON數(shù)據(jù)進行數(shù)字簽名,如圖5所示。但在同一個PLMN核心網(wǎng)內(nèi)控制平面NF之間JSON數(shù)據(jù)傳輸并沒有受到保護,在SBI協(xié)議棧中是否采用TLS仍在討論中[23]。如果不使用TLS機制,攻擊者可以通過監(jiān)聽和嗅探等方式獲取JSON數(shù)據(jù),若JSON數(shù)據(jù)中包含地理位置、身份標識等用戶敏感信息,則會危害用戶隱私。即使使用TLS機制,攻擊者可以將偽造的TLS證書安裝在PLMN的核心網(wǎng)中,從而使用攻擊者的公鑰對所有數(shù)據(jù)包進行加密,并使用攻擊者的私鑰(由偽造的TLS證書提供)對其進行解密[24]。因此,攻擊者可以讀取所有加密的JSON數(shù)據(jù)。

圖5 PLMN間JSON消息保護
上文舉例說明了5G核心網(wǎng)中AMF使用RESTful API在NRF中注冊并獲取訪問令牌進而請求SMF服務。如果攻擊者在AMF和NRF之間插入非法的監(jiān)聽設備,如圖6所示,NRF對AMF鑒權成功后,會將訪問令牌通過Nnrf_AccessToken_Get_Response消息發(fā)送至AMF,此時若攻擊者通過監(jiān)聽設備獲取到了AMF的訪問令牌,則攻擊者可以控制假冒AMF攜帶訪問令牌使用SMF的服務而不被檢測到,若NRF下發(fā)的是敏感服務的訪問令牌,例如AMF的獲取用戶地理位置的服務,則攻擊者可以獲取到用戶的地理位置進而追蹤用戶。

圖6 中間人攻擊
在5G核心網(wǎng)中攻擊者可以利用某些NF沒有對RESTful API的輸入?yún)?shù)進行嚴格檢查的漏洞,在RESTful API的輸入?yún)?shù)中注入惡意數(shù)據(jù)從而獲取敏感信息。試想,攻擊者通過中間人攻擊獲取到特定NF服務(例如AMF的Namf_MT服務)訪問令牌后,使用訪問令牌所規(guī)定權限范圍之外的NF服務(例如AMF的Namf_Location服務)構造惡意請求,攻擊者將惡意請求與訪問令牌一同發(fā)送至NF服務生產(chǎn)者端,由于訪問令牌是合法的,若NF服務生產(chǎn)者沒有嚴格檢查令牌中權限范圍參數(shù)與請求服務是否匹配,則NF服務生產(chǎn)者會執(zhí)行攻擊者的惡意請求,這可能導致用戶的敏感信息被竊取,若攻擊者構造的惡意請求包含NF服務生產(chǎn)者無法處理的越界參數(shù),則可能導致其崩潰,如圖7所示。

圖7 注入攻擊
針對上文分析的RESTful API在5G核心網(wǎng)存在的安全威脅,基于業(yè)界對RESTful API在Web與物聯(lián)網(wǎng)安全研究方法,本文結(jié)合5G網(wǎng)絡SBA架構特點,對四類安全威脅提出了對應的安全防護機制。
針對上文分析的DDoS攻擊威脅,NF服務生產(chǎn)者應對來自同一個令牌的RESTful API請求頻率做出相應的限制,可以根據(jù)RESTful API所占用資源的不同進行等級劃分,對占用資源高的RESTful API請求頻率設定更嚴格的閾值,對資源占用低的RESTful API請求頻率設定較為寬松的閾值。若單位時間內(nèi)來自同一個令牌的請求超過RESTful API請求頻率閾值,則NF服務生產(chǎn)者使用HTTP狀態(tài)碼“429 Too Many Requests”作為響應且拒絕執(zhí)行服務,如圖8所示。此外,NRF可加入防火墻機制,依據(jù)NF服務請求內(nèi)容(例如惡意源IP地址、惡意NF ID、未知PLMN ID等)劃分出惡意NF服務消費者,過濾惡意NF服務消費者的請求,降低NF服務生產(chǎn)者RESTful API濫用風險。

圖8 RESTful API請求頻率限制
針對上文分析的JSON安全威脅,5G核心網(wǎng)NF應具備對第三方功能進行細粒度快速升級的能力,若有JSON漏洞被挖掘,則5G核心網(wǎng)應能夠?qū)λ惺褂肑SON功能的NF進行快速升級,安裝JSON漏洞補丁。此外,同一PLMN核心網(wǎng)內(nèi)NF間JSON數(shù)據(jù)傳輸應使用JWE[21]進行保護,JWE可以同時保護JSON數(shù)據(jù)的機密性和完整性,防止攻擊者獲取到用戶的敏感數(shù)據(jù),如圖9所示。

圖9 JSON防護
針對上文分析的中間人攻擊威脅,即攻擊者獲取到NRF發(fā)送至NF服務消費者的訪問令牌,從而攜帶訪問令牌使用NF服務生產(chǎn)者的服務。提出一種改進訪問令牌的安全機制,如圖10所示。NF服務消費者請求訪問令牌之前,生成隨機數(shù)R并使用散列算法計算隨機數(shù)的散列值H,將H與散列算法名稱Hashname連同訪問令牌請求一同發(fā)送至NRF。NRF對NF服務消費者鑒權成功后,將散列值H與散列算法名稱Hashname放入訪問令牌中發(fā)送至NF服務消費者,當NF服務消費者向NF服務生產(chǎn)者請求服務時,將隨機數(shù)R與訪問令牌一同發(fā)送至NF生產(chǎn)者,NF服務生產(chǎn)者成功驗證訪問令牌完整性后,將散列值H與散列算法名稱Hashname取出,使用相同散列算法計算R的散列值H′,若散列值H′與H相同,則允許NF服務消費者使用服務,并將服務響應返回至NF服務消費者,否則拒絕提供服務。

圖10 改進訪問令牌
通過改進令牌的安全機制,攻擊者即使獲取到NRF向NF服務消費者下發(fā)的訪問令牌,由于無法獲知NF服務消費者生成的隨機數(shù)R,故無法使用NF服務生產(chǎn)者的服務。
針對上文分析的注入攻擊威脅,NF服務生產(chǎn)者驗證NF服務消費者訪問令牌完整性的同時,應嚴格檢查NF服務消費者請求RESTful API中輸入?yún)?shù)是否與令牌保持一致或者是否存在安全威脅。例如檢查NF服務消費者請求RESTful API訪問資源的權限是否在令牌所規(guī)定權限之內(nèi),驗證RESTful API輸入的參數(shù)數(shù)量、類型、長度、數(shù)值是否在NF服務生產(chǎn)者所允許范圍之內(nèi)。若NF服務消費者請求的訪問權限超過了訪問令牌權限范圍或NF服務消費者輸入?yún)?shù)越界,則NF服務生產(chǎn)者應拒絕NF服務消費者的服務請求并返回錯誤消息,如圖11所示。

圖11 RESTful API檢查機制
5G網(wǎng)絡將內(nèi)生安全作為重要的設計理念之一,因此5G網(wǎng)絡在設計之初必須全面考慮可能存在的安全威脅。針對RESTful API在5G應用場景中相關安全研究較少的不足,本文在梳理5G網(wǎng)絡服務化架構與RESTful API應用方法的基礎上,分析了5G網(wǎng)絡RESTful API 的4種主要安全威脅,包括DDOS攻擊威脅、JSON安全威脅、中間人攻擊威脅和注入攻擊威脅,并提出了相應的安全防護機制,為5G網(wǎng)絡的發(fā)展完善提供了參考。未來將會針對5G服務化架構相關協(xié)議和應用場景安全做進一步研究。