陳柏政,竇立君
(1.南京林業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院;2.南京林業(yè)大學(xué)網(wǎng)絡(luò)安全和信息化辦公室,江蘇南京 210037)
在當(dāng)今社會(huì),軟件與網(wǎng)絡(luò)安全相關(guān)問題已成為熱門話題。與機(jī)械器材廠商不同,軟件的安全檢測(cè)到目前為止并沒有形成統(tǒng)一標(biāo)準(zhǔn),不同廠商有著不同的檢測(cè)評(píng)估系統(tǒng),導(dǎo)致軟件安全問題層出不窮[1]。這些問題給數(shù)據(jù)安全及人們的生活隱私帶來了極大隱患。
目前針對(duì)軟件安全的研究很多,但是較少有研究對(duì)這些問題及相關(guān)解決方法進(jìn)行總結(jié)?;谏鲜銮闆r,本文通過對(duì)當(dāng)前存在的主要軟件安全問題進(jìn)行總結(jié)分析,并提出相應(yīng)防護(hù)措施與解決方案,如靜態(tài)分析[2]、動(dòng)態(tài)分析[3]、脆弱性評(píng)估[4]等,這些措施能夠有效應(yīng)對(duì)當(dāng)前主要的軟件安全問題,保障用戶在軟件使用過程中的安全性。最后分析了未來軟件安全可能面臨的挑戰(zhàn),并針對(duì)這些問題提出可能的應(yīng)對(duì)方法。
互聯(lián)網(wǎng)興起初期,公司缺乏完善的管理體系,早期的軟件安全問題大多是由于安全加密系統(tǒng)不完善或技術(shù)人員素質(zhì)不高引起的。
首先,互聯(lián)網(wǎng)公司自身存在的管理問題是軟件安全問題產(chǎn)生的主要原因之一。早在1986 年,世界上第一個(gè)計(jì)算機(jī)木馬病毒[5]就已出現(xiàn),并且隨著互聯(lián)網(wǎng)的發(fā)展,第三代木馬病毒兼具偽裝和傳播兩種特征,并結(jié)合TCP/IP 網(wǎng)絡(luò)技術(shù)[6]四處傳播。早期關(guān)于網(wǎng)絡(luò)安全的研究尚處于空白,殺毒軟件與防火墻技術(shù)[7]尚未成熟,導(dǎo)致了木馬病毒的泛濫。
其次,用戶安全意識(shí)較差下也是早期軟件安全問題頻發(fā)的主要原因之一。早期的用戶通常把自己的軟件賬戶密碼設(shè)為類似“123456”的簡(jiǎn)單密碼,黑客只需用窮舉法即能破解這些密碼。此外,某些企業(yè)也缺乏對(duì)技術(shù)人員安全意識(shí)方面的培訓(xùn),在進(jìn)行企業(yè)機(jī)密文件傳輸時(shí),有些技術(shù)人員仍使用保密性一般的郵箱,導(dǎo)致企業(yè)泄密問題頻繁發(fā)生。
此外,國家早期也缺乏針對(duì)軟件安全問題相關(guān)的法律法規(guī),因此很多流氓軟件[8]趁機(jī)大肆傳播。流氓軟件是介于病毒與正規(guī)軟件之間的一種軟件,這些軟件可能不會(huì)給用戶計(jì)算機(jī)造成直接的破壞,但會(huì)嚴(yán)重影響用戶體驗(yàn)。其管理難點(diǎn)并不在于難以發(fā)現(xiàn)與查殺,而是其模糊的定義標(biāo)準(zhǔn),法律法規(guī)與行業(yè)規(guī)范的缺失給了流氓軟件可乘之機(jī)。我國尚未有完善的法律法規(guī)對(duì)流氓軟件進(jìn)行管理約束,所以流氓軟件至今仍是一個(gè)難以解決的問題。
如今互聯(lián)網(wǎng)公司都對(duì)自身的管理體系進(jìn)行了完善,普遍擁有嚴(yán)格的管理制度,并且也會(huì)對(duì)工程師及開發(fā)人員進(jìn)行全面、嚴(yán)格的安全意識(shí)培訓(xùn),但軟件安全問題仍然沒有顯著減少,利用互聯(lián)網(wǎng)進(jìn)行的違法活動(dòng)相較之前甚至更加猖狂。主要原因在于廠商在完善其安全防護(hù)系統(tǒng)的同時(shí),黑客群體也具有了更加多樣化的攻擊手法和工具。
網(wǎng)絡(luò)空間的開放性也為軟件安全帶來了極大隱患。人工智能與大數(shù)據(jù)的發(fā)展使網(wǎng)絡(luò)主體之間需要傳輸更多信息,令黑客的攻擊更容易實(shí)現(xiàn)。
軟件攻擊[9]手段日益多樣化,要達(dá)到某一目的的軟件攻擊行為也并不是單一的,本節(jié)將結(jié)合軟件攻擊對(duì)象簡(jiǎn)述主要軟件攻擊方式的原理。根據(jù)軟件攻擊對(duì)象,可將軟件攻擊類型分為6 種,具體見表1。
Table 1 Software attack classification表1 軟件攻擊分類
如表1 所示,軟件攻擊技術(shù)主要包括反匯編[10]和運(yùn)行時(shí)內(nèi)存監(jiān)控[11]兩種。
反匯編攻擊的原理是使用一段特殊構(gòu)造的代碼欺騙反匯編工具,使其產(chǎn)生錯(cuò)誤的程序代碼,其目的是拖延軟件分析師對(duì)病毒的解析進(jìn)程,為病毒的變種爭(zhēng)取時(shí)間,使該病毒的解密算法更難被解析出來。
運(yùn)行時(shí)內(nèi)存監(jiān)控指對(duì)內(nèi)存發(fā)起的攻擊方式,主要通過耗盡資源、軟件故障、物理損壞等方式達(dá)到攻擊目的。其中資源耗盡是最常用的攻擊方式,其原理是通過對(duì)用戶主機(jī)內(nèi)存不斷發(fā)起大量攻擊,導(dǎo)致其主機(jī)內(nèi)存耗盡或CPU 被應(yīng)用程序占滿,從而無法提供網(wǎng)絡(luò)服務(wù)。目前最難防御的內(nèi)存攻擊方式為分布式拒絕服務(wù)攻擊(Distributed Denial of Service Attack,DDoS)[12]。
軟件攻擊和軟件防御技術(shù)是相輔相成的,本節(jié)將簡(jiǎn)述針對(duì)反匯編與內(nèi)存攻擊的軟件防御技術(shù)原理。
目前所使用的主要的防反匯編技術(shù)是代碼混淆技術(shù)[13],其原理是使代碼共享一條指令代碼,從而使共享段的代碼可被不同的指令控制流調(diào)用。其目的是混淆反匯編得到的代碼,使黑客由反匯編得到錯(cuò)誤代碼,以此達(dá)到保護(hù)軟件的目的。
由于DDoS 攻擊發(fā)起成本低、攻擊威力大,到目前為止針對(duì)其防御仍是一個(gè)世界級(jí)的難題。目前主要的緩解DDoS 攻擊的方式是加強(qiáng)DDoS 攻擊檢測(cè),保證能在第一時(shí)間發(fā)現(xiàn)DDoS 攻擊,從而盡快更新安全補(bǔ)丁,以減少損失。Huang 等[14]對(duì)DDoS 的攻擊結(jié)構(gòu)進(jìn)行分析,為針對(duì)DDoS 攻擊的防御策略優(yōu)化設(shè)計(jì)提供了建議;Alzahrani 等[15]提出一種用于檢測(cè)DDoS 攻擊的系統(tǒng),其與基于特征和神經(jīng)網(wǎng)絡(luò)的檢測(cè)方法相比,具有更高的檢測(cè)率與檢測(cè)精度。
2.1.1 軟件漏洞
軟件漏洞是當(dāng)前軟件安全面臨的最大挑戰(zhàn)。目前比較常見的軟件漏洞大致可分為緩沖區(qū)溢出漏洞[16]、整數(shù)溢出漏洞[17]、邏輯錯(cuò)誤漏洞等[18],下面將從3 個(gè)方面對(duì)軟件漏洞問題進(jìn)行具體分析。
(1)緩沖區(qū)溢出。在軟件開發(fā)過程中,開發(fā)人員通常會(huì)預(yù)先分配出一個(gè)臨時(shí)空間用于存儲(chǔ)特殊信息,即緩沖區(qū)。向緩沖區(qū)中輸入數(shù)據(jù)時(shí),如果數(shù)據(jù)過大,則會(huì)溢出緩沖區(qū),覆蓋靠近該緩沖區(qū)內(nèi)存上存儲(chǔ)的合法數(shù)據(jù)。在理想情況下,程序會(huì)檢查數(shù)據(jù)長(zhǎng)度,不允許開發(fā)者輸入超過緩沖區(qū)長(zhǎng)度的字符。但實(shí)際上,大多數(shù)程序都會(huì)假設(shè)已輸入數(shù)據(jù)與緩沖區(qū)的空間大小匹配,并且不作檢查。由于C/C++語言在編譯時(shí),不會(huì)對(duì)數(shù)組及指針自動(dòng)進(jìn)行邊界檢查,使得編譯時(shí)很難發(fā)現(xiàn)程序中的漏洞,所以采用C/C++編寫的程序中往往存在緩沖區(qū)溢出漏洞。下面給出一個(gè)經(jīng)典的緩沖區(qū)溢出漏洞的例子。
例子中的函數(shù)p()通過strcpy 函數(shù)將字符串b 直接拷貝給字符數(shù)組c,在執(zhí)行這段代碼時(shí)并沒有進(jìn)行任何判斷,最后執(zhí)行的結(jié)果是程序崩潰。
黑客利用緩沖區(qū)溢出漏洞發(fā)起攻擊,輸入超過緩沖區(qū)長(zhǎng)度的數(shù)據(jù),使緩沖區(qū)溢出,進(jìn)而破壞程序的堆棧。之后的攻擊一般分為兩種,一種是直接使程序崩潰,拒絕服務(wù)請(qǐng)求,另一種是在函數(shù)返回時(shí)改變函數(shù)返回的地址,使程序跳轉(zhuǎn)到一個(gè)任意的地址,執(zhí)行黑客輸入的惡意代碼。緩沖區(qū)溢出漏洞攻擊的目的大多是獲取某些具有特權(quán)的程序控制權(quán),從而對(duì)整個(gè)主機(jī)進(jìn)行操控。
(2)整數(shù)溢出。整數(shù)溢出是在執(zhí)行程序過程中,計(jì)算得到的結(jié)果超過了存儲(chǔ)結(jié)果位向量所能表達(dá)的最大整數(shù)范圍。由于整數(shù)變量存在上界和下界,整數(shù)溢出會(huì)出現(xiàn)上溢和下溢兩種情況。上溢是指若計(jì)算結(jié)果超過整數(shù)變量的上界,計(jì)算結(jié)果就會(huì)由本來的一個(gè)極大值變?yōu)橐粋€(gè)極小值或零,下溢則反之。整數(shù)溢出漏洞通常是由有符號(hào)整數(shù)之間的混合使用或開發(fā)人員對(duì)數(shù)據(jù)運(yùn)算邊界問題的疏忽引起的。
黑客往往會(huì)利用整數(shù)溢出漏洞發(fā)起針對(duì)代幣資產(chǎn)的攻擊,在攻擊時(shí)向賬戶中轉(zhuǎn)入一個(gè)數(shù)額巨大的代幣量,使其超出軟件中整數(shù)類型的最大數(shù)值,從而以極小甚至零代價(jià)得到高額利潤(rùn)。
(3)邏輯錯(cuò)誤。常見的邏輯漏洞有越權(quán)訪問、密碼找回邏輯漏洞、支付邏輯漏洞、多線程條件競(jìng)爭(zhēng)漏洞等,這些漏洞大多是由于程序本身邏輯不嚴(yán)謹(jǐn)造成的。
2.1.2 軟件安全設(shè)計(jì)缺陷
軟件安全設(shè)計(jì)是指開發(fā)人員通過設(shè)計(jì)各種安全機(jī)制預(yù)防軟件可能遭受的攻擊。
首先,由于當(dāng)下激烈的商業(yè)競(jìng)爭(zhēng)環(huán)境,比起質(zhì)量安全,很多廠商更注重軟件開發(fā)速度,導(dǎo)致軟件在開發(fā)過程中往往會(huì)倉促完成安全設(shè)計(jì)甚至舍棄安全設(shè)計(jì),轉(zhuǎn)而選擇在軟件發(fā)布后不斷發(fā)布補(bǔ)丁來維護(hù)軟件安全,即penetrate-andpatch[19]方法。這種方法可讓廠商更好地把握住商業(yè)機(jī)會(huì),但會(huì)為軟件的長(zhǎng)久安全帶來隱患,等黑客發(fā)起攻擊時(shí)才進(jìn)行補(bǔ)丁研發(fā)會(huì)對(duì)軟件安全造成極大威脅,從而嚴(yán)重破壞用戶的使用體驗(yàn)。
其次,軟件安全設(shè)計(jì)上的缺陷不同于軟件本身出現(xiàn)的漏洞,后者可由自動(dòng)代碼審查工具進(jìn)行篩查,而前者往往存在于軟件架構(gòu)設(shè)計(jì)中,這些錯(cuò)誤無法由代碼審查工具掃描發(fā)現(xiàn)。所以軟件安全設(shè)計(jì)往往交由專門的人員進(jìn)行研究,但由于技術(shù)門檻較高,很多企業(yè)缺乏相應(yīng)的人員,使得軟件安全設(shè)計(jì)一直是一個(gè)難以解決的問題。
目前常見的軟件安全設(shè)計(jì)缺陷主要有密碼技術(shù)使用不當(dāng)、結(jié)構(gòu)性安全薄弱等。開發(fā)者有時(shí)會(huì)將過多精力投入到密碼算法設(shè)計(jì)上,而忽略了其他安全性問題。即便如此,在密碼技術(shù)的使用上也存在很多問題。有的開發(fā)者在進(jìn)行安全設(shè)計(jì)時(shí)會(huì)選用不當(dāng)?shù)拿艽a技術(shù),這不僅會(huì)為軟件安全架構(gòu)帶來隱患,也為日后軟件的維護(hù)與修復(fù)工作帶來很多問題。對(duì)于結(jié)構(gòu)性安全方面的問題,通常都是違反了軟件安全設(shè)計(jì)的四大原則,具體如下:
(1)過大的攻擊面[20]。黑客往往耗費(fèi)大量時(shí)間和精力在信息收集上,而過大的攻擊面給了黑客更好的收集信息的機(jī)會(huì)。
(2)在過高的權(quán)限級(jí)別上運(yùn)行進(jìn)程。為了維護(hù)方便,只用一個(gè)root 賬戶操作所有系統(tǒng),但是黑客只要成功攻擊了任意一個(gè)系統(tǒng),就相當(dāng)于拿到了所有系統(tǒng)權(quán)限。
(3)沒有進(jìn)行縱深防御[21]。開發(fā)者將所有精力放在一種防御手段上,然而即使防御技術(shù)再先進(jìn),也會(huì)有出現(xiàn)0day 漏洞[22]的可能性,僅僅一層防御無法確保軟件安全,黑客在攻破一層防御系統(tǒng)之后即可直接破壞整個(gè)系統(tǒng)。
(4)故障安全缺陷。黑客在信息收集階段往往會(huì)對(duì)系統(tǒng)輸入異常的信息,若系統(tǒng)在故障安全方面存在缺陷,黑客則有可能收集到關(guān)鍵的信息和數(shù)據(jù),為下一步攻擊作好準(zhǔn)備[23]。
由于開發(fā)者在進(jìn)行軟件安全設(shè)計(jì)時(shí)往往會(huì)忽視以上問題,導(dǎo)致軟件在結(jié)構(gòu)性安全方面存在很大漏洞,從而為之后的軟件開發(fā)帶來隱患。
2.1.3 軟件安全評(píng)估系統(tǒng)問題
軟件漏洞是不可避免的,因此對(duì)軟件的安全評(píng)估將起到至關(guān)重要的作用。軟件安全評(píng)估是對(duì)軟件安全的評(píng)價(jià)度量,對(duì)軟件中可能存在的安全漏洞作出預(yù)測(cè),并提出軟件可能遭受的攻擊,從而作好預(yù)防措施。但由于當(dāng)今軟件規(guī)模不斷增長(zhǎng),邏輯功能也日漸復(fù)雜,這意味著對(duì)軟件進(jìn)行安全評(píng)估的成本不斷增加。而且由于代碼復(fù)雜度過高,在對(duì)代碼進(jìn)行安全分析時(shí),許多針對(duì)大規(guī)模軟件進(jìn)行分析的技術(shù)對(duì)上下文、控制流及路徑信息進(jìn)行了簡(jiǎn)化,從而降低了計(jì)算復(fù)雜度,但同時(shí)也意味著分析結(jié)果的精度會(huì)大幅下降。就目前而言,想要研發(fā)出一個(gè)成本低廉且精度較高的軟件安全評(píng)估系統(tǒng)十分困難。
2.2.1 針對(duì)軟件漏洞的防護(hù)
目前針對(duì)大部分軟件漏洞,通用的防護(hù)措施分為漏洞挖掘[24]、漏洞分析[25]及漏洞利用緩解[26]3 個(gè)階段。下面將從這3 個(gè)方面總結(jié)國內(nèi)外在軟件漏洞防護(hù)方面的研究進(jìn)展。
軟件漏洞挖掘的目的是為了確認(rèn)軟件漏洞的存在。早在20 世紀(jì)70 年代,美國南加州大學(xué)就發(fā)起了保護(hù)分析項(xiàng)目(Protection Analysis Project,PA)研究計(jì)劃,針對(duì)操作系統(tǒng)的安全漏洞進(jìn)行分析與研究[27],以提高軟件的安全性。之后人們開始對(duì)軟件源代碼進(jìn)行分析,檢測(cè)在軟件中是否存在可能被利用的漏洞,即軟件漏洞挖掘。軟件漏洞挖掘技術(shù)可大致分為4 種,分別是基于源代碼的漏洞挖掘、基于補(bǔ)丁對(duì)比的漏洞挖掘、基于模糊測(cè)試的漏洞挖掘與基于代碼特征的漏洞挖掘。
每種技術(shù)同樣也存在不足之處,如基于源代碼的漏洞挖掘技術(shù)只適用于開源軟件或開發(fā)者自身進(jìn)行的測(cè)試,由于其要求擁有軟件源代碼,所以并不適用于如Windows 旗下的Office 等閉源軟件[28]。基于補(bǔ)丁對(duì)比的軟件漏洞挖掘技術(shù),對(duì)比方法主要分為基于文本的對(duì)比、基于匯編指令的對(duì)比和基于結(jié)構(gòu)化的對(duì)比,但由于其精度較低、復(fù)雜度較高,還有很大的改進(jìn)空間。基于模糊測(cè)試的漏洞挖掘技術(shù)原理是輸入非正常數(shù)據(jù)之后對(duì)系統(tǒng)進(jìn)行檢測(cè),再發(fā)現(xiàn)軟件漏洞,因此需要大量測(cè)試用例。目前這種方法只適用于小型程序或代碼片段中,如何生成測(cè)試用例是模糊測(cè)試研究中的一個(gè)難點(diǎn)?;诖a特征的漏洞挖掘技術(shù)相較于其他方法可適用于較復(fù)雜的大規(guī)模軟件,但有較高的誤報(bào)率,所以十分依賴于人工篩選。Wang 等[29]提出一種基于動(dòng)靜結(jié)合的Android 應(yīng)用漏洞挖掘方法,該方法相較于靜態(tài)分析誤報(bào)率更低,提高了漏洞挖掘的穩(wěn)定性和準(zhǔn)確度,但其分析框架應(yīng)用范圍較窄;Zhang 等[30]提出基于Fuzzing 技術(shù)的網(wǎng)絡(luò)協(xié)議自動(dòng)漏洞挖掘技術(shù),解決了人工分析效率低下的問題,但仍然沒有解決如何生成高質(zhì)量測(cè)試用例的問題。
在完成軟件漏洞挖掘之后,下一步是對(duì)發(fā)現(xiàn)的漏洞進(jìn)行分析。通過軟件漏洞分析技術(shù),對(duì)軟件漏洞形成原因進(jìn)行研究分析,最終目的是判斷出軟件漏洞類型及其具體位置。吳世忠等[31]將當(dāng)前的軟件漏洞安全分析技術(shù)分為軟件架構(gòu)分析技術(shù)、代碼靜態(tài)分析技術(shù)、代碼動(dòng)態(tài)分析技術(shù)、動(dòng)靜結(jié)合的分析技術(shù)和漏洞定位技術(shù)共5 種,其中軟件架構(gòu)分析技術(shù)尚未成熟,而代碼的靜態(tài)與動(dòng)態(tài)分析技術(shù)已進(jìn)入瓶頸期,所以動(dòng)靜結(jié)合的分析技術(shù)將成為未來的研究重點(diǎn)。Almorsy 等[32]研究了一種自動(dòng)化的漏洞分析工具,提高了漏洞分析的覆蓋率與正確率,但在速度上仍需改進(jìn);Yan 等[33]介紹了一種新的PHP 代碼靜態(tài)漏洞分析算法,該算法有效解決了傳統(tǒng)方法中誤報(bào)率高的問題,但由于缺少描述所有Web 應(yīng)用程序漏洞的通用模型,其誤報(bào)率難以進(jìn)一步降低。
在鎖定軟件漏洞的位置及類型后,開始對(duì)利用該軟件漏洞發(fā)起的攻擊進(jìn)行緩解,目前可將攻擊方式分為面向數(shù)據(jù)流與面向控制流兩種。George 等[34]提出一種基于圖的工業(yè)物聯(lián)網(wǎng)安全框架漏洞利用方法,可將安全問題表述為圖論問題,為網(wǎng)絡(luò)風(fēng)險(xiǎn)評(píng)估提供了一個(gè)安全框架,但是目前缺少針對(duì)成本模型的泛用性標(biāo)準(zhǔn),難以對(duì)漏洞進(jìn)行修補(bǔ);魏強(qiáng)等[35]總結(jié)了軟件漏洞利用緩解技術(shù),主要包括堆保護(hù)、地址隨機(jī)化、沙箱保護(hù)等,這些技術(shù)可以有效化解大部分面向控制流的攻擊,但其不足之處在于基于數(shù)據(jù)流的攻擊很難進(jìn)行防御。
2.2.2 完善軟件安全設(shè)計(jì)
為了規(guī)范軟件安全設(shè)計(jì),開發(fā)者在軟件開發(fā)過程中必須遵守軟件安全設(shè)計(jì)的5 項(xiàng)原則[36],包括保護(hù)最薄弱環(huán)節(jié)、縱深防御、故障安全、最小特權(quán)與分隔原則。
保護(hù)最薄弱環(huán)節(jié)即對(duì)軟件進(jìn)行安全分析時(shí),要重點(diǎn)關(guān)注系統(tǒng)中最薄弱的地方;縱深防御即開發(fā)者應(yīng)實(shí)施多重防護(hù)措施來防御可能的攻擊;故障安全即需要開發(fā)者考慮到可能出現(xiàn)的各種故障,并在開發(fā)過程中提前設(shè)計(jì)好針對(duì)系統(tǒng)故障的安全保護(hù)機(jī)制;最小特權(quán)是軟件安全設(shè)計(jì)中最基本的原則,即將用戶特權(quán)限定在最小范圍內(nèi),在保證用戶正常進(jìn)行管理操作的同時(shí),不能越權(quán)使用系統(tǒng);分隔原則是指將系統(tǒng)分隔為盡可能獨(dú)立的系統(tǒng)單元,如果系統(tǒng)一部分出現(xiàn)了安全隱患,也不會(huì)對(duì)其他部分造成較大影響。
除傳統(tǒng)的5 項(xiàng)安全設(shè)計(jì)原則外,目前提出了更多需要遵守的規(guī)范,如默認(rèn)設(shè)置安全性、不信任第三方系統(tǒng)、公開設(shè)計(jì)、簡(jiǎn)化系統(tǒng)設(shè)計(jì)、使用白名單等。Sion 等[37]提出一種基于風(fēng)險(xiǎn)的設(shè)計(jì)安全性分析方法,該方法提出的威脅模型解決了系統(tǒng)設(shè)計(jì)與具體數(shù)據(jù)脫節(jié)的問題,但其無法隨著時(shí)間推移動(dòng)態(tài)更新安全目錄,時(shí)效性不強(qiáng)。
2.2.3 改善軟件安全評(píng)估系統(tǒng)
軟件安全評(píng)估系統(tǒng)是修復(fù)軟件漏洞的前提,其旨在盡量發(fā)現(xiàn)軟件可能存在的安全風(fēng)險(xiǎn),提高軟件的安全標(biāo)準(zhǔn),在進(jìn)行安全評(píng)估時(shí)應(yīng)從需求、結(jié)構(gòu)設(shè)計(jì)、編程、詳細(xì)設(shè)計(jì)、編碼、測(cè)試等方面對(duì)軟件進(jìn)行完整的安全性分析。具體如表2 所示。
Table 2 Software security assessment system表2 軟件安全評(píng)估系統(tǒng)
未來在軟件的不斷發(fā)展過程中,軟件交互與協(xié)同會(huì)更加頻繁,軟件功能會(huì)更加智能化,其結(jié)構(gòu)也會(huì)更加復(fù)雜,這意味著軟件安全會(huì)面臨更嚴(yán)峻的挑戰(zhàn)。
2010 年6 月,“震網(wǎng)”病毒[38]首次被檢測(cè)發(fā)現(xiàn),被稱為有史以來最復(fù)雜的網(wǎng)絡(luò)武器。該病毒具有極強(qiáng)的傳播性、隱藏性和破壞力,會(huì)定向攻擊核電站、水壩及國家電網(wǎng),危害極大。之后,2011 年的“Duqu”病毒[39]和2012 年的“沙蒙”病毒[40]等超級(jí)病毒的相繼出現(xiàn)也意味著針對(duì)工業(yè)控制系統(tǒng)的大規(guī)模復(fù)雜攻擊已成為現(xiàn)實(shí)。這些攻擊與以往攻擊的不同之處在于,傳統(tǒng)的安全攻擊普遍是利用通用軟件的漏洞發(fā)起的,其目的大多是通過盜取用戶隱私信息謀取非法利益,而以“震網(wǎng)”病毒為代表的攻擊則是針對(duì)行業(yè)專用軟件及內(nèi)部專用網(wǎng)絡(luò),對(duì)傳統(tǒng)的軟件安全觀念造成了很大沖擊。攻擊發(fā)起者不再是一般的個(gè)人或組織,其攻擊目的上升到針對(duì)國家的關(guān)鍵敏感行業(yè),這可能成為未來軟件攻擊新的發(fā)展趨勢(shì)。一旦這種復(fù)雜的網(wǎng)絡(luò)攻擊開始大規(guī)模出現(xiàn),傳統(tǒng)的軟件安全防御措施將很難再發(fā)揮作用,屆時(shí)需要提出全新的軟件安全理念以支撐新的軟件安全防御技術(shù)的研究。
“震網(wǎng)”病毒的出現(xiàn)意味著傳統(tǒng)的工業(yè)控制網(wǎng)絡(luò)系統(tǒng)不再安全,未來應(yīng)更加關(guān)注專業(yè)系統(tǒng)及專業(yè)網(wǎng)絡(luò)的安全檢測(cè)。由于現(xiàn)場(chǎng)總線控制系統(tǒng)中的組態(tài)軟件等行業(yè)軟件產(chǎn)品被少數(shù)公司所壟斷,如西門子公司的SIMATIC WinCC 系統(tǒng),即“震網(wǎng)”病毒攻擊的主要目標(biāo),伊朗將其廣泛應(yīng)用于基礎(chǔ)國防設(shè)施中,所以伊朗成為遭受攻擊損失最慘重的國家。因此,工業(yè)控制網(wǎng)絡(luò)安全不能依賴于單一的行業(yè)軟件。
深度學(xué)習(xí)的不斷發(fā)展也為軟件安全防護(hù)提供了新的實(shí)現(xiàn)方法。如鄭煒等[41]采用深度文本挖掘模型TextCNN與TextRNN 構(gòu)建安全缺陷報(bào)告預(yù)測(cè)模型,以輔助發(fā)現(xiàn)軟件測(cè)試中的安全問題。
此外,國家應(yīng)加強(qiáng)對(duì)軟件安全的管控,大力發(fā)展漏洞挖掘技術(shù)相關(guān)研究,對(duì)重要的軟件系統(tǒng)使用自主可控的信息安全技術(shù)。同時(shí)國家之間應(yīng)加強(qiáng)交流合作,進(jìn)行網(wǎng)絡(luò)戰(zhàn)的應(yīng)對(duì)演習(xí),成立軟件安全應(yīng)急組織,研究針對(duì)大規(guī)模攻擊的應(yīng)急措施。如果有高危的軟件安全問題出現(xiàn),能夠及時(shí)發(fā)現(xiàn)并加以應(yīng)對(duì),從而將危害降到最低。
隨著如今軟件逐漸朝著智能化與自動(dòng)化方向發(fā)展,軟件應(yīng)用范圍已從日常生活擴(kuò)展到航空航天、核技術(shù)控制等重要領(lǐng)域,但是軟件安全問題也日益增加,傳統(tǒng)的安全防護(hù)措施已逐漸無法應(yīng)對(duì)新型的軟件安全攻擊。本文通過對(duì)主要軟件安全問題及其應(yīng)對(duì)措施的分析,總結(jié)了軟件安全問題現(xiàn)狀,探討了未來可能會(huì)出現(xiàn)的軟件安全問題及相應(yīng)解決措施。不僅公民應(yīng)提升自身的安全意識(shí),而且企業(yè)和國家也要加強(qiáng)軟件安全管理,做好安全檢測(cè)工作,做到防患于未然。針對(duì)大規(guī)模復(fù)雜攻擊的防護(hù)措施將會(huì)是未來研究的重點(diǎn),對(duì)于所有的軟件企業(yè)而言,這都是一個(gè)新的挑戰(zhàn),沒有很多成功經(jīng)驗(yàn)可以借鑒,所以需要針對(duì)相關(guān)問題進(jìn)行深入探索與研究。