胡兆華,馮亞玲,辜 彬,聶蘭蘇
(中國電子科技集團公司第三十研究所,四川 成都 610041)
近年來,各類網(wǎng)絡(luò)滲透攻擊事件層出不窮,內(nèi)網(wǎng)軟件系統(tǒng)面臨著日益嚴(yán)重的攻擊威脅,安全狀況極為嚴(yán)峻,引起了國家的高度重視。內(nèi)網(wǎng)軟件系統(tǒng)面臨更高的測評要求,在傳統(tǒng)的測評要求基礎(chǔ)上,增加了內(nèi)網(wǎng)抗網(wǎng)絡(luò)攻擊的安全性測試要求,該要求旨在從單機到系統(tǒng)對內(nèi)網(wǎng)軟件系統(tǒng)的脆弱性和漏洞進行深入挖掘。由于相對特殊的研發(fā)和使用環(huán)境,與業(yè)界在信息系統(tǒng)的安全性開發(fā)與測試的成熟技術(shù)相比,與互聯(lián)網(wǎng)安全攻防—滲透測試相比,內(nèi)網(wǎng)軟件系統(tǒng)的安全性測試尚處于起步階段。
為了應(yīng)對內(nèi)網(wǎng)軟件系統(tǒng)安全性提升的迫切要求,本文對內(nèi)網(wǎng)軟件體系的應(yīng)用需求和使用場景進行分析研究,結(jié)合產(chǎn)品技術(shù)特征、產(chǎn)品邊界及形態(tài),開展安全風(fēng)險分析,提出了系統(tǒng)級安全性測評需求框架。其中,內(nèi)網(wǎng)軟件系統(tǒng)的安全功能漏洞分析研究正是該安全測評需求框架下的重要內(nèi)容,旨在落實框架中各類安全功能的漏洞分析及測試驗證方法。安全功能的漏洞分析主要針對內(nèi)網(wǎng)軟件系統(tǒng)的安全功能的詳細設(shè)計及實現(xiàn)進行分析,建立安全功能模型,從攻擊者視角對功能模型進行威脅分析,找出攻擊點,推演出各類實施威脅行為的攻擊樹,從而分析出可能存在的安全漏洞。
安全分析的主要作用是識別系統(tǒng)的脆弱點,及時采取必要的安全措施來提高系統(tǒng)安全水平,使其面臨的威脅減到最小。掌握系統(tǒng)的安全原則及其可能面臨的外部威脅是安全分析的重要前提。
安全的系統(tǒng)應(yīng)該滿足表1 中的設(shè)計原則[1]。
為了滿足上述安全系統(tǒng)的設(shè)計原則,系統(tǒng)實現(xiàn)的安全功能都應(yīng)具有相應(yīng)的安全屬性[2]。內(nèi)網(wǎng)軟件系統(tǒng)功能的安全屬性如表2 所示。
安全威脅是攻擊者針對系統(tǒng)的安全漏洞展開的潛在攻擊風(fēng)險,而威脅建模是指通過對系統(tǒng)設(shè)計和體系結(jié)構(gòu)進行系統(tǒng)化檢查,進而對系統(tǒng)面臨的威脅進行分類分析,同時協(xié)助系統(tǒng)設(shè)計者改進系統(tǒng)的安全性設(shè)計。
表2 內(nèi)網(wǎng)軟件系統(tǒng)功能的安全屬性
微軟的STRIDE 威脅建模方法是威脅建模的主要理論和實踐來源。STRIDE 是由Spoofing(假冒)、Tampering(篡改)、Repudiation(抵賴)、Information Disclosure(信息泄露)、Denial of Service(拒絕服務(wù))和Elevation of Privilege(提升權(quán)限)的首字母組成的縮略詞[3],它從6 個維度來考察系統(tǒng)設(shè)計時存在的外部威脅風(fēng)險點。威脅分類的定義及其映射的安全屬性如表3 所示。
表3 威脅分類的定義及安全屬性
威脅建模過程包含理解系統(tǒng)的復(fù)雜度,識別出所有系統(tǒng)可能面臨的威脅,不管這些威脅是否可以被利用。在安全性需求形成的過程中,需要根據(jù)這些威脅的嚴(yán)重程度與發(fā)生的可能程度決定是否采取措施減輕威脅或接受其帶來的安全風(fēng)險。
針對系統(tǒng)安全及外部威脅分析,常見的威脅建模分析切入點主要包含以下幾個方面。
2.1.1 以攻擊者作為切入點
以攻擊者作為切入點的威脅建模分析方式是從攻擊者角度出發(fā),分析評估攻擊者的目的及攻擊者如何實現(xiàn)他們的目的[4]。這種分析方式通常圍繞系統(tǒng)的資產(chǎn)展開,首先要考慮的是攻擊者的動機,例如,某攻擊者想進入未對其授權(quán)的系統(tǒng)中讀取敏感信息。
2.1.2 以軟件系統(tǒng)作為切入點
以軟件系統(tǒng)作為切入點的威脅建模分析方式是圍繞系統(tǒng)的設(shè)計方式與動作目的展開,進而分析軟件系統(tǒng)及系統(tǒng)內(nèi)部模塊可能面臨的攻擊。
2.1.3 以資產(chǎn)作為切入點
冬季是主要番茄生產(chǎn)季節(jié),施肥期間需要合理控制氮、磷、鉀肥料,施肥大概在2月份后。在第1穗果時,對膨大的第2穗果追肥處理,硫酸鉀型復(fù)合肥追肥量大概在20 kg/畝,或是選擇同等肥量的硫酸二胺[3]。
以資產(chǎn)作為切入點的威脅建模分析方式是圍繞系統(tǒng)中的資源展開分析的,這類資源可能是系統(tǒng)收集到的用戶敏感信息、業(yè)務(wù)系統(tǒng)的業(yè)務(wù)數(shù)據(jù)等。
為安全功能創(chuàng)建威脅模型是安全功能漏洞分析的重要基礎(chǔ),威脅模型的建立主要包括以下幾個步驟。
2.2.1 描述系統(tǒng)
描述系統(tǒng)需要理解系統(tǒng)的組件和組件之間的關(guān)系,并構(gòu)建一個系統(tǒng)模型來強調(diào)系統(tǒng)的主要特征。根據(jù)系統(tǒng)類型,可以使用多種方法對系統(tǒng)建模。清晰的軟件模型有助于威脅分析,常用軟件模型如下文所述。
(1)數(shù)據(jù)流圖。數(shù)據(jù)流圖是最常見的軟件模型,也是威脅建模最理想的模型。數(shù)據(jù)流圖將分析對象的應(yīng)用系統(tǒng)分解為不同的功能組件,并表示出數(shù)據(jù)流在系統(tǒng)不同部件之間的流入和流出關(guān)系[5]。數(shù)據(jù)流圖要素(數(shù)據(jù)存儲和過程)通過數(shù)據(jù)流連接起來,并與外部實體相互作用。
與其他系統(tǒng)視圖相比,數(shù)據(jù)流圖更容易識別出系統(tǒng)面臨的威脅,它可以跟蹤被系統(tǒng)處理的攻擊者的數(shù)據(jù)和命令,分析它們是如何被解析和響應(yīng)的。
(2)網(wǎng)絡(luò)模型。網(wǎng)絡(luò)模型常應(yīng)用于復(fù)雜的網(wǎng)絡(luò)系統(tǒng),可以幫助分析人員查看不同角色的網(wǎng)絡(luò)設(shè)備之間的通信關(guān)系。當(dāng)對網(wǎng)絡(luò)系統(tǒng)進行威脅建模時,首先需要確定網(wǎng)絡(luò)上不同類別的網(wǎng)絡(luò)設(shè)備的角色和功能,其次歸納出不同角色的實體之間的通信模式。例如,應(yīng)用服務(wù)器需要同時與業(yè)務(wù)控制器和用戶的終端設(shè)備進行通信,因此,網(wǎng)絡(luò)模型就需要描述出通信過程中使用的協(xié)議、端口和流量模式等信息。
(3)統(tǒng)一建模語言UML。在利用統(tǒng)一建模語言(Unified Modeling Language,UML)繪制威脅建模表時,最重要的步驟是添加信任邊界[6]。UML 表達能力強,但使用復(fù)雜度高,如果不熟悉所有UML 符號,或者對UML 符號的意義理解有誤,則圖表工具的有效性會受到影響。
(4)泳道圖。泳道圖常用于表達不同參與者之間的數(shù)據(jù)流,通常在參與者之間有暗含的信任邊界。
(5)狀態(tài)圖。狀態(tài)圖常用于顯示系統(tǒng)的不同狀態(tài)以及這些狀態(tài)間的轉(zhuǎn)換。在威脅建模中使用狀態(tài)圖,可以檢查每次轉(zhuǎn)換是否經(jīng)過恰當(dāng)?shù)陌踩炞C。
無論使用哪種軟件模型,都應(yīng)該包括以下關(guān)鍵內(nèi)容:顯示推動系統(tǒng)的事件;顯示驅(qū)動的進程;判定每個進程將產(chǎn)生和發(fā)送的響應(yīng);識別請求和響應(yīng)的數(shù)據(jù)來源;識別每個響應(yīng)的接收者;忽略內(nèi)在運作機制,重點關(guān)注范圍。
2.2.2 識別資產(chǎn)和接入點
資產(chǎn)是威脅攻擊的目標(biāo),接入點是攻擊者獲取系統(tǒng)資產(chǎn)訪問的方法和途徑[7],因此,識別資產(chǎn)和接入點是威脅建模過程中的關(guān)鍵步驟。
資產(chǎn)是系統(tǒng)的資源,包括有形的資產(chǎn)(例如數(shù)據(jù)和程序)和抽象的資產(chǎn)(例如數(shù)據(jù)的一致性和完整性),系統(tǒng)應(yīng)保護資產(chǎn)不受到惡意攻擊和使用。接入點包括開放的套接字、函數(shù)接口、共享文件、硬件接口和文件系統(tǒng)的讀寫等。與接入點相關(guān)的信任邊界也非常重要,信息邊界兩邊存在不同的信任級別,表示了訪問系統(tǒng)資產(chǎn)所需要的信任度或權(quán)限。例如,管理員用戶相對于普通用戶的訪問權(quán)限更高,能執(zhí)行更多的操作。
2.2.3 識別威脅
識別威脅是指根據(jù)已獲取的信息識別出系統(tǒng)可能被攻擊者入侵的脆弱點或漏洞,需要對系統(tǒng)進行深層次分析后,才能得到。
在威脅建模過程中,系統(tǒng)模型顯示了所有與安全性相關(guān)的關(guān)鍵實體,例如資產(chǎn)、接入點和通信信道等。識別威脅可以通過逐個分析關(guān)鍵實體,以破壞關(guān)鍵實體的保密性、完整性、可用性等安全屬性的威脅假設(shè)的方式進行。一般情況下,可依據(jù)STRIDE 威脅模型的6 個分類進行威脅假設(shè),一旦威脅成立,系統(tǒng)又沒有相應(yīng)的緩解對策,則可以認(rèn)定系統(tǒng)存在漏洞,即該威脅對應(yīng)的安全屬性可能被攻擊者破壞[8]。威脅對應(yīng)的安全屬性分類方法有助于在安全性需求中找到特定威脅的緩解對策。例如,數(shù)據(jù)信息在傳輸過程中面臨被未授權(quán)篡改的威脅,這違背了安全屬性中的完整性,針對這類威脅,可以在被傳輸數(shù)據(jù)中使用雜湊算法,以確保數(shù)據(jù)的完整性。
安全功能種類多樣,即使是相同的安全功能在不同的應(yīng)用場景下的實現(xiàn)細節(jié)也各有不同。在內(nèi)網(wǎng)軟件系統(tǒng)眾多的安全功能中,一些功能是大多數(shù)軟件系統(tǒng)所共有的,常見的安全功能包括日志審計、身份認(rèn)證、訪問控制和升級功能等。為了研究威脅建模的分析方法,本文選取典型安全功能——日志審計進行威脅建模,分析安全功能的攻擊路徑集(即攻擊樹),通過對安全功能的威脅分析研究,總結(jié)安全功能漏洞分析的一般性方法。
日志審計功能按安全邊界可劃分為3 個安全域:日志操作安全域(和操作者的邊界)、日志存儲安全域(數(shù)據(jù)內(nèi)部處理模塊的邊界)和日志代理安全域(與外部設(shè)備的邊界)。從數(shù)據(jù)流角度,日志數(shù)據(jù)的整個生命周期包括產(chǎn)生、存儲、上報、更新和刪除等處理階段。采用數(shù)據(jù)流圖的功能模型可以詳細分析日志數(shù)據(jù)在每個處理階段的功能要素及安全約束,同時以攻擊者的視角審視每個處理環(huán)節(jié),可以清楚地識別可能存在的攻擊點。日志審計功能的威脅模型及圖例說明如圖1、圖2 所示。
可從機密性、完整性、可用性、身份認(rèn)證、授權(quán)和不可抵賴性6 個方面對日志審計功能可能存在的攻擊威脅進行攻擊樹分析,如表4 所示。
在安全功能威脅模型的基礎(chǔ)上,分析可能存在的安全漏洞和可能被攻擊利用的路徑,形成系統(tǒng)功能測試的安全性分析思路及測試需求。漏洞所帶來的安全風(fēng)險需要根據(jù)安全性測試需求分析結(jié)果進行測試用例設(shè)計及測試方法實施后的評估,漏洞嚴(yán)重性等級評估所涉及的關(guān)聯(lián)因素[9]包括:(1)漏洞利用結(jié)果(可非授權(quán)信息瀏覽、獲得普通用戶權(quán)限、獲得高級用戶權(quán)限等);(2)利用技術(shù)復(fù)雜度(高、中、低);(3)攻擊工具可利用性(沒有可用工具、未編譯的測試工具、簡易的已編譯工具、自動化集成化工具);(4)補丁措施(官方補丁、臨時解決方案、不存在)。當(dāng)日志信息的機密性被破壞,漏洞帶來的風(fēng)險程度將取決于日志信息的重要程度,泄露的信息越重要,其風(fēng)險程度越高(例如,用戶名口令泄露的嚴(yán)重性高于用戶登錄時間泄露的嚴(yán)重性)。因此,一個漏洞存在的風(fēng)險應(yīng)基于多種元素綜合分析與判定,本文的研究目的是在安全功能威脅模型中合理地找到最薄弱、危險范圍最大的節(jié)點集,在確定攻擊路徑后,漏洞風(fēng)險評估將會更客觀、更迅速,后續(xù)工作可針對漏洞風(fēng)險的評估進行更進一步的研究。
表4 攻擊樹分析
本文在功能威脅模型建立理論的基礎(chǔ)上,通過對日志審計安全功能特點進行深入分析,最終實踐得出安全功能漏洞分析模型的表示方法,基于日志審計安全功能的漏洞分析模型,以威脅的6 種基本分類(假冒、篡改、抵賴、信息泄露、拒絕服務(wù)和提升權(quán)限)作為攻擊目標(biāo),對數(shù)據(jù)的產(chǎn)生、存儲、上報、更新和刪除等全生命周期過程進行威脅分析,在功能模型中找到對應(yīng)的攻擊點,對各攻擊點的攻擊方式和測試手段進行深入分析,最終形成安全功能漏洞威脅的攻擊樹,作為安全功能測試用例設(shè)計的依據(jù)和指導(dǎo)。