

# 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) 