安全測試 優秀測試工程師必備的4項安全測試方法!

2021-10-08 22:57:35 字數 4853 閱讀 4266

用您5分鐘時間閱讀完,希望能對您有幫助!

1、安全性測試方法

測試手段可以進行安全性測試,目前主要安全測試方法有:

1)靜態的**安全測試

主要通過對源**進行安全掃瞄,根據程式中資料流、控制流、語義等資訊與其特有軟體安全規則庫進行匹對,從中找出**中潛在的安全漏洞。(1140267353)一起成長一起加油的夥伴群!軟體測試,與你同行!

靜態的源**安全測試是非常有用的方法,它可以在編碼階段找出所有可能存在安全風險的**,這樣開發人員可以在早期解決潛在的安全問題。而正因為如此,靜態**測試比較適用於早期的**開發階段,而不是測試階段。

2)動態的滲透測試

滲透測試也是常用的安全測試方法。是使用自動化工具或者人工的方法模擬黑客的輸入,對應用系統進行攻擊性測試,從中找出執行時刻所存在的安全漏洞。

這種測試的特點就是真實有效,一般找出來的問題都是正確的,也是較為嚴重的。但滲透測試乙個致命的缺點是模擬的測試資料只能到達有限的測試點,覆蓋率很低。

3)程式資料掃瞄

乙個有高安全性需求的軟體,在執行過程中資料是不能遭到破壞的,否則就會導致緩衝區溢位型別的攻擊。資料掃瞄的手段通常是進行記憶體測試,記憶體測試可以發現許多諸如緩衝區溢位之類的漏洞,而這類漏洞使用除此之外的測試手段都難以發現。

例如,對軟體執行時的記憶體資訊進行掃瞄,看是否存在一些導致隱患的資訊,當然這需要專門的工具來進行驗證,手工做是比較困難的。

2、反向安全性測試過程

大部分軟體的安全測試都是依據缺陷空間反向設計原則來進行的,即事先檢查哪些地方可能存在安全隱患,然後針對這些可能的隱患進行測試。(1140267353)一起成長一起加油的夥伴群!軟體測試,與你同行!

因此,反向測試過程是從缺陷空間出發,建立缺陷威脅模型,通過威脅模型來尋找入侵點,對入侵點進行已知漏洞的掃瞄測試。好處是可以對已知的缺陷進行分析,避免軟體裡存在已知型別的缺陷,但是對未知的攻擊手段和方法通常會無能為力。

1)建立缺陷威脅模型

建立缺陷威脅模型主要是從已知的安全漏洞入手,檢查軟體中是否存在已知的漏洞。建立威脅模型時,需要先確定軟體牽涉到哪些專業領域,再根據各個專業領域所遇到的攻擊手段來進行建模。

2)尋找和掃瞄入侵點

檢查威脅模型裡的哪些缺陷可能在本軟體中發生,再將可能發生的威脅納入入侵點矩陣進行管理。如果有成熟的漏洞掃瞄工具,那麼直接使用漏洞掃瞄工具進行掃瞄,然後將發現的可疑問題納入入侵點矩陣進行管理。

3)入侵矩陣的驗證測試

建立好入侵矩陣後,就可以針對入侵矩陣的具體條目設計對應的測試用例,然後進行測試驗證。

3、正向安全性測試過程

為了規避反向設計原則所帶來的測試不完備性,需要一種正向的測試方法來對軟體進行比較完備的測試,使測試過的軟體能夠預防未知的攻擊手段和方法。

1)先標識測試空間

對測試空間的所有的可變資料進行標識,由於進行安全性測試的代價高昂,其中要重點對外部輸入層進行標識。

例如,需求分析、概要設計、詳細設計、編碼這幾個階段都要對測試空間進行標識,並建立測試空間跟蹤矩陣。

2)精確定義設計空間

重點審查需求中對設計空間是否有明確定義,和需求牽涉到的資料是否都標識出了它的合法取值範圍。

在這個步驟中,最需要注意的是精確二字,要嚴格按照安全性原則來對設計空間做精確的定義。

3)標識安全隱患

根據找出的測試空間和設計空間以及它們之間的轉換規則,標識出哪些測試空間和哪些轉換規則可能存在安全隱患。

例如,測試空間愈複雜,即測試空間劃分越複雜或可變資料組合關係越多也越不安全。還有轉換規則愈複雜,則出問題的可能性也愈大,這些都屬於安全隱患。

4)建立和驗證入侵矩陣

安全隱患標識完成後,就可以根據標識出來的安全隱患建立入侵矩陣。列出潛在安全隱患,標識出存在潛在安全隱患的可變資料,和標識出安全隱患的等級。其中對於那些安全隱患等級高的可變資料,必須進行詳盡的測試用例設計。

4、正向和反向測試的區別

正向測試過程是以測試空間為依據尋找缺陷和漏洞.(1140267353)一起成長一起加油的夥伴群!軟體測試,與你同行!

反向測試過程則是以已知的缺陷空間為依據去尋找軟體中是否會發生同樣的缺陷和漏洞,兩者各有其優缺點。

1)正向測試

過程的優點是測試比較充分,但工作量相對來說較大。因此,對安全性要求較低的軟體,一般按反向測試過程來測試即可,對於安全性要求較高的軟體,應以正向測試過程為主,反向測試過程為輔。

2)反向測試

過程主要的乙個優點是成本較低,只要驗證已知的可能發生的缺陷即可,但缺點是測試不完善,無法將測試空間覆蓋完整,無法發現未知的攻擊手段。

二.常見的軟體安全性缺陷和漏洞

軟體的安全有很多方面的內容,主要的安全問題是由軟體本身的漏洞造成的,下面介紹常見的軟體安全性缺陷和漏洞。

1、緩衝區溢位

緩衝區溢位已成為軟體安全的頭號公敵,許多實際中的安全問題都與它有關。造成緩衝區溢位問題通常有以下兩種原因。

1)設計空間的轉換規則的校驗問題

即缺乏對可測資料的校驗,導致非法資料沒有在外部輸入層被檢查出來並丟棄。非法資料進入介面層和實現層後,由於它超出了介面層和實現層的對應測試空間或設計空間的範圍,從而引起溢位。

2)區域性測試空間和設計空間不足

當合法資料進入後,由於程式實現層內對應的測試空間或設計空間不足,導致程式處理時出現溢位。

2、加密弱點

這幾種加密弱點是不安全的:

1)使用不安全的加密演算法。加密演算法強度不夠,一些加密演算法甚至可以用窮舉法破解。

2)加密資料時密碼是由偽隨機演算法產生的,而產生偽隨機數的方法存在缺陷,使密碼很容易被破解。

3)身份驗證演算法存在缺陷。

4)客戶機和伺服器時鐘未同步,給攻擊者足夠的時間來破解密碼或修改資料。

5)未對加密資料進行簽名,導致攻擊者可以篡改資料。所以,對於加密進行測試時,必須針對這些可能存在的加密弱點進行測試。

3、錯誤處理

一般情況下,錯誤處理都會返回一些資訊給使用者,返回的出錯資訊可能會被惡意使用者利用來進行攻擊,惡意使用者能夠通過分析返回的錯誤資訊知道下一步要如何做才能使攻擊成功。

如果錯誤處理時呼叫了一些不該有的功能,那麼錯誤處理的過程將被利用。錯誤處理屬於異常空間內的處理問題,異常空間內的處理要盡量簡單,使用這條原則來設計可以避免這個問題。

但錯誤處理往往牽涉到易用性方面的問題,如果錯誤處理的提示資訊過於簡單,使用者可能會一頭霧水,不知道下一步該怎麼操作。所以,在考慮錯誤處理的安全性的同時,需要和易用性一起進行權衡。

4、許可權過大

如果賦予過大的許可權,就可能導致只有普通使用者許可權的惡意使用者利用過大的許可權做出危害安全的操作。

許多軟體安全測試經驗告訴我們,做好軟體安全性測試的必要條件是:

1、充分了解軟體安全漏洞

評估乙個軟體系統的安全程度,需要從設計、實現和部署三個環節同時著手。我們先看一下common criteria是如何評估軟體系統安全的。

首先要確定軟體產品對應的protection profile(pp)。乙個pp定義了一類軟體產品的安全特性模板。

例如:資料庫的pp、防火牆的pp等。然後,根據pp再提出具體的安全功能需求,如使用者的身份認證實現。最後,確定安全物件以及是如何滿足對應的安全功能需求的。因此,乙個安全軟體的三個環節,哪個出問題都不行。

2、安全性測試的評估

當做完安全性測試後,軟體是否能夠達到預期的安全程度呢?這是安全性測試人員最關心的問題,因此需要建立對測試後的安全性評估機制。一般從以下兩個方面進行評估。

1)安全性缺陷資料評估

如果發現軟體的安全性缺陷和漏洞越多,可能遺留的缺陷也越多。進行這類評估時,必須建立基線資料作為參照,否則評估起來沒有依據就無法得到正確的結論。

2)採用漏洞植入法來進行評估

漏洞植入法和可靠性測試裡的故障插入測試是同一道理,只不過這裡是在軟體裡插入一些有安全隱患的問題。採用漏洞植入法時,先讓不參加安全測試的特定人員在軟體中預先植入一定數量的漏洞,最後測試完後看有多少植入的漏洞被發現,以此來評估軟體的安全性測試做得是否充分。

3)採用安全測試技術和工具

可使用專業的具有特定功能的安全掃瞄軟體來尋找潛在的漏洞,將已經發生的缺陷納入缺陷庫,然後通過自動化測試方法來使用自動化缺陷庫進行轟炸測試。

例如,使用一些能夠模擬各種攻擊的軟體來進行測試。

安全測試是用來驗證整合在軟體內的保護機制是否能夠在實際中保護系統免受非法的侵入。一句通俗的話說:軟體系統的安全當然必須能夠經受住正面的攻擊——但是它也必須能夠經受住側面的和背後的攻擊。

俺叫小楓,乙個成天想著一夜暴富的測試員

(1140267353)一起成長一起加油的夥伴群!軟體測試,與你同行!

群內可領取最新軟體測試大廠面試資料和python自動化、介面、框架搭建學習資料!

點讚關注不迷路!!!【三連ღ】,有問題也可私聊喲~(*╹▽╹*)

如何成為優秀的測試工程師

軟體測試員的目標是找出軟體缺陷,盡可能早一些。軟體測試員的乙個基本素質是 打破沙鍋問到底。大多數軟體測試員應具備的素質 1.探索精神 軟體測試員不會害怕進入陌生環境。有較強的學習能力,可以用最快的速度成為乙個新的行業的專家 2.3.不懈努力 軟體測試員總是不停嘗試。他們可能會碰到轉瞬即逝或者難以重建...

測試工程師簡介

一 什麼是軟體測試?1975年,兩位軟體測試先驅john good enough和susan cerhart 在ieee上發表了 軟體資料選擇的原理 此時將軟體測試定義為 證明軟體的工作是正確 的活動。1979年,glenford j.myers的著名的 軟體測試藝術 對測試的定義是 發現錯誤而執行...

軟體測試工程師

首先,最根本的還是要看企業自身的需要,綜合自己的測試團隊力量,自己公司的研發狀況,當然還有公司的資金 到底到測試這塊公司願意投入多少money呢?另外要搞清楚自己公司招聘測試人員的目的是什麼?比如,如果公司暫時還沒有測試團隊,這個時候公司剛好有財力,同時研發力量比較大的時候,因為發展的需要,必須要組...