アプリケーション セキュリティ テスト (AST) ツール¶
用語の説明¶
静的解析または静的アプリケーション セキュリティ テスト (SAST)¶
SAST は、ソース コードを解析することでソフトウェア バグを明らかにします。検出された欠陥は、CVE などの既知の未知のリスクです。静的解析ソリューションはソース コードを必要とするため、修正方法をコード行レベルまで具体的に提示できます。静的解析は、たいていのツールよりもソフトウェア開発ライフサイクルの早い段階で導入でき、修正のコストと手間を削減するのに役立ちます。 詳細についてはこちらのブログを参照してください。
ソフトウェア構成解析 (SCA)¶
ソフトウェア構成解析 (SCA) は、オープン ソース目録を可視化する一群のツールを指す比較的新しい業界用語です。ソース コードのすべての側面 (自社開発、サードパーティ商用、オープン ソース) に関わるという誤解を招きやすい名称ですが、実際には、ソフトウェア構成解析はオープン ソース管理ツールとしてのみ機能します。
SCA はオープン ソース パッケージを調べて、既知の脆弱性があるものを使用していないかをチェックし、脆弱性があるコンポーネントを通知します。詳細についてはこちらの概要を参照してください。
動的アプリケーション セキュリティ テスト (DAST)¶
動的アプリケーション セキュリティ テスト (DAST) は、実際の入力値を使用してターゲット プログラムを実行しながら、セキュリティ ソリューションでプログラムをモニターするというアプリケーション テスト技法です。たとえば、valgrind はターゲット実行時にメモリ エラーを検出する動的解析ソリューションの一種です。
インタラクティブ アプリケーション セキュリティ テスト (IAST)¶
インタラクティブ アプリケーション セキュリティ テスト (IAST) は、アプリケーションを実行しながらソフトウェア コードにセキュリティ脆弱性がないかを解析します。IAST は動的アプリケーション セキュリティ テスト (DAST) と静的解析セキュリティ テスト (SAST) を組み合わせます。IAST には アクティブとパッシブの 2 つのタイプがあります。どちらの場合も、テストを行うには、アプリケーション内にエージェントが必要です。アクティブ IAST は既存の脆弱性を検証します。パッシブ IAST は、任意の形式の機能テストを利用し、テスト時に傍受して結果をレポートするため、DevOps 環境に適しています。
先進的ファズ テスト (AFT)¶
AFT ツールが検出する欠陥は、未知の未知のリスクです。AFT は「ハッカーのように思考」し、未知の攻撃パターンまたは一般的ではない攻撃パターンを使用して新しい欠陥を明らかにします。攻撃のシミュレーションを行った後、AFT はターゲットの反応または振る舞いをモニターし、それをフィードバックとして利用することで、より多くの欠陥と新しいコード エッジを発見できる可能性がより高い新しいテスト ケースを自律的に生成します。詳細についてはこちらのホワイト ペーパーを参照してください。
コンコリック実行¶
コンコリック実行とは、動的シンボリック実行の 1 形式であり、特定の入力で (実際に) 実行したプログラムのトレースに基づく解析です。厳密に言えば、Mayhem はコンコリック実行だけを行い、静的シンボリック実行を行いません。 Mayhem は、一部で「シンボリック実行」と言われる時に意味する静的シンボリック実行は行いません。私たちが言うシンボリック実行とは、もっと広い意味での「静的または動的シンボリック実行」であり、Mayhem はそのうちの 1 つを行います。
シンボリック実行¶
通常、「シンボリック実行」と言えば「静的シンボリック実行」を指します。つまり、実行していないプログラムを解析して、実際に実行した場合はどのように動作するかを判断します。シンボリック実行は、形式コンピューター サイエンス手法を使用して、プログラム中のあるノードが実行される入力を特定する解析技術です。入力を特定したら、有効な入力を基にネガティブ テストのための無効な入力を派生させます。詳細についてはこちらの動画を参照してください。
ビヘイビア テスト¶
実際のコード行ではなくソフトウェアの振る舞いにフォーカスしたセキュリティ テストです。
侵入テスト¶
侵入テスト、またはペンテストは、コンピューター システムに対して許可されたサイバー攻撃を行うテストです。システムの全体的なセキュリティを評価する手段として実施され、テストに関する事前知識が制限された状態で行われることが多くあります。侵入テストと脆弱性評価を混同してはいけません。脆弱性評価はシステムの既知の脆弱性を見つけるものです。侵入テスト サービスは、時間単位の契約であるのが通常です。
疑問点¶
AFT で SAST を代替できるか¶
セキュア開発プラクティスは、開発ライフサイクル全体でさまざまなテスト技法を利用することを要求します。SAST、SCA、AFT は、それぞれの技術の制約の中で戦略的強みを提供し、ソフトウェア セキュリティ リスクのスペクトラム全体にわたる包括的なアプリケーション テストを可能にします。詳細についてはこちらのホワイト ペーパーを参照してください。
ユース ケース¶
SAST または SCA より AFT を使用するべき場合¶
AFT は実行時に欠陥を明らかにするだけでなく、テスト スイートや再現可能な欠陥など、欠陥を修正するのに必要なコンテキストとして利用可能な成果物も生成します。これらは SAST または SCA ソリューションは提供できないものです。どれを選択するかはニーズによります。それぞれ特有の強みと弱みがあるため、多くの組織はソリューションを組み合わせて使用することを選択します。たとえば、大量のカスタム コードがあり、独自のライブラリを開発している場合、オープン ソース ソフトウェアの脆弱性をカタログ化することに特化した SCA ツールは、それほど環境に適合しないいっぽう、AFT または SAST ソリューションはよい開始点となるでしょう。SDLC 全体をカバーするため、AFT と合わせて SAST および/または SCA を使用するべきです。 詳細についてはこちらの概要を参照してください。
侵入テストより AFT を使用するべき場合¶
AFT は継続的に実施できるいっぽう、侵入テストは契約の期間に限定されるのが通常です。ガイド付き AFT は、経験値によっては侵入テストのテスターよりも広い範囲のコードをカバーできる可能性があります。また、継続的 AFT は、侵テストのためにテスターのチームを雇うよりもはるかに費用対効果が高い可能性があります。