スキャンパッケージの準備
スキャンで最良の結果を得るには、スキャンするパッケージをアップロードする前に、以下のベストプラクティスを参考に準備してください。
注記
本項は、ContrastにファイルをアップロードするSaaS版のContrast Scanをご利用のお客様に適用されます。ローカルスキャンのベストプラクティスについては、ローカルスキャンのパッケージの準備をご覧ください。
アーティファクトの種類
Javaバイナリスキャンの場合は、WARまたはJARパッケージのいずれかをアップロードします。
多言語ソースコードスキャンの場合は、スキャンするリポジトリを含むZIP パッケージをアップロードします。
1つのZIPパッケージに、複数のJARファイルやWARファイルを含めることができます。これらのファイルは、サブディレクトリではなく、ZIPパッケージのルートディレクトリに置いてください。
コードアーティファクトの圧縮前の最大サイズは1GBを超えることはできません。
Contrast CLIまたはContrast WebインターフェイスでアップロードするZIPファイルを準備する場合、圧縮前のデータが1GBを超えていないことを確認してください。Contrast Scanでは、1GBを超える非圧縮ファイルは拒否される場合があります。その場合、スキャンを成功させるために、ファイルを複数のプロジェクトに分割する必要があります。
一貫したファイル構成の使用
各スキャンで一貫したファイル構成を使用することは、脆弱性の検出結果の重複を防ぐために重要です。初回スキャン後に、スキャンするファイルのファイル構成を変更する必要がある場合は、既存のスキャンプロジェクトを使用するのではなく、それらのファイル用に新しいスキャンプロジェクトを作成してください。Contrast Scan AnalyzeのGitHubアクションを使用せずに複数のブランチをスキャンする予定がある場合は、個人用ブランチに対して別のスキャンプロジェクトを作成してください。
既存のスキャンプロジェクトを使用し、ファイル構成を変更してからスキャンを実行すると、元の脆弱性のステータスが修復済に設定され、新たに重複した脆弱性が報告されます。新しい検出結果は、同じファイルと行番号にリンクされますが、新しいパスが表示されます。
一貫したファイル構成は、ZIPファイル内のファイルとZIPファイルに含まれていないファイルに影響します。
例 1:ZIPファイル名を変更する
この例では、ZIPファイルの名前を変更していますが、ZIPファイルのファイル構成は維持します。この変更により、Contrastが重複した脆弱性を報告することはありません。
scan.zip | |-- source_files changed to contrastscan.zip | |-- source_files
この場合、ZIPファイル名はスキャンパスの一部ではないため、変更してもスキャン結果には影響しません。
例2:ZIPファイルのファイル構成を変更する
この例では、ZIPファイルの名前を変更し、新しいディレクトリを追加してファイル構成も変更しています。この変更により、Contrastは重複した脆弱性を報告することになります。
scan.zip | |-- source_files changed to contrastscan.zip | |-- contrastscan | |-- source files
この場合、ZIPファイル内のファイル構成を変更すると、検出結果が重複します。この問題を回避するには、新しいスキャンプロジェクトを作成し、それを以降のスキャンに使用してください。
例3:ディレクトリ内のファイル構成を変更する
この例では、新しいディレクトリを追加してファイル構成を変更しています。この変更により、Contrastは重複した脆弱性を報告することになります。
scan | |-- source_files changed to contrastscan | |-- contrastscan | |-- source files
この場合、ディレクトリ名やディレクトリ内のファイル構成を変更すると、検出結果が重複します。この問題を回避するには、新しいスキャンプロジェクトを作成し、それを以降のスキャンに使用してください。
クラスファイルと依存関係へのアクセス
パッケージ化されたファイルが、ここで説明しているものと異なる場合には、Contrast Scanはコードについて仮定を立てます。そのため、得られる結果が正確では無くなる可能性があります。検知漏れや誤検知になる可能性があります。
Contrast Scanがすべての必要なクラスファイルと依存関係にアクセスできれば、結果に擬似クラスは含まれることはありません。擬似クラスとは参照されるクラスですが、スキャンでそのバイトコードを検出できないか、もしくはスキャンで中間表現(IR)に逆コンパイルできないものを指します。
Contrast Scanは、以下のファイルへのアクセスが必要です。
アプリケーションのクラスファイル
アプリケーションの依存関係にあるJARファイルやクラスファイル
Oracle Java™ の仕様に従って、アプリケーションおよび依存関係をWARファイルで構成してください。
Spring BootのJARファイルと同様に、アプリケーションおよび依存関係をJARファイルで構成してください。
Spring Boot JARファイルは、アプリケーションと依存関係を既知の場所に配置します。
標準のJDKファイルや一般的なサーブレットコンテナが提供する依存関係は含める必要はありません。Contrast Scan側で、これらの依存関係を提供します。
フレームワーク
正確な結果を得るために、Webアプリケーションで使用されているフレームワークがContrast Scanのサポート対象である必要があります。
多言語ソースコードスキャン: このスキャンタイプは、サポート対象言語の全てのフレームワークに対応しています。
Javaバイナリスキャン: このスキャンタイプは、以下のフレームワークをサポートしています。
Angular 8以降
J2EE
Jakarta EE 2.0-3.0
jQuery
React 16 以降
SpringBoot
Spring MVC
Vue.JS 2以降
シンJARファイルの使用回避
シンJAR(thin JAR)ファイルは、アプリケーションのバイトコードのみを含むファイルです。これらのファイルには、依存関係に動的にアクセスするための特別な実行ローダーが必要です。シンJARファイルをアップロードした場合、アプリケーションコードのスキャンは実行されません。正確なスキャンのためのアプリケーションの依存関係へのアクセスができません。