1. 程式人生 > >軟件安全測試的幾個原則

軟件安全測試的幾個原則

登錄系統 get 理論 恢復 必須 客戶 erl 設置 除了

  摘要:軟件安全性是一個廣泛而復雜的主題,要避免因安全性缺陷問題受各種可能類型的攻擊是不切實際的。      本文從軟件安全測試需要考慮的問題,來探討軟件安全測試原則,通過遵循這些原則避免許多常見的       安全性測試問題出現。     軟件安全性是一個廣泛而復雜的主題,每一個新的軟件總可能有完全不符合所有已知模式的新型安全性缺   陷出現。要避免 因安全性缺陷問題受各種可能類型的攻擊是不切實際的。在軟件安全測試時,運用一組好的   原則來避免不安全的軟件上市、避免不安全軟件受攻擊,就顯得十分重要。 一、軟件安全性測試基本概念   軟件安全性測試包括程序、網絡、數據庫安全性測試。根據系統安全指標不同測試策略也不同。      1.用戶程序安全的測試要考慮問題包括:
  1)明確區分系統中不同用戶權限;   2)系統中會不會出現用戶沖突;   3)系統會不會因用戶的權限的改變造成混亂;   4)用戶登錄密碼是否是可見、可復制;   5)是否可以通過絕對途徑登錄系統(拷貝用戶登陸後的鏈接直接進入系統);   6)用戶推出系統後是否刪除了所有鑒權標記,是否可以使用後退鍵而不通過輸入口令進入統;   2.系統網絡安全的測試要考慮問題包括:   1)測試采取的防護措施是否正確裝配好,有關系統的補丁是否打上;   2)模擬非授權攻擊,看防護系統是否堅固;   3)采用成熟的網絡漏洞檢查工具檢查系統相關漏洞;   4)采用各種木馬檢查工具檢查系統木馬情況;   5)采用各種防外掛工具檢查系統各組程序的客外掛漏洞。   3.數據庫安全問題考慮
  1)系統數據是否機密(比如對銀行系統,這一點特別重要,一般的網站就沒有太高要求);   2)系統數據的完整性;   3)系統數據的可管理性;   4)系統數據的獨立性;   5)系統數據可備份和恢復能力(數據備份是否完整,可否恢復,恢復是否可以完整); 二、根據軟件安全測試需要考慮的問題   1.保護了最薄弱的環節     攻擊者往往設法攻擊最易攻擊的環節,這對於您來說可能並不奇怪。即便他們在您系統各部   分上花費相同的精力,他們也更可能在系統最需要改進的部分中發現問題。這一直覺是廣泛適用   的,因此我們的安全性測試應側重於測試最薄弱的部分。      該軟件的原始版本十分“天真”,完全沒有使用加密。現在該軟件想修正這一問題,但已建   立了廣大的用戶基礎。此外,該軟件 已部署了許多或許在長時間內都不會升級的服務器。更   新更聰明的客戶機和服務器需要同未使用新協議更新的較舊的客戶機進行互操作。該軟件希望   強迫老用戶升 級,沒有指望老用戶會占用戶基礎中如此大的一部分,以致於無論如何這將真   的很麻煩。怎麽辦呢?讓客戶機和服務器檢查它從對方收到的第一條消息,然後從中確 定發生   了什麽事情。如果我們在同一段舊的軟件“交談”,那麽我們就不執行加密。     遺憾的是,老謀深算的黑客可以在數據經過網絡時,通過篡改數據來迫使兩臺新客戶機都   認為對方是舊客戶機。更糟的是,在有了支持完全(雙向)向後兼容性的同時仍無法消除該問題   題。對 這一問題的一種較好解決方案是從開始就采用強制升級方案進行設計;使客戶機檢測到   服務器不再支持它。如果客戶機可以安全地檢索到補丁,它就升級。否則,它 告訴用戶他們   必須手工獲得一個新的副本。但是從一開始就應準備使用這一解決方案,就會得罪早期用戶。     測試采取的防護措施是否正確裝配好,有關系統的補丁是否打上就十分的重要。   4.最小特權
    最小特權原則規定:確定只授予執行操作所必需的最少訪問權,並且對於該訪問權只準許   使用所需的最少時間。     當 軟件給出了某些部分的訪問權時,一般會出現濫用與那個訪問權相關的特權的風險。   例如,我們假設您出去度假並把您家的鑰匙給了您的朋友,好讓他來餵養您的寵 物、收集郵   件等等。盡管您可能信任那位朋友,但總是存在這樣的可能:您的朋友未經您同意就在您的房   子裏開派對或發生其它您不喜歡的事情。     一位程序員可能希望訪問某種數據對象,但只需要從該對象上進行讀。不過,不管出於什   麽原因,通常該程序員實際需要的不僅是必需的特權。通常,該程序員是在試圖使編程更容易   一些。     如果軟件設置的訪問權結構不是“完全訪問或根本不準訪問”,那麽最小特權原則會非常有   效。   5.分隔     分隔背後的基本思想是如果我們將系統分成盡可能多的獨立單元,那麽我們可以將對系統   可能造成損害的量降到最低。     通常,如果攻擊者利用了代碼中的緩沖區溢出,對磁盤進行原始寫並胡亂修改內核所在內   存中的任何數據。沒有保護機制能阻止他這樣做。因此,系統進行適度的分隔顯得十分重要,   軟件要能直接支持本地磁盤上永遠不能被擦去的日誌文件,這意味著直到攻擊者闖入時,才不   能保持精確的審計信息。     適度使用的分隔,將利於系統的管理,但是對每一個功能都進行分隔,那麽系統將很難管理。 三、安全性測試的主要目的是查找軟件自身程序設計中存在的安全隱患,並檢查應用對非法侵入的 防範能力,根據安全指標不同測試策略也不同,如果遵循相同的原則,去證明軟件的安全性,將有 利於軟件測試安全測試的工作規範的進行,有利於軟件安全測試工作的發展。     安全測試檢查系統對非法侵入的防範能力。安全測試期間,測試人員假扮非法入侵者,采   用各種辦法試圖突破防線。   例如:   1)想方設法截取或破譯口令;   2)專門定做軟件破壞系統的保護機制;   3)故意導致系統失敗,企圖趁恢復之機非法進入;   4)試圖通過瀏覽非保密數據,推到所需信息,等等。     理論上講,只要有足夠的時間和資源,沒有不可進入的系統。因此系統安全設計的準則   是,使非法入侵的代價超過被保護信息的價值。此時非法入侵者已無利可圖。     安全測試用來驗證集成在系統內的保護機制是否能夠在實際中保護系統不收到非法入侵。   

軟件安全測試的幾個原則