章13軟體安全性測試

chszs發表於2007-02-11
版權宣告:本文為博主chszs的原創文章,未經博主允許不得轉載。 https://blog.csdn.net/chszs/article/details/1507910

章13 軟體安全性測試

黑客、病毒、蠕蟲、間諜軟體、後面程式、木馬、拒絕服務攻擊都是計算機的安全問題。
1、駕駛攻擊
隨著在都會網路中普及無線高保真(WiFi)網路,黑客們可以駕駛車子,帶著筆記本,在城市的街道上兜圈子,就可以搜尋到未受保護的無線網路,這種技術就是“駕駛攻擊”。
2、瞭解動機
作為軟體測試員很重要的一點是要了解為什麼有人要攻擊你的軟體。
瞭解動機能幫助軟體測試員考慮到測試的軟體中有哪些安全方面的漏洞。
安全產品:是指產品在系統的所有者或管理員的控制下,保護使用者資訊的保密性、完整性、可獲得性,以及處理資源的完整性和可獲得性。
安全漏洞:是指使產品不可行的缺陷——即使是正確地使用產品時——來防止攻擊者竊取系統的使用者許可權、調節操作、破壞資料,或建立未授權的信任。
黑客:精通計算機程式設計和使用的人,電腦玩家。使用程式設計技能來獲得對計算機網路或檔案的非法訪問的人。
黑客想獲得系統訪問許可權的5個動機是:
(1)挑戰/成名
(2)好奇
(3)使用/借用
(4)惡意破壞
(5)偷竊
3、威脅模式分析(threat modeling)
威脅模式分析目的是由評審小組查詢產品特性設定方面可能會引起安全漏洞的地方。
根據這些資訊,小組可以選擇對產品做修改,花更多的努力設計特定的功能,或者集中精力測試潛在的故障點。
最終,這樣理解會使產品更加安全。
注意:除非產品開發小組的每個人——包括專案經理、程式設計師、測試員、技術文件寫作員、市場人員、產品支援——都理解和認同可能存在的安全威脅,否則小組不可能開發出安全的產品來。
執行威脅模式分析並非軟體測試員的責任。
這個責任應該落到專案經理的任務清單上,並非專案小組每個成員都要參與。
一個複雜的系統要求全面的威脅模型分析來確認安全漏洞。
(1)構建威脅模型分析小組
對於小組來說,重要的一點是瞭解他們的最初目標不是解決安全問題,而是確定安全問題。
在後期可以舉行一些小規模的特定團隊參加的會議,以隔離安全威脅,設計解決方案。
(2)確認價值
考慮系統所有的東西對於一個入侵者來說價值有多大。
(3)建立一個體繫結構總體圖
要確認計劃用在軟體中的以及如何實現互聯的技術。
小的威脅模型分析小組會建立一個體繫結構圖表示出主要的技術模組和它們之間如何通訊。
(4)分解應用程式
這是一個格式化的過程,用來確認資料所在位置以及如何通過系統。
(5)確認威脅
一旦完全理解了所有的部分(價值、體系結構、資料),威脅模型分析小組可以轉向確認威脅。
每一個部分都應該考慮成為威脅目標,並且應假設它們會受到攻擊。
(6)記錄威脅
每個威脅都必須用文件記錄,並且應進行跟蹤以確保其被解決。
文件是一種簡單方式,用於描述威脅、目標、攻擊可能採用的方式、系統用於防禦攻擊有哪些反制手段。
(7)威脅等級評定
理解並非所有的威脅生來就平等這一點很重要。
4、恐怖公式(DREAD Formula):
(1)潛在的危害
(2)可反覆性
(3)可利用性
(4)受影響的使用者
(5)可發現性
5、軟體安全是一項功能嗎?軟體漏洞是一個缺陷嗎?
軟體安全可以簡單地看做是軟體產品或系統的另外一項功能。
軟體測試員可能會負責測試軟體的整個安全性,或者可能僅僅負責測試被分配測試的功能是安全的。
軟體測試員不需要拿到一份清楚明白地定義軟體安全性是如何實現的產品說明書。
軟體測試員也不能假設威脅模型分析是完全和準確的。
技巧:測試安全缺陷是失效性測試行為,也常常覆蓋產品中沒有被完全理解和說明的部分。
6、瞭解緩衝區溢位
任何軟體產品中都有一個安全問題——緩衝區溢位。
資料引用錯誤——既使用沒有被正確申明和初始化的變數、常數、陣列、字串或記錄引起的缺陷。
緩衝區溢位就是這種缺陷。
由於字串的不正確處理引起的緩衝區溢位是目前為止最為常見的一種程式碼編寫錯誤,其結果是導致安全漏洞。
7、使用安全的字串函式
通用C和C++函式中容易引起緩衝區溢位的編碼錯誤。這些函式自身並不差,但是要安全的使用它們,需要在程式設計師這邊進行更為深入的錯誤檢測。如果忽略了這種錯誤檢測,程式碼就會有安全漏洞。
衡量一下這種疏忽帶來的風險,最好還是開發或改進一組新的函式,即用強壯、完全測試通過的、文件齊全的新函式集替代這些容易引起問題的函式集。
這些新的函式,叫做安全字串函式(Safe String Functions),在windowsXP的SP1版本、最新的windows DDK和平臺SDK中已經具有。常用的作業系統、編譯器,處理器也具有其它很多實現了安全字串的商用的或免費的庫。
使用新函式的好處(部分):
(1)每個函式接收目標緩衝的長度作為輸入。這樣函式就能確保在寫入時不會超過緩衝區的長度。
(2)函式空字元中止所有的輸出字串,即使操作截斷了預計的後果。
(3)所有函式返回一個NTSTATUS值,該值只有一個可能成功的程式碼。呼叫函式能輕易地確定函式的執行是否成功。
(4)每個都提供版本。一個支援單位元組的ASCII字元,另一個支援雙位元組的Unicode字元。
7、計算機取證
注意:使用者變更時未被刪除的保留資料叫做潛在資料。潛在資料時潛在的安全漏洞,需要在小組採用的任何威脅模型分析中進行討論。也許這些資料不會被看成是產品的問題,也許會被看成是一個大問題。
潛在資料的更復雜的例子是由電腦保安專家用來發現可以用做犯罪調查的證據。
8、總結
沒有計算機系統是安全的。為幫助設計一個安全的系統,在產品設計的最開始就必須注意安全的問題。
測試員僅能測試軟體的安全性,軟體安全必須先計劃、評審、設計,然後才是測試。


相關文章