セキュリティ制御の追加、編集、削除
開始する前に
入力バリデーションと無害化のセキュリティ制御は、Java、.NET Framework、.NET Core言語にのみ適用されます。
正規表現バリデーションのセキュリティ制御は、Java言語にのみ適用されます。
手順
ユーザメニュー > ポリシーの管理を選択し、 セキュリティ制御を選択します。
既にセキュリティ制御がある場合は、セキュリティ制御の一覧に表示されます。
編集する場合は既存のセキュリティ制御の名前を選択します。新規に作成する場合はセキュリティ制御を追加を選択します。
表示される画面で、以下の項目を入力します。
名前
言語: Java、.NET Framework、.NET Coreから選択します。
種類:以下のいずれかの方法を選択します。
入力バリデーション(Input Validator)は、ユーザ入力を受け付けて、安全でないデータを受信した場合に処理を行います。
無害化(Sanitizer)は、渡されたデータを浄化して、どのインタプリタでも安全に使用できるようにします。無害化の多くは、特定の種類の攻撃を防ぐように設計されるため、他の種類の攻撃を防ぐ効果がない場合があります。
正規表現バリデーション(Regex validator)は、入力文字列に含まれる特定の正規表現パターンを検証し、安全かどうかを判断します。
入力バリデーションまたは無害化の場合は、使用するAPIを指定します。
入力バリデーションまたは無害化のAPIを指定する場合は、以下の規則を考慮してください。
Java:
Javaの場合には、メソッド名とパラメータを含める必要があります。完全修飾型を使用し、
java.lang.String
パラメータ(boolean、 int、long、short double、floatなどでない)のみを対象とします。.NET Frameworkおよび.NET Core:
戻り値の型(またはvoid)、メソッド名、パラメータを含めます。完全修飾型を使用し、
System.String
パラメータのみを対象とします。パラメータ間にスペースが無いことを確認してください。
バリデーションまたは無害化されるパラメータにアスタリスク(*)を付けます。
正規表現バリデーションの場合は、次の情報を指定します。
正規表現パターン: 入力文字列と比較する正規表現パターンを指定します。
正規表現リファレンスに、使用できるパターンの例を記載しています。
アプリケーション: 正規表現バリデーションを適用するアプリケーションを指定します。
対象ルール: 全ての脆弱性ルールを選択するか、個別の脆弱性ルールを1つ以上選択します。
保存を選択して新しいセキュリティ制御を作成します。既存のセキュリティ制御を編集する場合は、このパネルから削除アイコンを使用してセキュリティ制御を削除することもできます。
表の下部に、Contrastが検出した潜在的なセキュリティ制御の候補が推奨として、クラスとメソッドとともに表示されます(このセクションは、ヘッダ行のキャレットをクリックして非表示にできます)。
セキュリティ制御が初めて自動的に検出された場合は、該当するアプリケーションのView(閲覧)権限以上を持つ全てのユーザに通知されます。
APIにカーソルを合わせて、この推奨が検出された場所を確認します。また、必要に応じてアプリケーション名を選択し、そのアプリケーションのコンテキストで脆弱性を確認します。
推奨されるセキュリティ制御の行の端にあるプラス記号のアイコン () を使用して、推奨を新しいセキュリティ制御として追加し、上の表に含めます。追加する前に、名前、API、種類フィールドを直接編集できます。セキュリティ制御の追加後、名前を選択し、セキュリティ制御が正しいアプリケーションルールに適用されることを確認します。
推奨を削除するには、ゴミ箱アイコン() を使用します。Contrastからの推奨は繰り返されないので、一度削除するとそのAPIが再度推奨されることはありません。過去の推奨を表示したり、戻す方法はありません。
注記
サーバの再起動が必要な場合があります。選択した内容によって、影響を受けるサーバの一覧が表示されます。
特定の脆弱性に対応したセキュリティ制御の作成
タグイベントを使用して、特定の脆弱性のコンテキストでセキュリティ制御を作成することもできます。
Contrastによって脆弱性のランタイムのデータフローがキャプチャされた場合、脆弱性 > 脆弱性の名前 > 詳細を選択して、その脆弱性の詳細情報を確認できます。検出された潜在的なセキュリティ制御によってタグイベントがトリガーされ、それが深刻度の低い(緑色の)イベントとして表示されます。イベントを展開すると、セキュリティ制御の追加を選択できます。
また、「内部のセキュリティ制御を通過」という理由で脆弱性を問題無しとマークした場合は、そのセキュリティ制御をその時点で定義できます。