從源頭抓起 實現應用系統安全
隨著銀行業務創新的快速發展,針對新業務需求的應用系統開發任務日益增多,而銀行的很多應用系統都直接與客戶的資金有關,這就對應用系統自身的安全性提出很高的要求。根據Gartner公司的分析,目前對網絡的攻擊有70%以上是集中在應用層,并且這一數字呈上升趨勢。應用層的攻擊有可能會造成非常嚴重的后果,因此,對具體應用系統的有效保護就顯得越發重要。
我國商業銀行信息科技風險管理指引和國家等級保護要求,都指出銀行必須構建一個完整的開發安全管理體系,以實現對信息系統整個生命周期的控制。這個體系應該是一個從需求分析、設計、編碼實現、測試到上線全生命周期的安全管理體系。軟件工程的相關研究表明,在軟件開發周期的早期就修補安全漏洞更高效而且更具成本效益。因此,銀行在防范金融風險的過程中,必須充分重視開發安全管理體系的建設,控制具體應用系統的開發過程,同步進行安全建設,避免應用系統開發完成后再考慮安全問題。
開發安全從規范開始
銀行在建設應用系統開發安全管理體系時,應當首先考慮制定相應的制度與流程。通過對各種類型應用系統開發過程的研究,發現其中面臨的各種與安全相關的并且具有一定通用性的問題,銀行需要針對這些問題制定相應的開發安全規范,以保證安全不被忽視。開發安全規范的制定應該依照組織的整體方針和業務目標,并引用其他參考文檔(如通用準則、安全標準、組織過程資產以及最佳實踐等等)來識別與控制風險,提出與開發安全有關的方針、目標、指標、過程和程序。
開發安全規范一般包括安全需求分析指南、安全技術方案設計規范、安全編碼規范和安全測試規范等。依據開發安全規范,銀行在進行應用系統開發過程中,對于各個階段的安全問題加以相應的控制,確保應用系統在開發中的安全管理。
全生命周期的安全規劃和管理
應用系統的開發階段是其生命周期內的一個重要階段,在此階段,將主要完成應用軟件的需求分析、設計、實現及測試等工作,此階段的工作將極大程度地決定系統本身的安全性。因此,要確保安全性要求在此階段的各個具體工作過程中的貫徹和實施,以便交付具有高安全特性的應用軟件,為將來應用系統的安全投產運行奠定堅實的基礎。
(一)需求分析階段
安全技術人員在需求分析階段主要對需求文檔中的安全需求情況進行分析,重點從系統的重要信息或數據、面臨的安全威脅、系統基礎環境的安全需求等角度入手,分析安全需求的全面性和完整性。
在安全功能需求中,身份鑒別、認證與授權、輸入和數據驗證、敏感數據安全、會話管理、異常管理等需求應進行明確詳細的說明。以電子銀行的數據安全為例,敏感數據要求特別保護,該類數據的傳輸、存取和存儲,必需采取加密措施保護,僅能通過內置的軟硬件加解密模塊進行管制。
(二)方案設計階段
方案設計階段是整個生命周期中最為關鍵的部分,在這個階段不僅要包括系統的功能、性能、開發費用與周期等要求,還要明確規定系統的安全要求,并據此確定具體采用的安全控制措施,如用戶身份認證體系的強度設計、認證失敗后的處理方式設計等。
在方案設計階段應該根據安全需求和安全技術規范,選擇和設計相應的安全控制方法。安全技術人員主要分析系統設計文檔中關于安全設計的完整性、合理性,分析安全設計是否能夠滿足安全需求、是否達到相應的安全強度等。
(三)編碼實現階段
程序員可使用各種通用以及特定的編程指導規范來防止開發中的普通安全問題,特定的編程指導規范主要集中在Perl、Java和C/C++語言。大多數情況下,使用這些編程指導規范將可以避免許多會導致安全漏洞的錯誤,比如非法數據輸入、緩沖區溢出、SQL注入等常見問題。
在編碼實現階段,應重點關注由于程序員有意或無意的編碼而導致的安全缺陷。安全技術人員需要抽查重要的代碼進行安全性分析,確認編碼是否滿足相應編碼安全規范,是否存在安全編碼缺陷等。
(四)安全測試階段
應用系統在正式上線前應對安全性進行測試,驗證應用系統的安全性是否符合安全設計及安全需求。在系統測試階段,應重點關注對于應用系統安全功能的測試情況,應確保安全功能測試的全面性。僅在用戶管理這一項上,就需要從用戶角色、賬號權限、口令保護、弱口令檢測、口令修改等大量重點分析點來進行測試。因此,在實際測試中需要制定準確周密的測試計劃和測試腳本,特別是驗收的標準必須非常詳細。
在測試過程中,應模擬真實應用場景搭建測試的軟硬件環境,并進行嚴格的控制保護。系統測試如果需要使用真實的數據,應對這些數據進行脫敏處理,并嚴格控制對這些數據的操作行為。在與其他系統進行互操作性測試時,應充分考慮對其他系統的影響,選擇適當的時間和方式進行。
應用系統的安全性不應該是霧里看花,也不應該是空中樓閣。對于安全的信心應該來自于我們在整個生命周期中對風險的識別、關注和準備。銀行可以通過建設開發安全管理體系,加強應用系統開發的安全管理,提高銀行應用系統開發安全管理的制度化、規范化水平,健全銀行信息安全管理體系。