陳波
摘要:隨著計算機網絡技術的不斷發展,軟件在全社會各行業得到了廣泛的應用,很大程度上也提高了企業的生產效率,但是軟件的安全問題也隨著軟件的廣泛應用而漸漸地暴露出來,并且呈現出越來越緊急的態勢,由于軟件存在的安全漏洞被利用最終導致的企業損失的利益問題也是越來越多。基于此,本文提出了基于應用軟件開發生命周期的安全策略,將安全策略應用到軟件開發的各個階段中,盡可能減少最終軟件產品中存在的漏洞。
關鍵詞:軟件安全;生命周期;安全策略
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2019)08-0217-02
軟件的安全問題貫穿了軟件開發的整個過程,是軟件開發與維護生命周期的各個環節都必須解決的技術問題,本文從軟件開發的各個階段來提出對應的安全策略。
1 基于生命周期的應用軟件開發安全策略解析
1.1 需求分析階段的安全策略
需求分析階段主要是從系統的角度理解軟件并評審用于產生計劃估算的軟件范圍是否恰當,在這個階段我們需要通常需要跟業主方進行當面溝通,去傾聽和挖掘業主方的需求,然而站在業主方角度,業主方通常會使用平舌話的語言來描述需求,而站在技術人員的角度通常會用專業技術的語言來描述需求,這種情況可能會帶來雙方的理解偏差。我們的安全策略在這個階段是一定要考慮到人性化,用業主方聽得懂的語言來進行溝通而不是采用技術化的語言,我們還可以采用問卷調查的方式。
1.2 系統設計階段的安全策略
系統設計是基于需求分析的成果,對系統做深層次的分析,從而得出一系列行之有效的系統實現方案,使整個項目在邏輯上和物理上能夠得以實現。系統設計的任務包括構建系統框架,設計系統功能,描述系統流程,建立系統的數據模型、接口模型及界面模型,形成系統的邏輯結構,告訴程序員軟件系統應該“怎么做”。
在設計階段引入的漏洞已經成為軟件安全問題的一個主要來源,由于缺乏應用的語義與語境信息,網絡和操作系統層次上提供的安全技術無法使得應用系統免于攻擊。因此,需要在軟件設計階段盡早識別軟件面臨的威脅,提前評估其安全態勢,并設計相應的應對方案,從而增強軟件系統的安全性。為此,我們提出威脅建模技術進行安全架構分析,依次執行分解應用程序,實行攻擊面最小化分析,確定面臨的威脅,進行威脅評估,最后,我們再進行全面的安全架構設計。
1.3系統開發階段的安全策略
軟件系統開發階段目標是按照系統設計階段產生的文檔,進行軟件系統功能開發,整合各個功能模塊,實現系統的集成運行,并滿足需求分析階段提出的性能要求,具體任務是將詳細設計的結果轉化為用具體程序設計語言編寫的程序代碼。
1.3.1代碼靜態分析
代碼靜態分析,是對源代碼進行分析,找出存在缺陷的代碼,一般會結合靜態程序分析工具使用,采用機器學習,語義精簡等技術,來檢測類如死鎖、空指針、資源泄露、緩存區溢出等問題,在這里我們重點是要進行軟件缺陷檢測,挖掘軟件程序潛在的漏洞問題。
1.3.2代碼動態分析
代碼動態分析是與靜態分析技術相對而言的,動態分析技術一般是通過觀察程序在運行過程中的狀態,如寄存器內容,函數執行結果,內存使用情況等等,分析函數功能,明確代碼邏輯,挖掘可能存在的漏洞,代碼流和數據流通常是動態調試分析技術關注的兩個方面。動態調試常用的工具有Debug、WinDbg、Olydbg等。
1.3.3建立安全編碼規則
在編碼階段,開發人員的安全意識水平和安全編程能力將直接影響系統自身的安全性和健壯性。規范對開發人員的編碼提出統一的安全要求,我們提出以下幾種安全編碼原則:
1.3.3.1最小功能性原則
軟件應該只包含那確實真正需要的功能:(1)只運行明確定義的功能(2)系統調用只在確實需要的時候(3)只在確實需要的時候訪問數據。
1.3.3.2最小授權原則
應采用適當的身份驗證和權限分配模式,確保程序功能實現嚴格遵循“最小權限”和“需要知道”安全原則。
1.3.3.3謹慎使用多任務和多進程
應盡量使用單任務的程序,如果軟件需要使用多任務和多進程,應同步所有的進程和任務以避免沖突。
1.3.3.4界面輸出最小化
用戶界面應只提供必需的功能,確保用戶不能通過用戶界面直接訪問數據或者直接訪問被保護對象。
1.3.3.5代碼應盡量簡單
盡量使用結構化的編程語言,盡量避免使用遞歸和Go to聲明語句,應盡量使用簡單的代碼,清除不必要的功能,防止采用信息隱藏方式進行數據保護。
1.3.3.6提供備份機制
為保證運行數據的完整性和可用性,應設計有效的備份策略,根據業務和系統維護需要提供定期或不定期、自動或手動方式的備份機制。
1.3.3.7其他編碼規則
其他涉及的安全編碼規則主要存在于輸入處理、輸出處理、數據庫訪問、文件操作、安全特征等方面。
1.4測試與驗證階段安全策略
軟件測試是程序的執行過程,目的在于發現錯誤,一個好的測試用例在于能夠發現至今尚未發現的錯誤,一個成功的測試是發現了至今未發現錯誤的測試。在測試階段我們著重提出軟件開發的環境分離,職責分離:生產環境對開發和測試只開放查詢權限;修改權限時需要經過一定的機制來控制記錄,一般只在調試程序時開放修改權限;測試環境對開發只開放查詢權限;需要修改權限時要經過確認,一般只在調試程序時開放修改權限;開發環境對測試人員只開放查詢權限;以上三個環境,都由專人負責升版(跑腳本)維護。
實際上,軟件的安全性測試,對測試人員有著極高的專業素質,不僅要有精湛的攻擊技術,而且能夠具備黑客思維,能夠從軟件的各個方面設計方案來抵御有可能的黑客攻擊,排除有可能的漏洞
1.5發布與維護階段安全策略
發布階段是軟件由程序變成成品的階段,在這個階段實施人員應該注重軟件的開發環境與生產環境一致,而在維護階段,我們的維護人員主要是處理系統漏洞,隨著新的黑客技術的不斷產生,任何系統都不會是絕對安全的,所以最終的產品總是會存在漏洞,但是漏洞一旦被發現,我們必須要做出最快的響應,首先我們要確認漏洞產生的原因,并及時的修復漏洞,以免企業的生產受到威脅,最嚴重甚至導致系統癱瘓,導致企業的利益受到侵占,一般漏洞被確認后,通常要分為3個階段,首先,發現漏洞后通知廠商,并將漏洞報告給安全響應中心,然后,確認漏洞并進行風險評估,最后修復漏洞并發布漏洞補丁,以及做出相應的安全簡報。
2結語
不難看出,安全問題涉及軟件開發的各個階段,軟件的安全運行在企業生產過程中起著舉足輕重的作用,這就對軟件開發的過程提出了更高的要求,必須將安全性考慮到軟件開發的各個階段中,使得軟件開發能夠前后呼應,在軟件開發的初期將安全問題進行全面的分析,在軟件開發的后期也能夠省出很大的人力和物力,也為軟件成品的安全性提高了堅實的基礎。
參考文獻:
[1] 李昕陳,智李俐.開源軟件安全問題與對策[J].計算機安全,2008(4).
[2] 崔丹丹,張二峰.軟件安全問題初探[A].商場現代化,2009(2).
【通聯編輯:光文玲】