徐 鶯,辜 彬,馮亞玲
(中國電子科技集團第三十研究所,四川 成都 610041)
隨著信息化、互聯網的快速發展,軟件產品應用越來越廣泛,基于開放的網絡系統下的軟件安全性問題日益突出。針對軟件或產品進行安全性測試是保證軟件安全性和降低軟件安全風險的重要手段。目前,針對軟件系統的安全性測試技術的研究較為普遍,成果較多,逐步形成了相關的技術與方法?,F有安全性測試技術的研究大多基于測試技術本身探索測試方法深度、效果,能夠解決一定范圍內安全性測試效果和安全功能驗證問題。在安全性測試需求方面,一直以來缺乏系統、完整的研究,以解決對特定軟件產品或系統完整有效的安全性測試到底測什么和怎么測的問題。針對這一核心問題,本文基于安全威脅模型提出了一套安全性測試需求框架,提供了一套通用、系統的解決思路,是提升軟件安全性測試能力和效果的重要參考。
軟件安全性通常有兩種定義。在國標GJB5236-2004 中,安全性被定義為軟件的重要功能正確且可靠,避免造成人員、財務等損失,是質量屬性的一種,本質是失效安全性。隨著信息技術的高速發展,人們更加關注軟件的抗風險能力,即保密安全性(SecurityTesting)。保密安全性強調了軟件抗攻擊能力,確保在受到攻擊時能正確完成功能,避免秘密泄露等。本文主要關注保密安全性。
當前主要的安全性測試技術及概況如下。
(1)形式化安全測試。通過建立軟件的數學模型,提供軟件的規格形式化說明,通過定理證明或者模型檢測的方法發現軟件中的漏洞。形式化安全測試重視理論分析,定理證明的方法很難自動化或者形成工具,只能手工實施,且一般需要高素質分析人員的參與。測試范圍主要也限于設計階段的程序而非實際代碼。
(2)白盒測試。典型的安全性缺陷一般都可以通過代碼分析捕獲,靜態分析通過對數據流的分析,可有效發現相關安全性問題。目前,基于白盒的COBOT 靜態分析工具應用較為廣泛,是一種有效的安全性測試方法。
(3)模糊測試。模糊測試是一種通過向目標系統提供非預期輸入并監視異常結果以發現軟件缺陷的方法。模糊測試將隨機產生的亂數據注入被測對象,類似一種數據攻擊過程,可用于發現軟件漏洞和缺陷。模糊測試方法的非預期及隨機性,也注定其結果的不可靠和不完整性。
(4)基于模型的安全功能測試。通過軟件建立有限狀態機、UML 模型等方式,對一般的安全功能進行測試,適用于容易建模的安全功能。通過覆蓋遍歷安全功能的分支,確保實現的正確性和健壯性[1]。
根據保密安全性的定義內涵,將安全性需求分為2 個維度,即以安全功能為核心的驗證和測試,以及基于外部攻擊、威脅的安全漏洞測試。安全漏洞是指系統在設計、實現、操作、管理上存在的可被利用的缺陷或弱點,漏洞被利用可能造成軟件受到攻擊,使軟件進入不安全狀態。安全漏洞測試則是從攻擊者的角度,以發現軟件的安全漏洞為目的的測試,是安全性測試的重點和難點。目前的漏洞發現、掃描技術的基本原理是基于知識庫中已知漏洞庫對產品、系統進行掃描和檢查,是一種到點的覆蓋,難以解決完整的安全漏洞發現[2]。
基于以上問題,提出了一種完整的安全性測試構建思路,即基于產品安全目標進行分解,形成安全機制框架,基于框架從外部威脅入手,建立開放網絡應用下產品的威脅模型,進一步對各種威脅進行概率、影響評估,導出完整的、系統的安全性測試需求框架及要素。研究思路如圖1 所示。

圖1 安全性測試需求框架的構建思路
國際通用準則CC 于1999 年發布(15015408:1999),是前國際通用的信息安全測評的重要依據和基礎。CC 標準在原TCSEC 的基礎上提出系統的實際使用目的和安全性要求,定義了7 個評估級別EALI 到EAL7,首次提出保護輪廓的概念。保護輪廓就是針對某類產品的功能和保證要求的集合。
我國強制性國家標準《計算機信息系統安全保護等級劃分準則》(GB17559-1999)是在參考美國的CC 基礎上,從自主訪問控制、強制訪問控制、標記、身份鑒別、客體重用、審計、數據完整性、可信路徑和可信恢復等方面,將計算機信息系統安全保護等級劃分為5 個安全等級,從而建立我國信息系統安全性測評的基本通用評估基礎。第1 級,用戶自主保護級;第2 級,系統審計保護級;第3 級,安全標記保護級;第4 級,結構化保護級;第5 級,訪問驗證保護級。
參考相關測評標準的主要內容,將CC 標準中的保護輪廓作為產品安全目標要素,考察不同的軟件產品主要的業務功能、安全防護設計、識別產品的主要過程及數據,建立產品安全性機制框架作為安全性測試研究的基礎。
威脅建模是識別軟件安全漏洞的重要方法,通過識別要保護的對象,分解應用程序(識別入口點、出口點、信任邊界、數據流描述等),識別軟件面臨的安全威脅,找出威脅可能的實現過程,通過攻擊樹對威脅實施過程建模,評估威脅(威脅分級,級別高的威脅應設計較多的測試用例),確定降低威脅的對策。最常用的威脅分類方法是STRIDE,即Spoofing(欺騙)、Tampering(篡改)、Repudiation(否 認)、Informationdisclosure(信息泄露)、Denial ofservice(拒絕服務)和Elevationofprivilege(特權提升)。以產品的安全機制為對象,開展威脅分析與風險識別,提出安全性測試需求要素[3]。表1 列出安全屬性與安全威脅的對應關系。

表1 安全屬性與安全威脅的對應關系
3.3.1 產品分類及威脅建模
根據軟件產品的功能、組成和邊界,將軟件產品及系統分為設備類和軟件類2 大類。設備類分為網絡承載類和安全設備類,軟件產品則分為基礎軟件和應用軟件[4],如表2 所示。
根據軟件產品的組成、形態及邊界、面臨的主要安全風險,提出軟件/產品運行過程中的通用威脅部署模型,如圖2 所示。

表2 產品分類

圖2 軟件/產品運行過程中的通用威脅部署模型
對典型分布式信息系統下的軟件產品基于保護對象和不同的邊界進行風險識別,歸納形成6 大類安全目標,分別為管理防護、用戶數據保護、用戶邊界防護、密碼系統邊界防護、計算環境安全防護和物理安全一級安全目標;對一級安全目標進行細化,每種安全目標對應多種安全屬性(即為實現安全目標而實施的保護設計機制),進一步分析安全屬性對應的每種安全威脅,根據威脅級別、風險程度進行梳理和分析。圖3 提出了基于用戶數據保護的威脅分析的思路及主要內容。
3.3.2 安全測試需求框架
對細分的安全屬性進行威脅分析,采用DREAD 方法量化潛在損失(DamagePotential)、重現性(Reproducibility)、可利用性(Exploitability)、受影響的用戶(AffectedUsers)以及可發現性(Discoverability)等,計算出每種威脅的風險值,進而決定每種威脅的優先次序[5]。
通過威脅評估,分析、歸納、整合通用,選定具有必要性的測試項,提出安全性測試需求要素框架和主要測試內容,如表3 所示。

圖3 基于用戶數據保護的威脅分析的思路及主要內容

表3 安全性測試需求要素框架及主要測試內容

續表3

續表3

續表3

續表3
基于開放網絡下的軟件產品,它的軟件規模和復雜度不斷提高,軟件的安全缺陷與漏洞也在不斷增多,在為用戶提供高效、便利服務的同時,軟件產品自身安全性問題日益突顯,已經成為信息系統整體安全防護的重要方面。本文基于安全威脅模型,提出了一套安全性測試需求框架,為軟件產品安全性測試提供了完整、系統的解決思路,是提升軟件安全性測試能力和強化軟件安全性設計與實現水平的重要參考。