■ 何春江
珠海大橫琴科技發(fā)展有限公司 廣東珠海 519000
JAVA語言作為一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,以其卓越的通用性、高效性和平臺移植性,深受全球眾多企業(yè)的青睞,JAVA源代碼應(yīng)用軟件的產(chǎn)品更是數(shù)不勝數(shù)。
目前黑客的攻擊趨勢從以往的操作系統(tǒng)轉(zhuǎn)向了一般的應(yīng)用軟件,JAVA源代碼應(yīng)用軟件也深受其害。我們的目的就是結(jié)合工具的理論漏洞指標(biāo)和用戶對指標(biāo)的認(rèn)可需求,給用戶提供源代碼安全漏洞掃描,快速鎖定易被利用的安全漏洞,實現(xiàn)軟件安全性的全面提升。
對應(yīng)用程序進行安全漏洞測試伴隨著軟件的整個開發(fā)周期,目的是提高開發(fā)者的安全意識,使開發(fā)者在編寫代碼時就注意一些比較容易出現(xiàn)卻又較易修改的錯誤,解決一些在代碼中的安全隱患,杜絕為黑客留下可乘之機。
本文借助某源代碼安全漏洞靜態(tài)檢測工具,對一個JAVA語言應(yīng)用程序源代碼的案例采用自動化測試手段與人工分析相結(jié)合的方法進行了源代碼安全漏洞掃描靜態(tài)測試。該案例共有JAVA語言源代碼44791行,根據(jù)應(yīng)用程序的特點,同時結(jié)合對用戶需求的調(diào)研分析,針對JAVA語言源代碼的218種安全漏洞進行了測試。
明確了需要測試的內(nèi)容后,即可在源代碼安全漏洞靜態(tài)檢測工具中選擇需要測試的JAVA語言代碼安全漏洞指標(biāo),對被測的JAVA語言應(yīng)用軟件源代碼執(zhí)行安全漏洞掃描。掃描完成后需要根據(jù)安全漏洞指標(biāo)的相關(guān)描述對掃描結(jié)果進行人工分析,排除掃描結(jié)果中的誤報。
源代碼安全漏洞測試的過程主要分為兩個階段,包括測試階段和分析階段。
(1)測試階段。
在測試階段中,針對用戶關(guān)注和問題嚴(yán)重級別高的安全漏洞進行源代碼的安全漏洞測試,目的是發(fā)現(xiàn)問題后,鎖定問題代碼。
(2)分析階段。
在分析階段中,針對測試階段所發(fā)現(xiàn)的問題代碼進行分析和比較,排除誤報問題后分析漏洞代碼產(chǎn)生的原因,比較并對問題代碼進行模擬黑客攻擊的假設(shè),通過對黑客攻擊的分析挖掘解決問題的方法。
本次源代碼安全漏洞測試涵蓋了不檢查循環(huán)條件中的輸入值、跨站腳本、SQL注入、絕對路徑遍歷等218種JAVA安全漏洞類別的內(nèi)容,未發(fā)現(xiàn)代碼注入、命令注入、連接字符串注入等共186種JAVA語言代碼安全漏洞,定位了跨站腳本、SQL注入、不檢查循環(huán)條件中的輸入值等共32種JAVA語言代碼安全漏洞481個。其中:3級高風(fēng)險代碼安全漏洞8個,2級中風(fēng)險代碼安全漏洞31個,1級低風(fēng)險代碼安全漏洞442個。
為了使測試結(jié)果更加具有說服力,體現(xiàn)源代碼安全漏洞測試的作用,本次JAVA語言源代碼安全漏洞測試針對用戶關(guān)注和問題嚴(yán)重級別高的安全漏洞,詳細(xì)分析了問題代碼的數(shù)據(jù)流和控制流,深入理解了黑客攻擊應(yīng)用軟件的方式,突出了被測應(yīng)用軟件在安全方面的脆弱性,使用戶承認(rèn)了安全風(fēng)險的存在,并加強了對源代碼安全漏洞測試的認(rèn)可。
經(jīng)過掃描和分析后的測試結(jié)果,從技術(shù)層面講,都屬于測試角度的分析,因為在整個測試中涵蓋的安全漏洞的風(fēng)險等級都是根據(jù)理論上的嚴(yán)重程度來分類的。基于測試服務(wù)的對象是企業(yè)用戶,所以征求用戶對風(fēng)險級別的意見是源代碼安全漏洞測試一個必不可少的環(huán)節(jié)。
安全漏洞問題嚴(yán)重程度理論分級包括:1級高風(fēng)險(High)、2級中風(fēng)險(Medium)、3級低風(fēng)險(Low)和4級信息風(fēng)險(Information)。用戶的風(fēng)險級別的用戶反饋問題級別和認(rèn)可度分類包括:①類問題反饋級別。風(fēng)險較高,容易被利用且一旦被利用會立即對公司業(yè)務(wù)造成影響的安全漏洞。②類問題反饋級別。風(fēng)險中等,不容易被利用,但一旦被利用會立即對公司業(yè)務(wù)造成影響的安全漏洞。③類問題反饋級別。風(fēng)險較低,不會立即對公司業(yè)務(wù)造成影響的安全漏洞。④類問題反饋級別。無風(fēng)險。
安全漏洞問題嚴(yán)重程度理論分級是業(yè)界專家的一般經(jīng)驗總結(jié),企業(yè)開發(fā)人員和測試人員參與的測試結(jié)果的嚴(yán)重程度和用戶認(rèn)可度的反饋評估則更加符合該企業(yè)的實際。經(jīng)過比較,業(yè)界專家和企業(yè)用戶對JAVA源代碼安全漏洞指標(biāo)的認(rèn)識總體上是一致的,但一些指標(biāo)的關(guān)注程度依然是有所不同的。
(1)緩沖區(qū)溢出漏洞在嚴(yán)重程度的理論分級里屬于高等級漏洞。用戶認(rèn)為源程序?qū)懭刖彌_區(qū)的數(shù)據(jù)基本上都屬于內(nèi)部數(shù)據(jù)類型的轉(zhuǎn)換,又或者環(huán)境變量和配置文件都是項目內(nèi)部使用,不易被黑客利用。
(2)未捕捉的異常處理在問題嚴(yán)重程度理論分級里屬于低風(fēng)險,而在用戶認(rèn)可度里屬于B類問題反饋級別,風(fēng)險中等,不容易被利用,但一旦被利用會立即對公司業(yè)務(wù)造成影響的安全漏洞。用戶認(rèn)為,系統(tǒng)異常報錯信息不明確、沒有捕獲系統(tǒng)異常或沒有處理已捕獲到的異常在實際產(chǎn)品開發(fā)中都是不允許的,因為會降低系統(tǒng)的可維護性,影響產(chǎn)品的服務(wù)質(zhì)量。
(3)弱加密問題在嚴(yán)重程度理論分級里屬于低風(fēng)險的隱私受侵犯,在用戶認(rèn)可度里屬于D類問題反饋級別,無風(fēng)險,用戶方需根據(jù)他們的業(yè)務(wù)來確認(rèn)在實際產(chǎn)品開發(fā)中是否需構(gòu)件或隨機數(shù)生成器來加密。
針對自動化測試工具掃描出來的安全漏洞,通過分析和比較測試角度上漏洞的理論風(fēng)險級別與用戶實際的反饋意見,最終進一步完善測試解決方案和漏洞指標(biāo),以便提供給用戶更加切合實際需求的源代碼安全漏洞測試服務(wù)。
本次技術(shù)研究詳細(xì)分析了問題代碼的數(shù)據(jù)流和控制流,深入理解了黑客攻擊應(yīng)用軟件的方式,突出了被測應(yīng)用軟件在安全方面的脆弱性,得到了用戶的高度認(rèn)可。通過本次技術(shù)研究,進一步提升了JAVA語言源代碼安全漏洞測試的能力,能夠制定出更加符合用戶需求的源代碼安全漏洞測試方案,給企業(yè)用戶提供更加高效實用的軟件安全漏洞測試服務(wù)。