王 帆 洪 流 顧 欣
(工業(yè)和信息化部電子第五研究所 廣州 510610)
2018年4月20日,在北京召開了全國網(wǎng)絡安全和信息化工作會議,在會議上,習總書記指出:“信息化為中華民族帶來了千載難逢的機遇”,“沒有網(wǎng)絡安全就沒有國家安全,就沒有經(jīng)濟社會穩(wěn)定運行,廣大人民群眾利益也難以得到保障”[1].軟件,作為信息系統(tǒng)的重要組成部分,作為信息化發(fā)展的重要基石,軟件是否安全,直接決定了各類信息系統(tǒng)是否安全.信息系統(tǒng)安全了,信息產(chǎn)業(yè)才能健康穩(wěn)定發(fā)展.因此,軟件安全,對我國信息化產(chǎn)業(yè)的安全健康發(fā)展有十分重要的意義[2].
在考察軟件產(chǎn)品安全性時,需要根據(jù)軟件漏洞掃描、挖掘和滲透測試的結(jié)果,計算得到軟件產(chǎn)品的總體風險值,以對軟件產(chǎn)品的整體漏洞風險情況進行把控[3].但在現(xiàn)有安全測試及滲透測試中,通常僅考慮風險值最高的漏洞,以該漏洞的風險等級作為整個軟件產(chǎn)品的風險等級,而不考慮漏洞數(shù)量對軟件產(chǎn)品漏洞風險的影響;另一方面,現(xiàn)有的風險評估方法中,計算模型過于復雜,評價參考因素過多,評價周期過長,不利于在有限時間內(nèi)了解軟件產(chǎn)品的安全風險[4]情況.因此,本文綜合考慮效率和風險分析等方面因素,提出基于Sigmoid函數(shù)[5]的軟件安全風險評價算法,將軟件產(chǎn)品中的單個漏洞風險與漏洞數(shù)量有機結(jié)合,以此來反映其整體漏洞風險情況.
圖1 Sigmoid函數(shù)曲線圖
Sigmoid函數(shù)是一個在生物學中常見的S型的函數(shù),也稱為S型生長曲線.在信息科學中,由于其單增以及反函數(shù)單增等性質(zhì),Sigmoid函數(shù)常被用作神經(jīng)網(wǎng)絡的閾值函數(shù),將變量映射到0,1之間.
Sigmoid函數(shù)由下列公式定義:
Sigmoid函數(shù)曲線由圖1所示:
由Sigmoid函數(shù)曲線可以看出,在x從0趨近于無窮大的過程中,函數(shù)S(x)的取值從0.5無限趨近于1,因此,當漏洞數(shù)量不斷增大時,可以使用該函數(shù)的修改函數(shù)來表現(xiàn)軟件產(chǎn)品風險值無限接近于當前風險等級風險值上限的情況.
在對Sigmoid函數(shù)曲線進行修改并編制漏洞風險評價公式時,需要按照以下3個原則進行考量:
1) 漏洞風險評價公式應遵循信息安全中的木桶原理,風險值應不低于軟件產(chǎn)品中漏洞風險值最高的數(shù)值[6],當產(chǎn)品中存在漏洞等級為高的漏洞時,產(chǎn)品漏洞風險等級為高,當產(chǎn)品不存在高風險漏洞,僅存在中低風險漏洞時,則產(chǎn)品的漏洞風險等級為中;
2) 漏洞風險評價公式應考慮到同等級漏洞數(shù)量對整個產(chǎn)品漏洞風險的影響,滿足同等級漏洞越多,產(chǎn)品漏洞風險越高的判定原則[7];
3) 曲線的圖形、曲率應盡可能貼近真實風險情況,鑒于漏洞的數(shù)量只能為整數(shù),所以風險值變化趨勢圖應由曲線變?yōu)橛蓴?shù)個點構(gòu)成的折線.
按照CVE中對漏洞風險值與風險等級的對應關系,當漏洞風險值評分為0~4(不包括4)時,漏洞等級為低;當漏洞風險值評分為4~7(不包括7)時,漏洞等級為中;當漏洞風險值評分為7~10時,漏洞等級為高[8].因此,在以上3個原則和CVE對漏洞等級的評價方法基礎上,確定軟件產(chǎn)品的漏洞風險等級為:當產(chǎn)品中存在高風險漏洞時,產(chǎn)品的漏洞風險等級為高;當產(chǎn)品中不存在高風險漏洞,僅存在中低風險漏洞時,產(chǎn)品的風險等級為中;當產(chǎn)品中僅存在低風險漏洞時,產(chǎn)品的風險等級為低.在不同的風險區(qū)間中,隨著漏洞數(shù)量不斷增大,產(chǎn)品的風險值也在各自的區(qū)間內(nèi)不斷遞增,直到逼近其所屬的風險等級上限.
Sigmoid函數(shù)是在x從0趨近于無窮大的過程中,函數(shù)S(x)的取值從0.5無限趨近于1,其x值的范圍不符合實際漏洞風險情況,在實際漏洞風險分析中,當x=0時,既系統(tǒng)不存在漏洞時,風險值應當為0,因此需要將函數(shù)曲線進行移動,將x=0時的S(x)值變?yōu)?,因此公式改變?yōu)?/p>
此時S1(x)的取值范圍為0無限趨近于0.5,將公式值乘以2以取整,便于漏洞的計算,此時公式改變?yōu)?/p>
此時S2(x)的取值范圍為0無限趨近于1,根據(jù)漏洞風險值取值不低于存在的風險最高漏洞的風險值,不超過當前區(qū)間范圍的原則,需要將S2(x)的取值范圍進行擴充,引入m值,m代表當前系統(tǒng)中存在的漏洞中最高的風險值,因此,對于存在高風險漏洞的系統(tǒng),其漏洞風險值f(x)的取值范圍應為從m無限趨近于10,對于不存在高風險漏洞但存在中風險漏洞的系統(tǒng),其漏洞風險值f(x)的取值范圍應為從m無限趨近于7,對于僅存在低風險漏洞的系統(tǒng),其漏洞風險值f(x)的取值范圍應為從m無限趨近于4.
因此,將漏洞風險評價公式按照風險等級高、中、低3個區(qū)域分別制定各自區(qū)域的公式,其中高風險級別風險值計算公式為
其中,x為高風險漏洞數(shù)量,m為高風險漏洞中最高的風險值,7≤m≤10.高風險級別的產(chǎn)品漏洞風險折線圖如圖2所示(以m=8為例):
圖2 m=8的軟件漏洞風險折線圖
中風險級別風險值計算公式為
其中,x為中風險漏洞數(shù)量,m為中風險漏洞中最高的風險值,4≤m<7.中風險級別的產(chǎn)品漏洞風險折線圖如圖3所示(以m=4為例):
圖3 m=4的軟件漏洞風險折線圖
低風險級別風險值計算公式為
其中,x為低風險漏洞數(shù)量,m為低風險漏洞中最高的風險值,0≤m<4.低風險級別的產(chǎn)品漏洞風險折線圖如圖4所示(以m=2為例):
圖4 m=2的軟件漏洞風險折線圖
根據(jù)3個風險等級的計算公式,可以將掃描出的CVE漏洞的數(shù)量及漏洞中的最高風險值帶入公式進行計算,就可以得出相應模塊的漏洞風險值,便于對軟件產(chǎn)品各模塊代碼的安全性進行比較,從而評判出各模塊代碼的安全狀況.便于開發(fā)人員整體把控軟件產(chǎn)品的安全性,快速定位安全性最差的代碼模塊,提高軟件產(chǎn)品的整體安全狀況.
本文以之前進行過安全測試的某系統(tǒng)為例,在使用市面上某款漏洞掃描軟件進行掃描時,得到的掃描結(jié)論如圖5所示.從中可以看出,風險分數(shù)為1 024時,安全狀態(tài)為極度危險,但無法判斷該系統(tǒng)在極度危險中的危險程度.
圖5 漏洞掃描結(jié)果圖
查看系統(tǒng)中漏洞風險值最高的漏洞情況,如圖6所示:
圖6 最高風險值漏洞情況
從圖6可以看出風險值最高的漏洞,其風險值為9,屬于高風險區(qū)間,因此使用7≤m≤10時的公式進行風險計算.此時根據(jù)漏洞掃描的結(jié)果,x取值為21,計算風險值如下:
最終計算得到結(jié)果:f(x)=9.999 9,約等于最高風險值10.從實際狀況也可以看出,該系統(tǒng)由于存在21個高風險漏洞,且漏洞的風險值很高,因此也處于極度危險的情況,風險計算出的得分與實際情況相符,且該風險值能夠便于管理員更好地了解風險嚴重程度.
隨著信息化發(fā)展的不斷加深,信息安全的重要性也越來越得到社會各界的重視,軟件作為信息化產(chǎn)業(yè)的重要環(huán)節(jié),軟件產(chǎn)品的信息安全也具有十分重要的意義.根據(jù)上述章節(jié)中的軟件漏洞風險計算公式,得到在軟件開發(fā)過程中各模塊代碼的風險情況,便于提高軟件的代碼質(zhì)量,增強軟件安全性.在下一步研究工作中,將對漏洞風險分析公式進行進一步細化,增加同威脅級別的漏洞相關性考量,使公式能夠更加準確地體現(xiàn)和反映代碼的漏洞風險,更好地為國家信息化安全穩(wěn)定發(fā)展服務.