◆劉沅斌
基于風(fēng)險點知識庫的銀行業(yè)務(wù)安全測試方法研究
◆劉沅斌
(中國農(nóng)業(yè)銀行研發(fā)中心 北京 100161)
結(jié)合當(dāng)前業(yè)務(wù)安全漏洞攻擊日益增多,商業(yè)銀行內(nèi)部逐漸重視系統(tǒng)業(yè)務(wù)安全測試的現(xiàn)狀,本文提出一種基于風(fēng)險點知識庫的業(yè)務(wù)安全測試方法。該方法通過設(shè)計業(yè)務(wù)安全測試流程,規(guī)范風(fēng)險點知識庫的形式化描述,基于規(guī)則的實體識別構(gòu)建風(fēng)險點知識庫,實現(xiàn)業(yè)務(wù)安全測試流程的標(biāo)準(zhǔn)化和業(yè)務(wù)安全測試用例設(shè)計的自動化。
安全測試;業(yè)務(wù)安全;風(fēng)險點知識庫;測試用例
隨著互聯(lián)網(wǎng)的飛速發(fā)展,銀行信息系統(tǒng)受到的安全攻擊逐年增加。安全測試作為一種評估銀行信息系統(tǒng)安全性的手段,逐步受到重視。而銀行系統(tǒng)對于傳統(tǒng)安全漏洞防護(hù)的技術(shù)和設(shè)備日趨成熟,基于傳統(tǒng)安全漏洞攻擊也變得日益困難,增加了黑客的攻擊成本,使得基于業(yè)務(wù)安全漏洞的攻擊日益增加,業(yè)務(wù)安全測試重要性凸顯。安全測試作為一項專業(yè)性強的工作,其測試效果取決于安全測試人員的專業(yè)知識、技能和經(jīng)驗,缺乏成熟的方法和模型。如何充分利用內(nèi)外部已有知識,構(gòu)建組織級資產(chǎn),降低安全測試的準(zhǔn)入門檻?
攻擊圖是目前較常用的安全評估方法,文獻(xiàn)[1]基于對系統(tǒng)業(yè)務(wù)數(shù)據(jù)流,攻擊流和安全措施要素統(tǒng)一建模分析的結(jié)果構(gòu)建節(jié)點間脆弱性利用圖,基于攻擊成功率識別出攻擊者獲取某種可能危害到業(yè)務(wù)系統(tǒng)安全屬性的攻擊能力節(jié)點的最短攻擊路徑。該方法主要目的是評估信息系統(tǒng)安全措施的效用。文獻(xiàn)[2]利用基于邏輯表達(dá)式和條件偏好網(wǎng)絡(luò)的推理機制,提出一套靜態(tài)分析攻擊圖的系統(tǒng)方法。文獻(xiàn)[3]提出一種基于AEGM的網(wǎng)絡(luò)攻擊滲透測試預(yù)案生成系統(tǒng),文獻(xiàn)[4]提出一種基于設(shè)計級別的攻擊場景生成安全測試的方法,文獻(xiàn)[5]提出一種基于攻擊圖的安全威脅識別和分析方法,文獻(xiàn)[6]設(shè)計網(wǎng)絡(luò)滲透測試的實施流程,提出可復(fù)用的滲透測試用例管理框架。上述方法均是覆蓋傳統(tǒng)安全漏洞,沒有關(guān)注系統(tǒng)業(yè)務(wù)安全層面的測試方案,且存在工作量大,人力成本高,耗時較長的問題。本文提出一種基于風(fēng)險點知識庫的銀行業(yè)務(wù)安全測試方法,制定規(guī)范化的業(yè)務(wù)安全測試流程,同時基于以業(yè)務(wù)風(fēng)險點知識庫為核心的組織級資產(chǎn),達(dá)到知識共享的目的,使測試用例設(shè)計自動化,降低了設(shè)計門檻,有效提升業(yè)務(wù)安全測試質(zhì)量和效率。
當(dāng)前銀行信息科技的安全測試主要分為兩類:行內(nèi)安全測試和行外安全測試。行內(nèi)安全測試又可分為投產(chǎn)前安全測試和已投產(chǎn)系統(tǒng)安全測試。而行外安全測試一般是采用專業(yè)安全機構(gòu)安全測試服務(wù)和安全眾測兩種類型的測試。
本文研究內(nèi)容主要針對行內(nèi)安全測試部分,行內(nèi)安全測試部分可劃分為源代碼掃描,自動化漏洞掃描、人工測試三種類型。源代碼掃描采用的靜態(tài)應(yīng)用程序安全測試(Static Application Security Testing)技術(shù),通常在編碼階段分析應(yīng)用程序的源代碼或二進(jìn)制文件的語法、結(jié)構(gòu)、過程、接口等來發(fā)現(xiàn)程序代碼存在的安全漏洞。自動化漏洞掃描一般采用動態(tài)應(yīng)用程序安全測試(Dynamic Application Security Testing)技術(shù),模擬黑客行為對應(yīng)用程序進(jìn)行動態(tài)攻擊,分析應(yīng)用程序的反應(yīng),從而確定該應(yīng)用是否易受攻擊。2012年Gartner公司新提出了交互式應(yīng)用程序安全測試(Interactive Application Security Testing)方案。
上述自動化掃描方案均只能發(fā)現(xiàn)傳統(tǒng)安全漏洞,不能或極少能發(fā)現(xiàn)業(yè)務(wù)安全漏洞,業(yè)務(wù)安全漏洞主要依靠人工進(jìn)行業(yè)務(wù)安全測試來檢測。但業(yè)務(wù)安全測試由于缺乏通用的規(guī)則,其測試對象和測試內(nèi)容取決于系統(tǒng)提供的業(yè)務(wù)功能,在實際測試過程中,可能存在如下問題:
(1)缺乏統(tǒng)一的標(biāo)準(zhǔn),安全測試過程不受控,測試效率和質(zhì)量難以度量。
(2)測試人員的技能水平不一,技能和經(jīng)驗無法有效地共享,無法成為組織的公共資源,當(dāng)相應(yīng)人員流失時,也意味著組織技能的缺失。
(3)測試人員的業(yè)務(wù)領(lǐng)域知識缺乏,無法對不同業(yè)務(wù)領(lǐng)域的系統(tǒng)進(jìn)行有效的測試。
(4)安全測試人員在測試過程中,過分依賴自動化測試工具,自動化測試工具通常只能覆蓋傳統(tǒng)通用型漏洞諸如sql注入,跨站腳本攻擊等,不能覆蓋系統(tǒng)業(yè)務(wù)邏輯相關(guān)漏洞如越權(quán)類,篡改類漏洞。
上述問題的存在,導(dǎo)致安全測試的測試效率和結(jié)果難以保證。業(yè)務(wù)安全測試亟需一套有效的行之有效的測試方法,既能規(guī)范測試過程,又實現(xiàn)知識共享和復(fù)用。
PTES(Penetration Testing Execution Standard)標(biāo)準(zhǔn)是一個旨在為企業(yè)和安全服務(wù)提供商提供的執(zhí)行滲透測試的通用語言和范圍的標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)定義的滲透測試過程環(huán)節(jié)包含7個階段:前期交互階段、情報搜集階段、威脅建模階段、漏洞分析階段、滲透攻擊階段、滲透測試階段、撰寫報告階段。但企業(yè)內(nèi)部的業(yè)務(wù)安全測試與滲透測試存在區(qū)別的,體現(xiàn)在三個方面:
滲透測試假定測試人員是在對目標(biāo)系統(tǒng)一無所知的狀態(tài)下進(jìn)行測試工作,除知道目標(biāo)的基本范圍外,所有的信息都依賴測試人員自行發(fā)掘。主要是模擬來自互聯(lián)網(wǎng)的攻擊者,讓用戶了解自己系統(tǒng)對外來攻擊者的真實安全情況。而企業(yè)內(nèi)部的業(yè)務(wù)安全測試假定測試人員是對目標(biāo)系統(tǒng)的比較了解的情況下進(jìn)行測試工作,如測試范圍、業(yè)務(wù)功能,測試相關(guān)的信息都可在前期與系統(tǒng)開發(fā)維護(hù)人員溝通獲取,主要目的是為檢測系統(tǒng)功能在實現(xiàn)過程中是否由于邏輯不嚴(yán)謹(jǐn)而引入安全漏洞。
滲透測試的目的除發(fā)現(xiàn)目標(biāo)系統(tǒng)存在的漏洞外,還需利用目標(biāo)系統(tǒng)安全漏洞,真正入侵系統(tǒng)當(dāng)中,獲得訪問控制權(quán)。而企業(yè)內(nèi)部的業(yè)務(wù)安全測試只需發(fā)現(xiàn)業(yè)務(wù)漏洞,通過一定的手段證明漏洞存在,并不需要利用漏洞入侵系統(tǒng)。
攻擊者對于目標(biāo)所進(jìn)行的滲透測試一般是沒有時間限制的,而企業(yè)內(nèi)部的業(yè)務(wù)安全測試一般是遵循著項目管理的原則,有明確的起始時間。
業(yè)務(wù)安全測試和滲透測試的差異,使得業(yè)務(wù)安全測試無法復(fù)用滲透測試的流程。本文將業(yè)務(wù)安全測試過程劃分為測試計劃、測試設(shè)計、測試執(zhí)行、測試總結(jié)四個階段,每個測試階段對應(yīng)著不同的子任務(wù)。在這四個階段的測試過程中組織級的資產(chǎn):業(yè)務(wù)風(fēng)險點知識庫、漏洞分類標(biāo)準(zhǔn)、漏洞管理系統(tǒng)、漏洞分級標(biāo)準(zhǔn)提供基礎(chǔ)支撐。
圖1 業(yè)務(wù)安全測試流程
在業(yè)務(wù)安全測試實施前,需要進(jìn)行嚴(yán)謹(jǐn)?shù)挠媱?,包括:明確業(yè)務(wù)安全測試的范圍,評估測試工作量,測試的方法、測試的工具、測試人員和測試時間計劃、測試通過的標(biāo)準(zhǔn)、測試過程中可能存在的風(fēng)險和應(yīng)對措施。
業(yè)務(wù)安全測試設(shè)計階段,其核心的工作就是業(yè)務(wù)安全測試用例設(shè)計,業(yè)務(wù)安全測試用例設(shè)計的質(zhì)量關(guān)系到業(yè)務(wù)安全測試執(zhí)行的效果。本文第四章提出了一種基于業(yè)務(wù)風(fēng)險點分析的業(yè)務(wù)安全測試方法,通過在構(gòu)建業(yè)務(wù)風(fēng)險點知識庫的基礎(chǔ)上,對被測系統(tǒng)需求采用分而治之的結(jié)構(gòu)化分析方法,按照界面要素、業(yè)務(wù)規(guī)則、業(yè)務(wù)流程這三種類型細(xì)化每個功能的具體組成部分,然后對每個部分在風(fēng)險點知識庫中按圖索驥,形成業(yè)務(wù)安全測試用例。
當(dāng)然業(yè)務(wù)風(fēng)險知識庫的搭建和維護(hù)應(yīng)該是一項常規(guī)的工作,同時業(yè)務(wù)安全測試實施的結(jié)果又會對業(yè)務(wù)風(fēng)險點知識庫的效果進(jìn)行一個反饋,促進(jìn)業(yè)務(wù)風(fēng)險點知識庫的優(yōu)化。
業(yè)務(wù)安全測試執(zhí)行階段,就是按照業(yè)務(wù)安全測試設(shè)計階段編寫的測試用例,逐條進(jìn)行執(zhí)行,如果發(fā)現(xiàn)漏洞,則提交到漏洞管理系統(tǒng)進(jìn)行管理,并對漏洞的修復(fù)情況進(jìn)行跟蹤,在漏洞修復(fù)后進(jìn)行復(fù)測。漏洞應(yīng)該有明確的分類標(biāo)準(zhǔn)和分級標(biāo)準(zhǔn)。漏洞的分類標(biāo)準(zhǔn)在本文3.1中進(jìn)行了說明。
漏洞分級即明確漏洞嚴(yán)重程度劃分的標(biāo)準(zhǔn),為判斷修復(fù)漏洞的優(yōu)先級提供依據(jù)。目前業(yè)界常用的三個漏洞等級劃分模型Common Vulnerability Scoring System(簡稱CVSS)和微軟提出的DREAD模型的思路均是制定業(yè)務(wù)安全漏洞分級相關(guān)的指標(biāo),并對每個指標(biāo)賦值標(biāo)準(zhǔn)的定義和賦予一定的權(quán)重,通過加權(quán)求和計算得分,不同得分區(qū)間對應(yīng)相應(yīng)漏洞級別。
在測試完成后,應(yīng)該及時整理業(yè)務(wù)安全測試數(shù)據(jù),編撰業(yè)務(wù)安全測試總結(jié)報告,重點是識別存在的風(fēng)險,給出明確的結(jié)論。
安全風(fēng)險點知識庫是業(yè)務(wù)安全測試的核心,它基于具體漏洞,從漏洞的角度闡述風(fēng)險。業(yè)務(wù)安全測試風(fēng)險點可以分成風(fēng)險點關(guān)鍵部分和輔助部分,在風(fēng)險點關(guān)鍵部分主要包含風(fēng)險點ID,業(yè)務(wù)安全漏洞類型、漏洞對應(yīng)的具體元素類型,元素類型賦值有三類:界面要素、業(yè)務(wù)規(guī)則、業(yè)務(wù)流程,元素、該風(fēng)險點的來源,也分為三種來源:漏洞知識庫、企業(yè)內(nèi)部的歷史漏洞、專家經(jīng)驗。在風(fēng)險點輔助部分主要包含針對該漏洞的測試方法、測試工具、以及漏洞修復(fù)建議。
對于安全風(fēng)險點知識庫的形式化描述如下,其表現(xiàn)形式為Ri={RIi,VTi,ETi,Ei,Ri,Di,Mi,Ti,Si},其中,RI為風(fēng)險點ID,是業(yè)務(wù)風(fēng)險點的唯一標(biāo)識;VT為業(yè)務(wù)安全漏洞類型,ET為元素類型三元組,其值為界面要素、業(yè)務(wù)規(guī)則和業(yè)務(wù)流程。E為元素,諸如登錄用戶名,R為安全測試風(fēng)險點來源,D為風(fēng)險點描述,M為針對該風(fēng)險點的測試方法,T為測試工具,S為漏洞修復(fù)建議。
表1 風(fēng)險點知識庫結(jié)構(gòu)表
其中業(yè)務(wù)安全漏洞類型需進(jìn)行標(biāo)準(zhǔn)化的定義。目前《GB∕T 33561-2017 信息安全技術(shù)安全漏洞分類》[6]提供了三種類型的漏洞分類方法,第一種是按成因分類;第二種是按空間分類;第三種是按照時間分類。不論采取哪種分類方法,業(yè)務(wù)安全漏洞分類都應(yīng)遵循唯一性原則,即按照分類標(biāo)準(zhǔn),安全漏洞可明確歸屬到某一類,不能同時屬于兩個或以上類別。
綜合分析風(fēng)險點知識庫的來源之一的外部漏洞庫的分類方法,同時考慮元素類型與漏洞類型的適配,本文提出一種新的漏洞類型劃分方法,首先按照表1中的元素類型劃分為界面要素類型、業(yè)務(wù)規(guī)則類型、業(yè)務(wù)流程類型三類,然后針對每個類型按照漏洞影響劃分,如信息泄露漏洞、水平越權(quán)漏洞,如無法按照漏洞影響劃分,則繼續(xù)按照漏洞檢測方法劃分,如暴力破解,如無法按照漏洞檢測方法劃分,則繼續(xù)按照成因劃分,如萬能密碼。漏洞類型劃分示例如圖2所示。
安全風(fēng)險點知識庫的來源主要有三類,一是CNNVD、CNVD、CVE、CWE等漏洞知識庫;二是企業(yè)內(nèi)部的歷史漏洞;三是專家經(jīng)驗。由于內(nèi)部漏洞集和專家經(jīng)驗的成果可以從管理上規(guī)范格式化的描述,統(tǒng)一口徑,并以結(jié)構(gòu)化的形式進(jìn)行存儲管理。本文重點闡述以外部漏洞庫為來源的安全風(fēng)險點知識庫的構(gòu)建。通過對外部公開漏洞庫進(jìn)行網(wǎng)絡(luò)爬取、頁面解析、信息抽取等過程獲取多個數(shù)據(jù)源的漏洞庫數(shù)據(jù),再通過特征提取,制定實體識別的規(guī)則,基于規(guī)則進(jìn)行實體識別,在同一框架規(guī)范下進(jìn)行異構(gòu)數(shù)據(jù)整合加工,生成風(fēng)險點知識庫。圖3展示了該過程。
圖2 業(yè)務(wù)安全漏洞分類示例
圖3 安全風(fēng)險點知識庫構(gòu)建流程
由于外部漏洞庫的信息既有結(jié)構(gòu)化的信息,如編號、漏洞類型等,又有非結(jié)構(gòu)化的文本信息,如漏洞簡介中的文字描述,因此需要從大量信息中識別出在4.1中規(guī)范的風(fēng)險點知識庫的實體。實體識別方法常用的有基于條件隨機場(Conditional Random Field, CRF)的方法、基于規(guī)則的方法,基于統(tǒng)計的方法,文獻(xiàn)[8]提出了基于條件隨機場的漢語詞匯特征研究,文獻(xiàn)[9] 提出一種集規(guī)則方法與統(tǒng)計方法于一體的漢語連動句識別方法。通過對CNNVD、CNVD等漏洞庫中的安全漏洞描述形式的分析,發(fā)現(xiàn)漏洞名稱和漏洞簡介/漏洞描述均遵循一定的規(guī)則,因此采用基于規(guī)則的實體識別方法,同時由于漏洞類型劃分的不一致,并且部分字段無法通過漏洞庫獲取的情況,通過建立實體的字典來進(jìn)行字段的匹配。圖4為安全風(fēng)險點知識庫構(gòu)建過程中的基于規(guī)則的實體識別子流程。
圖4 安全風(fēng)險點知識庫構(gòu)建-實體識別子流程
安全風(fēng)險點知識庫以系統(tǒng)的形式對組織內(nèi)部進(jìn)行展現(xiàn),可以提供知識的檢索和更新等功能,并提供實時可視化交互接口便于在測試用例設(shè)計過程中進(jìn)行測試用例的自動化生成?;诎踩L(fēng)險點知識庫的測試用例設(shè)計包含兩大步驟:業(yè)務(wù)需求結(jié)構(gòu)化分析和安全測試用例自動生成兩個步驟。
業(yè)務(wù)需求結(jié)構(gòu)化分析基于各系統(tǒng)需求文檔完整規(guī)范的假設(shè)。采用自頂向下逐層分解的方式,最終將系統(tǒng)劃分成各個功能/交易。完成功能/交易的拆分后,將功能/交易作為基本分析單位。將基本分析單位的被測內(nèi)容劃分為界面要素、業(yè)務(wù)規(guī)則、業(yè)務(wù)流程三種類型,然后針對這三種類型再細(xì)分到原子級,即分到不可再劃分的程度。該劃分是基于安全領(lǐng)域的“所有用戶輸入不可信”的原則,用戶可控的輸入都是可以篡改的,而業(yè)務(wù)安全漏洞的發(fā)生則是由于篡改而導(dǎo)致的。
表2以一個簡單的登錄功能為例,展示了需求結(jié)構(gòu)化分析的過程示例,表中的元素類型和元素值與本文4.1業(yè)務(wù)測試風(fēng)險點知識庫中的元素類型和元素值含義一致。
表2 需求結(jié)構(gòu)化分析示例
圖5即運用需求結(jié)構(gòu)化分析得到的元素類型和元素值,逐個在業(yè)務(wù)安全風(fēng)險點知識庫中查找對應(yīng)風(fēng)險點,生成測試用例的過程。
圖5 業(yè)務(wù)安全測試用例生成過程
安全測試用例生成基于兩部分的內(nèi)容:需求結(jié)構(gòu)化分析的結(jié)果和安全風(fēng)險點知識庫。
表3 業(yè)務(wù)安全測試用例示例
生成的業(yè)務(wù)安全測試用例就作為業(yè)務(wù)安全測試執(zhí)行的指南,在執(zhí)行結(jié)算若發(fā)現(xiàn)安全漏洞,還可以參考安全風(fēng)險點知識庫中漏洞對應(yīng)的修復(fù)建議。
針對當(dāng)前銀行業(yè)務(wù)系統(tǒng)面臨業(yè)務(wù)安全漏洞攻擊日益增加,內(nèi)部安全測試技能無法有效應(yīng)對的現(xiàn)狀,本文提出一種基于業(yè)務(wù)安全風(fēng)險點的銀行業(yè)務(wù)安全測試方法。對業(yè)務(wù)安全測試流程進(jìn)行了標(biāo)準(zhǔn)化,同時通過搭建業(yè)務(wù)安全風(fēng)險點知識庫為核心的組織級資產(chǎn),結(jié)合結(jié)構(gòu)化需求分析方法,實現(xiàn)測試用例設(shè)計的自動化。
該方法在某國有大型商業(yè)銀行進(jìn)行了實踐,搭建包含459個風(fēng)險點的風(fēng)險點知識庫,在3個測試系統(tǒng)中進(jìn)行試點和使用,生成287個業(yè)務(wù)安全測試用例,發(fā)現(xiàn)安全漏洞19個,其中高危3個,中危7個,低危9個。有效提升業(yè)務(wù)安全測試的效率,降低業(yè)務(wù)安全測試的準(zhǔn)入門檻,同時實現(xiàn)組織級資產(chǎn)的知識共享和復(fù)用。
本研究仍存在待改進(jìn)的地方:一是業(yè)務(wù)安全漏洞分級模型;二是業(yè)務(wù)安全測試執(zhí)行自動化。這也是后續(xù)進(jìn)一步研究方向。
[1]吳迪,馮登國,連一峰,陳愷. 一種給定脆弱性環(huán)境下的安全措施效用評估模型[J]. 軟件學(xué)報,2012,23(7).
[2]Kijsanayot hin P,Hewett R. Analytical approach to attack graph analysis for network security//Proceedings of the 2010 International Conference on Availability,Reliability and Security. Krakow,Poland,2010. Washington,DC,USA: IEEE Computer Society Press,2010:25232.
[3]章麗娟,崔穎,王清賢. 基于AEGM的網(wǎng)絡(luò)攻擊滲透測試預(yù)案生成系統(tǒng)[J]. 計算機工程與設(shè)計,2011,32(4):1254-1259.
[4]何可,李曉紅,馮志勇,AARON Marback. 基于攻擊場景的安全測試生成方法[J]. 天津大學(xué)學(xué)報,2011,44(4):344-352.
[5]吳迪,連一峰,陳愷,劉玉嶺. 一種基于攻擊圖的安全威脅識別和分析方法[J]. 計算機學(xué)報,2012,35(9):1938-1950.
[6]李亮,樓芳. 網(wǎng)絡(luò)滲透測試流程、用例管理和風(fēng)險控制研究[J]. 煤炭技術(shù),2010,29(11):175-176.
[7]GB∕T 33561-2017,信息安全技術(shù)安全漏洞分類[S].
[8]黃定琦,史晟輝. 基于條件隨機場的漢語詞匯特征研究[J]. 計算機應(yīng)用研究,2020,37(6):1724-1728,1754.
[9]劉雯旻,張曉如. 一種基于規(guī)則和統(tǒng)計的連動句識別方法[J]. 電子設(shè)計工程,2017,25(22):18-22.