SEC11-BP03 定期的にペンテストを実施する
定期的にソフトウェアのペンテストを実施します。このメカニズムは、自動化されたテストや手動のコードレビューでは検出できない、ソフトウェアの潜在的な問題の特定に役立ちます。また、検出統制の効率を理解する上でも役立ちます ペンテストでは、保護する必要があるデータを公開する、想定よりも広範なアクセス許可を付与するなど、ソフトウェアを予期しない方法で実行できるかどうかの確認を試行します。
期待される成果: ペンテストは、アプリケーションのセキュリティ特性を検出、修正、検証するために使用します。ソフトウェア開発ライフサイクル (SDLC) の一環として、定期的かつ計画的にペンテストを実施します。ペンテストでの検出結果は、ソフトウェアのリリース前に対処する必要があります。ペンテストでの検出結果を分析し、自動化によって検出できる問題があるかどうかを確認します。アクティブなフィードバックメカニズムを含む、定期的で反復可能なペンテストを実施することで、ビルダーへのガイダンスの提供やソフトウェア品質の向上に役立ちます。
一般的なアンチパターン:
-
既知のセキュリティの問題、または広く発生しているセキュリティの問題に対してのみペンテストを実施する。
-
依存するサードパーティーツールやライブラリを除いてアプリケーションのペンテストを実施する。
-
実装されたビジネスロジックを評価せずに、パッケージセキュリティの問題のみについてペンテストを実施する。
このベストプラクティスを活用するメリット:
-
リリース前のソフトウェアのセキュリティ特性に関する信頼性を向上させます。
-
望ましいアプリケーションパターンを特定する機会を創出して、ソフトウェアの品質をさらに向上させます。
-
開発サイクルの早期に、ソフトウェアのセキュリティ特性を改善するための自動化や、追加のトレーニングを特定するフィードバックループを確立します。
このベストプラクティスを活用しない場合のリスクレベル: 高
実装のガイダンス
ペンテストは、計画されたセキュリティ侵入シナリオを実行して、セキュリティコントロールを検出、修正、検証する、構造化されたセキュリティテストです。ペンテストは、アプリケーションの現在の設計とその依存関係に基づいてデータを収集する調査から始まります。セキュリティに特化した、厳選されたテストシナリオの一覧を作成し、実施します。これらのテストの主な目的は、環境への意図しないアクセスやデータへの不正アクセスに悪用される可能性のある、アプリケーションのセキュリティ問題を発見することです。新しい機能をリリースしたり、機能や技術的な実装の大きな変更をアプリケーションに加えたりした場合は、必ずペンテストを実施する必要があります。
ペンテストを実施するのに最適な開発ライフサイクルのステージを特定します。このテストは、システムの機能がリリース間近の状態で、なおかつ問題の修正に十分な時間を確保できる時期に行う必要があります。
実装手順
-
ペンテストの範囲を設定するための構造化されたプロセスを用意し、このプロセスを脅威モデル
に基づいて行うことは、コンテキストを維持するための良い方法です。 -
ペンテストの実施に最適な開発ライフサイクルの時期を特定します。これは、アプリケーションで大きな変更が予定されておらず、問題の修正に十分な時間を確保できる時期である必要があります。
-
ペンテストから期待される検出結果、および問題の修正に関する情報の取得について、ビルダーへのトレーニングを実施します。
-
一般的、または反復的なテストを自動化するためのツールを使用して、ペンテストプロセスの時間を短縮します。
-
ペンテストでの検出結果を分析してシステム的なセキュリティの問題を特定し、このデータを使用して、追加の自動化テストと継続的なビルダー教育に役立てます。
リソース
関連するベストプラクティス:
関連ドキュメント:
-
AWS Penetration Testing
provides detailed guidance for penetration testing on AWS -
Modernize your penetration testing architecture on AWS Fargate
関連する例:
-
Automated security helper
(GitHub)