SARIFファイルのデータ
スキャンの結果は、SARIFファイルでダウンロードできます。
SARIFは、静的解析結果を記述する標準的なデータモデルでシリアライズ化された出力形式です。SARIFファイルのデータを理解することで、スキャンの結果をより深く考察できます。
SARIFファイルには、次のような情報が含まれます。
Contrastが使用するスキャナに関する情報
スキャン対象とスキャン構成に関するデータ
脆弱性の検出結果に関するデータ
スキャン中に適切に処理されたエラーや通知内容
スキャンのカバレッジ情報
スキャナの情報
Contrastで使用したスキャナに関する情報は、以下の例のようになります。
脆弱性の情報
ここでは、1つの脆弱性のデータを例として使用します。スキャンによる脆弱性の検出結果は、results
セクションにあります。
オブジェクト
以下は、SQLインジェクションの脆弱性についてのスキャン結果の例です。
threadFlows
セクションにあるオブジェクトは、ソースからシンクまでのスキャン情報を示します。シンクの場所
脆弱性の問題がある場所やシンクの例です。
スレッドフローのステップ
データフローの実行ステップの例です。
脆弱性の物理的および論理的な場所
ここでの例は、脆弱性がある物理的および論理的な場所を示しています。
このセクションには、中間表現(IR)データのコードスニペットやレンダリングデータを含めた実行ステップの情報があります(通常はユーザコードは表示されません)。Contrastはこのデータを使用して、スキャンで確認する内容を解析します。
中間表現(IR)の実行ステートメントの例です。
アプリケーションで実行ステップが発生する場所を示す例です。
信頼できないデータの所在
ここでの例は、スキャンで検出された信頼できないデータを示しています。
スキャンは、コードソースからデータシンクまでの実行ステップを調べます。スキャン結果には、信頼できないデータに触れる全ての実行ステップが含まれます。
importance
(重要性)の結果がessential
(必要)な場合は、このコードの部分に脆弱性がないかを確認する必要があります。スキャンが追跡する汚染データの場所を示す例です。
追跡対象のデータが実行ステップで扱われる場所を示す例です。スキャン結果は、
importance
(重要性)がessential
(必要)であることが分かります。このコードでは脆弱性を確認する必要があります。
スキャン結果の分析
ここでは、SARIFファイルの内容でスキャン結果の分析に役立つ情報について、いくつか例を用いて説明します。
データの追跡に使用されたクラス
これらのクラスは、スキャンの実行時間に影響します。
型階層の解決に使用したクラス
ここに表示されるクラスは、スキャンで型の階層を解決するためだけに使用されています。
ライブラリのクラスは、セキュリティの問題に関連していないか、または関連するAPIに対する特定のポリシーがContrastにあります。
このセクションに表示されるクラスがカスタムコードに関連している場合、スキャン結果に検知漏れや誤検知の可能性があります。
擬似クラス
擬似(phantom)クラスとは、参照されるクラスですが、スキャンでそのバイトコードを検出できないか、もしくはスキャンでコードを中間表現(IR)に逆コンパイルできないものを指します。
スキャン結果に擬似クラスが含まれないことが理想的です。スキャン結果に擬似クラスが含まれる場合、より正確な結果を提供するための情報をスキャンで検出できなかったことを意味します。このセクションにアプリケーションコードまたはライブラリが表示されている場合は、コードを調べて問題が存在するかどうかを確認してください。
信頼できないデータのルート検出
ここでの例は、信頼できないデータがアプリケーションに入るルートが検出されたことを示しています。
スキャンは、このセクションに表示されている関数からのデータフローの動きのみを調べます。脆弱な暗号化など、データフローに関連する他の機能については解析されません。