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