本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SEC11-BP03 執行定期滲透測試
定期對您的軟體進行滲透測試。這項機制有助於識別自動化測試或手動程式碼審查時,未能偵測到的潛在軟體問題。此外還有助於了解偵測控制的效用。滲透測試應嘗試判斷軟體是否會透過非預期的方式執行,例如暴露原本應受保護的資料,或是授予超乎預期的較廣泛權限。
預期成果:滲透測試可用來為您的應用程式安全屬性進行偵測、修復和驗證。定期和排定的滲透測試應作為軟體開發生命週期的一部分執行 (SDLC)。從滲透測試找到的調查結果應事先解決,才能安排軟體發行。您應該分析從滲透測試得到的調查結果,並識別是否有任何問題可使用自動化找出。實施包括主動意見回饋機制的定期和可重複滲透測試程序,可協助建置人員得知指引,並改善軟體品質。
常見的反模式:
-
只對已知或普遍存在的安全問題進行滲透測試。
-
滲透測試應用程式 (不含相依第三方工具和程式庫)。
-
只對套件安全問題進行滲透測試,且不評估已實作的商業邏輯。
建立此最佳實務的優勢:
-
提高軟體在發行前的安全屬性信心。
-
可識別偏好應用程式模式,並藉以提高軟體品質的機會。
-
在開發生命週期初期進行的意見回饋循環流程,當中的自動化或額外訓練可以改善軟體的安全屬性。
未建立此最佳實務時的風險暴露等級:高
實作指引
滲透測試是一種結構化的安全測試練習,過程當中,您會執行計畫的安全性缺口情境,對安全控制進行偵測、修復與驗證。滲透測試從偵察活動開始,過程中會根據目前的應用程式設計與其相依性收集資料。已經建置並執行精選的安全特定測試情境清單。這些測試的主要目的在於找出您的應用程式中的安全問題,這些問題可能會被利用來非預期地存取環境,或未經授權存取資料。當您推出新功能,或是每當應用程式遭遇重大的功能變更或進行技術實作,您就應該進行滲透測試。
您應該識別開發生命週期中最適合進行滲透測試的階段。這項測試的執行時間應該盡量延到系統功能接近預定發行階段之時,而且要保留足夠修復任何問題的時間。
實作步驟
-
建立處理滲透測試範圍限制方式的結構化程序,前提是這個關於威脅模型
的程序是維持內容的好方法。 -
識別開發週期中最適合進行滲透測試的時機。進行測試時應該是預期應用程式進行最少變更,而且有足夠時間進行修復。
-
訓練建置人員學會從滲透測試調查結果預期哪些內容,以及如何取得關於修復的資訊。
-
使用工具,透過自動化共通或可重複測試,加速滲透測試程序。
-
分析滲透測試調查結果來找出系統性安全問題,並使用這份資料,得知其他的自動化測試與持續進行的建置人員教育。
資源
相關的最佳實務:
相關文件:
-
AWS 滲透測試
提供 滲透測試的詳細指引 AWS
相關範例:
-
自動化安全協助程式
(GitHub)