

# SEC11-BP03 定期進行滲透測試
<a name="sec_appsec_perform_regular_penetration_testing"></a>

定期對您的軟體進行滲透測試。這項機制有助於識別自動化測試或手動程式碼審查時，未能偵測到的潛在軟體問題。此外還有助於了解偵測控制的效用。滲透測試應嘗試判斷軟體是否會透過非預期的方式執行，例如暴露原本應受保護的資料，或是授予超乎預期的較廣泛權限。

 

**預期成果：**滲透測試可用來為您的應用程式安全屬性進行偵測、修復和驗證。軟體開發生命週期 (SDLC) 期間應該進行定期與排程型滲透測試。從滲透測試找到的調查結果應事先解決，才能安排軟體發行。您應該分析從滲透測試得到的調查結果，並識別是否有任何問題可使用自動化找出。實施包括主動意見回饋機制的定期和可重複滲透測試程序，可協助建置人員得知指引，並改善軟體品質。

**常見的反模式：**
+  只對已知或普遍存在的安全問題進行滲透測試。
+  滲透測試應用程式 (不含相依第三方工具和程式庫)。
+  只對套件安全問題進行滲透測試，且不評估已實作的商業邏輯。

**建立此最佳實務的優勢：**
+  提高軟體在發行前的安全屬性信心。
+  可識別偏好應用程式模式，並藉以提高軟體品質的機會。
+  在開發生命週期初期進行的意見回饋循環流程，當中的自動化或額外訓練可以改善軟體的安全屬性。

**未建立此最佳實務時的風險暴露等級：**高 

## 實作指引
<a name="implementation-guidance"></a>

 滲透測試是一種結構化的安全測試練習，過程當中，您會執行計畫的安全性缺口情境，對安全控制進行偵測、修復與驗證。滲透測試從偵察活動開始，過程中會根據目前的應用程式設計與其相依性收集資料。已經建置並執行精選的安全特定測試情境清單。這些測試的主要目的在於找出您的應用程式中的安全問題，這些問題可能會被利用來非預期地存取環境，或未經授權存取資料。當您推出新功能，或是每當應用程式遭遇重大的功能變更或進行技術實作，您就應該進行滲透測試。

 您應該識別開發生命週期中最適合進行滲透測試的階段。這項測試的執行時間應該盡量延到系統功能接近預定發行階段之時，而且要保留足夠修復任何問題的時間。

### 實作步驟
<a name="implementation-steps"></a>
+  建立處理滲透測試範圍限制方式的結構化程序，前提是這個關於[威脅模型](https://aws.amazon.com/blogs/security/how-to-approach-threat-modeling/)的程序是維持內容的好方法。
+  識別開發週期中最適合進行滲透測試的時機。進行測試時應該是預期應用程式進行最少變更，而且有足夠時間進行修復。
+  訓練建置人員學會從滲透測試調查結果預期哪些內容，以及如何取得關於修復的資訊。
+  使用工具，透過自動化共通或可重複測試，加速滲透測試程序。
+  分析滲透測試調查結果來找出系統性安全問題，並使用這份資料，得知其他的自動化測試與持續進行的建置人員教育。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+  [SEC11-BP01 應用程式安全訓練](sec_appsec_train_for_application_security.md) 
+ [SEC11-BP02 自動化在整個開發和發布生命週期的測試](sec_appsec_automate_testing_throughout_lifecycle.md)

 **相關文件：**
+  [AWS 滲透測試](https://aws.amazon.com/security/penetration-testing/)提供在 AWS 上進行滲透測試的詳細指引 
+  [配合有效管控，加速在 AWS 的部署](https://aws.amazon.com/blogs/architecture/accelerate-deployments-on-aws-with-effective-governance/) 
+  [AWS 安全能力合作夥伴](https://aws.amazon.com/security/partner-solutions/?blog-posts-cards.sort-by=item.additionalFields.createdDate&blog-posts-cards.sort-order=desc&partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc&awsf.partner-solutions-filter-partner-type=*all&awsf.Filter%20Name%3A%20partner-solutions-filter-partner-categories=*all&awsf.partner-solutions-filter-partner-location=*all&partner-case-studies-cards.sort-by=item.additionalFields.sortDate&partner-case-studies-cards.sort-order=desc&events-master-partner-webinars.sort-by=item.additionalFields.startDateTime&events-master-partner-webinars.sort-order=asc) 
+  [現代化您在 AWS Fargate 上的滲透測試架構](https://aws.amazon.com/blogs/architecture/modernize-your-penetration-testing-architecture-on-aws-fargate/) 
+  [AWS Fault Injection Simulator](https://aws.amazon.com/fis/) 

 **相關範例：**
+  [自動化配合 AWS CodePipeline 的 API 測試](https://github.com/aws-samples/aws-codepipeline-codebuild-with-postman) (GitHub) 
+  [自動化安全協助程式](https://github.com/aws-samples/automated-security-helper) (GitHub) 