各形式のテストの相対的な長所と短所は何ですか?
つまり静的コード分析とランタイム/動的侵入テストの違いは何ですか?
それぞれの長所と短所は何ですか?一方が他方よりも望ましい状況はありますか?
ここで本当に良い答えがいくつかありますが、私が追加することが重要だと思ういくつかの追加ポイント:
この質問は、The Art of Software Security Assessmentの第4章で最もよく扱われていると思います。シュー、そしてジョン・マクドナルド。
参照としてそれがなければ、最良の方法は、ブラックボックステストを使用して「ヒット」(またはトレース、別名カバレッジ)を決定する際に、ソースコードとともにランタイムデータを使用することですが、脅威モデルの後のみです。システムの一般的なアーキテクチャはよく知られています。
著者はまた、候補点戦略と組み合わせると安全な静的コード分析が好きであるように見えますが、これらは以下が真でないと仮定すると、値が大きく異なる可能性があると私の意見ではあります:
上記の理由と、NIST SATEの調査(NIST SAMATEによって行われた)で述べられた理由のため、ホワイトボックス分析で使用するために多くの安全な静的分析ツールを推奨するのは難しいと思います。ほとんどの場合、ソースコードを上から下に読むことを含む可能性が最も高いコード理解戦略を使用する方が簡単です。これは、マネージコードルートキットなどを探す場合に非常に重要です。
アプリケーションをテストおよび監査/評価する代わりに、主にテクノロジーにとらわれない別のアプローチを採用します。私の提案は、各アプリの現在実装されているアプリケーションセキュリティコントロールと共にアプリインベントリを含むアプリケーションセキュリティリスク管理ポータルを実装することです。初期のベースラインの後、アプリケーションのセキュリティ管理策は、MITRE CWE、SAFEcode、OWASP ASVSなどの業界標準に対して評価する必要があります。次に、ギャップ分析(これは標準的なリスク管理用語であり、ISO 27001または同様のものに基づく情報セキュリティ管理プログラムに実装した場合に最もよく機能することに注意してください)を使用して、最適なアプリケーションセキュリティ管理と取得するパスを決定できます。現在実装されているコントロールから必要なコントロールへ。
より良い結果を得て、プログラムの成功を測定するために、ホワイトボックスまたはブラックボックステストなどのリスク評価アクティビティを実行する前に、このリスク管理ポータルを実装する必要があります。
ブラックボックス
ホワイトボックス
一般に、ホワイトボックステストでは、ソースコードに飛び込んで完全な侵入テストを実行できますが、ブラックボックスは簡単、高速、シンプルですが、非常に時間がかかる場合があります。私はグレーボックステストを好む-ブラックボックスメソッドを使用し、開発者へのインタビュー/アプリケーションの特定の部分(認証、セッション管理、構成管理、 ...)。