2019測試指南-安全測試集成在開發和測試工做流程中

開發工做流程中的安全測試
SDLC開發階段的安全測試表明瞭開發人員第一次有機會確保他們開發的各個軟件組件在與其餘組件集成並內置到應用程序以前進行了安全測試。軟件組件可能包含軟件工件,如函數,方法和類,以及應用程序編程接口,庫和可執行文件。對於安全性測試,開發人員能夠依靠源代碼分析的結果來靜態驗證開發的源代碼不包含潛在的漏洞而且符合安全編碼標準。安全單元測試能夠進一步動態地(即,在運行時)驗證組件按預期運行。
編程

在應用程序構建中集成以前驗證源代碼一般是高級開發人員的責任。這些高級開發人員也是軟件安全方面的主題專家,他們的角色是領導安全的代碼審查。他們必須決定是否接受要在應用程序構建中發佈的代碼,仍是須要進一步的更改和測試。能夠經過正式接受以及工做流管理工具中的檢查來強制執行此安全代碼審查工做流程。例如,假設用於功能錯誤的典型缺陷管理工做流,能夠在缺陷或變動管理系統上報告由開發人員修復的安全漏洞。安全

測試工做流程中的安全測試
在開發人員測試組件和代碼更改並檢入應用程序構建以後,軟件開發過程工做流程中最可能的下一步是做爲整個實體對應用程序執行測試。此級別的測試一般稱爲集成測試和系統級測試。當安全測試是這些測試活動的一部分時,它們可用於驗證整個應用程序的安全功能,以及應用程序級漏洞的風險。這些應用程序的安全測試包括白盒測試(如源代碼分析)和黑盒測試(如滲透測試)。灰盒測試相似於黑盒測試。在灰盒子測試中,假設測試人員對應用程序的會話管理有一些部分知識,
服務器

安全測試的目標是可能受到攻擊的完整系統,包括整個源代碼和可執行文件。在此階段,安全測試的一個特色是安全測試人員能夠肯定是否能夠利用漏洞並將應用程序暴露給真正的風險。其中包括常見的Web應用程序漏洞,以及早期在SDLC中發現的安全問題,以及威脅建模,源代碼分析和安全代碼審查等其餘活動。框架

一般,當應用程序處於集成系統測試的範圍內時,測試工程師而不是軟件開發人員會執行安全測試。這些測試工程師具備Web應用程序漏洞,黑盒和白盒安全測試技術的安全知識,而且在此階段擁有安全要求的驗證。爲了執行此類安全測試,必須在安全測試指南和過程當中記錄安全測試用例。函數

在集成系統環境中驗證應用程序安全性的測試工程師可能會釋放應用程序以在操做環境中進行測試(例如,用戶驗收測試)。在SDLC的這個階段(即驗證),應用程序功能測試一般是QA測試人員的責任,而白帽黑客或安全顧問一般負責安全測試。當不須要第三方評估時(例如出於審計目的),一些組織依靠他們本身的專業道德黑客團隊來進行此類測試。工具

因爲這些測試是在將應用程序發佈到生產以前修復漏洞的最後手段,所以按照測試團隊的建議解決此類問題很是重要。建議可包括代碼,設計或配置更改。在此級別,安全審計員和信息安全官員根據信息風險管理程序討論報告的安全問題並分析潛在風險。此類過程可能須要開發團隊在部署應用程序以前修復全部高風險漏洞,除非這些風險獲得認可和接受。單元測試

開發人員的安全測試

編碼階段的安全測試:單元測試
從開發人員的角度來看,安全測試的主要目標是驗證代碼的開發是否符合安全編碼標準要求。開發人員本身的編碼工件(例如函數,方法,類,API和庫)須要在集成到應用程序構建以前進行功能驗證。
測試

開發人員必須遵循的安全要求應記錄在安全編碼標準中,並經過靜態和動態分析進行驗證。若是單元測試活動遵循安全代碼審查,則單元測試能夠驗證安全代碼審查所需的代碼更改是否正確實現。經過源代碼分析工具進行安全的代碼審查和源代碼分析,幫助開發人員在開發源代碼時識別安全問題。經過使用單元測試和動態分析(例如,調試),開發人員能夠驗證組件的安全功能,並驗證正在開發的對策能夠減輕先前經過威脅建模和源代碼分析肯定的任何安全風險。編碼

開發人員的一個好習慣是將安全測試用例構建爲通用安全測試套件,它是現有單元測試框架的一部分。通用安全測試套件能夠從先前定義的使用和誤用狀況導出到安全測試功能,方法和類。通用安全測試套件可能包含安全測試用例,以驗證安全控制的正面和負面要求,例如:加密

  • 身份,身份驗證和訪問控制
  • 輸入驗證和編碼
  • 加密
  • 用戶和會話管理
  • 錯誤和異常處理
  • 審計和記錄

開發人員可使用集成到其IDE中的源代碼分析工具,安全編碼標準和安全單元測試框架來評估和驗證正在開發的軟件組件的安全性。能夠運行安全測試用例來識別源代碼中存在根本緣由的潛在安全問題:除了進入和退出組件的參數的輸入和輸出驗證以外,這些問題還包括組件進行的身份驗證和受權檢查,以及對組件內數據的保護。組件,安全異常和錯誤處理,以及安全審計和日誌記錄。能夠調整Junit,Nunit和CUnit等單元測試框架以驗證安全測試要求。在安全功能測試的狀況下,單元級別測試能夠測試軟件組件級別的安全控件的功能,例如函數,方法或類。例如,測試用例能夠經過斷言組件的預期功能來驗證輸入和輸出驗證(例如,變量衛生)和變量的邊界檢查。

使用和濫用狀況肯定的威脅情景可用於記錄測試軟件組件的過程。例如,在認證組件的狀況下,安全單元測試能夠斷言設置賬戶鎖定的功能以及不能濫用用戶輸入參數以繞過賬戶鎖定的事實(例如,經過將賬戶鎖定計數器設置爲負數)。

在組件級別,安全單元測試能夠驗證確定斷言以及否認斷言,例如錯誤和異常處理。應該在不使系統處於不安全狀態的狀況下捕獲異常,例如因爲資源未被解除分配而致使的潛在拒絕服務(例如,鏈接句柄未在最終語句塊中關閉),以及可能的特權提高(例如,在退出異常以前獲取的更高權限,而且在退出函數以前不會從新設置爲上一級別。安全的錯誤處理能夠經過信息性錯誤消息和堆棧跟蹤驗證潛在的信息泄露。

單元級安全測試用例可由安全工程師開發,安全工程師是軟件安全的主題專家,而且還負責驗證源代碼中的安全問題已獲得修復並能夠檢入集成系統構建中。一般,應用程序構建的管理者還確保第三方庫和可執行文件在集成到應用程序構建以前針對潛在漏洞進行安全評估。

開發人員的安全測試指南中還記錄了在不安全編碼中具備根本緣由的常見漏洞的威脅情景。例如,當針對源代碼分析識別的編碼缺陷實施修復時,安全測試用例能夠驗證代碼更改的實現是否遵循安全編碼標準中記錄的安全編碼要求。

源代碼分析和單元測試能夠驗證代碼更改能夠減輕先前識別的編碼缺陷所暴露的漏洞。自動安全代碼分析的結果也能夠用做版本控制的自動檢入門,例如,軟件工件沒法檢查到具備高或中等嚴重性編碼問題的構建。

功能測試人員的安全測試

集成和驗證階段的安全測試:集成系統測試和操做測試集成系統測試
的主要目標是驗證「縱深防護」概念,即安全控制的實如今不一樣層提供安全性。例如,在調用與應用程序集成的組件時缺乏輸入驗證一般是可使用集成測試進行測試的因素。

集成系統測試環境也是測試人員能夠模擬真實攻擊場景的第一個環境,可能由應用程序的惡意外部或內部用戶執行。此級別的安全測試能夠驗證漏洞是否真實而且能夠被攻擊者利用。例如,源代碼中發現的潛在漏洞因爲潛在的惡意用戶的暴露以及潛在的影響(例如,訪問機密信息)而被評爲高風險。

可使用手動測試技術和滲透測試工具測試真實的攻擊情形。此類安全測試也稱爲道德黑客測試。從安全測試的角度來看,這些是風險驅動的測試,其目標是在操做環境中測試應用程序。目標是應用程序構建,表明正在部署到生產中的應用程序的版本。

在集成和驗證階段包括安全測試對於識別因爲組件集成而致使的漏洞以及驗證此類漏洞的暴露相當重要。應用程序安全測試須要一組專業技能,包括軟件和安全知識,這些技能並不是典型的安全工程師。所以,組織常常須要對其軟件開發人員進行道德黑客技術,安全評估程序和工具的安全培訓。一個現實的場景是在內部開發此類資源,並將其記錄在安全測試指南和程序中,並考慮開發人員的安全測試知識。例如,所謂的「安全測試用例做弊列表或檢查列表」 能夠提供簡單的測試用例和攻擊向量,測試人員可使用它們來驗證常見漏洞的暴露,例如欺騙,信息泄露,緩衝區溢出,格式字符串,SQL注入和XSS注入,XML,SOAP,規範化問題,拒絕服務和託管代碼和ActiveX控件(例如,.NET)。可使用很是基本的軟件安全知識手動執行這些測試的第一組電池。

安全測試的第一個目標多是驗證一組最低安全要求。這些安全測試用例可能包括手動強制應用程序進入錯誤和異常狀態,並從應用程序行爲中收集知識。例如,能夠經過用戶輸入注入攻擊向量並檢查SQL異常是否被拋回用戶來手動測試SQL注入漏洞。SQL異常錯誤的證據多是能夠利用的漏洞的表現。

更深刻的安全測試可能須要測試人員對專業測試技術和工具的瞭解。除了源代碼分析和滲透測試以外,這些技術還包括,例如,源代碼和二進制故障注入,故障傳播分析和代碼覆蓋,模糊測試和逆向工程。安全測試指南應提供程序並推薦安全測試人員可用於執行此類深刻安全評估的工具。

集成系統測試後的下一級安全測試是在用戶接受環境中執行安全測試。在操做環境中執行安全測試具備獨特的優點。用戶驗收測試環境(UAT)是最能表明發佈配置的環境(UAT),但數據除外(例如,使用測試數據代替實際數據)。UAT中的安全測試的一個特徵是測試安全配置問題。在某些狀況下,這些漏洞可能表明高風險。例如,承載Web應用程序的服務器可能未配置最低權限,有效SSL證書和安全配置,禁用基本服務以及未從測試和管理網頁清除Web根目錄。

相關文章
相關標籤/搜索