正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

脆弱性レポート

  • プラン: Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

脆弱性の修正アクティビティーアイコンの利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。

脆弱性レポートには、コードベースで見つかったセキュリティの脆弱性に関する統合ビューが用意されています。重大度、レポートの種類、スキャナー(プロジェクトのみ)、その他の属性で脆弱性を並べ替えて、最初に対応が必要なイシューを判断します。ステータスインジケーターと、修正の進捗状況を示すアクティビティーアイコンを使用して、ライフサイクル全体を通して脆弱性を追跡します。

共通脆弱性評価システム(CVSS)のスコアや、利用可能な場合はファイルロケーションなど、各脆弱性に関する詳細情報にアクセスできます。類似した脆弱性をフィルタリングしてグループ化し、体系的に対処します。

パフォーマンス上の理由から、脆弱性レポートに表示される脆弱性の合計数が1000件を超えると、正確な数ではなく1000以上と表示されます。この制限は、ページの上部に表示される件数にのみ影響します。テーブルにはすべての脆弱性が引き続き表示されます。

正確な数を表示するための改善は、イシュー547510で提案されています。正確な数を見つけるには、イシュー480378の回避策のいずれかを使用してください。

GitLab.comでは、脆弱性は最終更新から1年後にアーカイブされます。

概要については、脆弱性管理 - 高度なセキュリティテストを参照してください。

脆弱性レポートの内容

レポートにはデフォルトブランチのデータが含まれており、成功したすべてのセキュリティスキャンジョブからの累積結果が表示されます。スキャンの結果は、ジョブの完了後、またはパイプラインが手動ジョブによってブロックされている場合に表示されます。

プロジェクトおよびグループの場合、脆弱性レポートには以下が含まれます:

  • 重大度レベルごとの脆弱性の合計。
  • 一般的な脆弱性属性のフィルター。
  • テーブル形式で表示される各脆弱性の詳細。

一部の脆弱性では、詳細にデフォルトブランチ内の関連ファイルと行番号へのリンクが含まれます。CVEの脆弱性については、脆弱性レポートでKEVステータス、CVSSおよびEPSSスコア、到達可能性情報を表示することもできます。

プロジェクトの場合、脆弱性レポートには以下も含まれます:

  • タイムスタンプは、デフォルトブランチが最後に更新された時刻を示し、最新のパイプラインへのリンクが含まれています。デフォルト以外のブランチに対して実行されるパイプラインは、タイムスタンプを更新しません。
  • 最新のパイプラインで発生した失敗の数。エラー通知を選択して、パイプラインのページの失敗したジョブタブを表示します。

アクティビティー列には、その行の脆弱性に対して行われたアクティビティー(ある場合)を示すアイコンが含まれています:

  • イシュー issues : 脆弱性に対して作成されたイシューへのリンク。
  • マージリクエスト merge-request : 脆弱性に対して作成されたマージリクエストへのリンク。
  • チェックされた円 check-circle-dashed : 脆弱性は修正されました。
  • 誤検出 false-positive : スキャナーは、この脆弱性が誤検出であると判断しました。
  • 解決策 bulb : 脆弱性に対処策が利用可能であることを示します。
  • 脆弱性の修正 tanuki-ai : 脆弱性に利用可能なAI修正があることを示します。

脆弱性に対して作成されたイシューを開くには、アクティビティーエントリにカーソルを合わせ、リンクを選択します。イシューアイコン( issues )は、イシューのステータスを示します。Jiraイシューサポートが有効になっている場合、アクティビティーエントリにあるイシューリンクは、Jiraイシューにリンクします。GitLabイシューとは異なり、JiraイシューのステータスはGitLab UIには表示されません。

プロジェクト脆弱性レポートの例

脆弱性が複数プロジェクトのパイプライン設定から発生した場合、このページには、選択したプロジェクトから発生した脆弱性が表示されます。

脆弱性レポートを表示する

脆弱性レポートを表示して、プロジェクトまたはグループ内のすべての脆弱性を一覧表示します。

前提要件:

  • プロジェクトまたはグループのデベロッパーロール以上を持っている必要があります。

脆弱性レポートを表示するには、次の手順に従います:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
  2. セキュリティ > 脆弱性レポートを選択します。

脆弱性をフィルタリングする

脆弱性レポートの脆弱性をフィルタリングすることで、より効率的にトリアージできます。

以下でフィルタリングできます:

  • ステータス: 脆弱性の現在の状態:トリアージが必要、確認済、無視、または解決。却下された脆弱性は、却下された理由によってまとめて、または個別にフィルタリングできます。
  • 重大度: 脆弱性の重大度の値:重大、高、中、低、情報、不明。
  • レポートタイプ: 脆弱性を検出したレポートの種類(SAST、コンテナファジングなど)。
  • スキャナー: 脆弱性を特定した特定のスキャナー。
  • アクティビティー: 脆弱性に関する追加のプロパティ(イシュー、マージリクエスト、またはソリューションが利用可能かどうかなど)。
  • 識別子: 脆弱性の識別子でフィルタリングします(advanced vulnerability management(高度な脆弱性管理)が必要です)。高度な脆弱性管理がない場合、利用できるのは最大20,000件の脆弱性を持つプロジェクトとグループに制限されます)。
  • プロジェクト: 特定のプロジェクトの脆弱性をフィルタリングします(グループでのみ使用可能)。
  • 到達可能性: 脆弱性が到達可能かどうか(はい、見つからない、利用不可)に基づいてフィルター処理します。
  • 有効性チェック: 脆弱性をその有効性ステータス(アクティブ、非アクティブ、またはアクティブの可能性あり)でフィルタリングします。

脆弱性をフィルタリングする

脆弱性レポートをフィルタリングして、脆弱性のサブセットに焦点を当てます。

脆弱性のリストをフィルタリングするには、次の手順に従います:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
  2. セキュリティ > 脆弱性レポートを選択します。
  3. (オプション)デフォルトのフィルターを削除するには、クリア clear )を選択します。
  4. 脆弱性のリストの上にある、フィルターバーを選択します。
  5. 表示されるドロップダウンリストで、フィルタリングする属性を選択し、ドロップダウンリストから値を選択します。
  6. フィルターフィールドの外側を選択します。脆弱性の重大度の合計と、一致する脆弱性のリストが更新されます。
  7. 複数の属性でフィルタリングするには、前の3つの手順を繰り返します。複数の属性は、論理積で結合されます。

レポートタイプのフィルター

脆弱性を検出したレポートの種類に基づいて、脆弱性をフィルタリングできます。デフォルトでは、脆弱性レポートにはすべてのレポートタイプの脆弱性がリストされます。

手動で追加されました属性を使用して、手動で追加された脆弱性をフィルタリングします。

スキャナーフィルター

プロジェクトの場合、脆弱性を検出したスキャナーに基づいて脆弱性をフィルタリングできます。デフォルトでは、脆弱性レポートにはすべてのスキャナーからの脆弱性がリストされます。

プロジェクトフィルター

プロジェクトフィルターの内容は異なります:

アクティビティーをフィルタリング

アクティビティーのフィルタリングは、他のフィルターとは動作が異なります。各カテゴリで選択できる値は1つだけです。フィルターを削除するには、アクティビティーをフィルタリングのドロップダウンリストから、削除するフィルターを選択します。

アクティビティーをフィルタリングを使用する場合の選択の動作は、次の通りです:

  • アクティビティー
    • すべてのアクティビティー: アクティビティーステータスが任意(このフィルターを無視するのと同じ)の脆弱性。これを選択すると、他のすべてのアクティビティーフィルターオプションの選択が解除されます。
  • 検出
    • まだ検出されています (デフォルト): defaultブランチの最新のパイプラインスキャンでまだ検出されている脆弱性。
    • 検出されませんでした: defaultブランチの最新のパイプラインスキャンで検出されなくなった脆弱性。
  • イシュー
    • Has issues(イシューがあります): 1つ以上の関連するイシューがある脆弱性。
    • イシューはありません: 関連するイシューがない脆弱性。
  • マージリクエスト
    • マージリクエストがあります: 1つ以上の関連するマージリクエストがある脆弱性。
    • マージリクエストはありません: 関連するマージリクエストがない脆弱性。
  • 利用可能な対策
  • GitLab Duo (AI):
    • 脆弱性の解決策は利用可能: 利用可能なAI修正がある脆弱性。
    • 脆弱性の解決策は利用不可: 利用可能なAI修正がない脆弱性。

**GitLab Duo (AI)**フィルターは、以下の場合に利用できます:

  • セキュリティセンターの脆弱性レポート: セキュリティセンターのすべてのプロジェクトで、GitLab Duoの切替がオンになっているとき。
  • グループ脆弱性レポート: グループの場合、GitLab Duoの機能デフォルトで有効にするに設定されているとき。
  • プロジェクト脆弱性レポート: プロジェクトの場合、GitLab Duo切替がオンになっているとき。

到達可能性フィルター

グループとプロジェクトの場合、到達可能性の値に基づいて脆弱性をフィルタリングできます。デフォルトでは、脆弱性レポートには、到達可能性の値に関係なく、すべての脆弱性がリストされます。

OWASPトップ10 2021(高度な脆弱性管理が必要)

有効性チェックフィルター

この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。この機能はテストには利用できますが、本番環境での使用には適していません。

グループとプロジェクトの場合、有効性チェックの値に基づいて脆弱性をフィルタリングできます。デフォルトでは、脆弱性レポートには、アクティブの可能性のあるステータスの脆弱性が一覧表示されます。

OWASPトップ10 2021(高度な脆弱性管理が必要)

脆弱性をグループ化する

脆弱性レポートページで脆弱性をグループ化して、より効率的にトリアージできます。

以下によってグループ化できます:

  • ステータス
  • 重大度
  • レポートタイプ
  • スキャナー
  • OWASPトップ10 2017
  • OWASPトップ10 2021(高度な脆弱性管理が必要)

脆弱性をグループ化する

脆弱性をグループ化するには、次の手順に従います:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
  2. セキュリティ > 脆弱性レポートを選択します。
  3. Group By(グループごと)ドロップダウンリストから、グループを選択します。

脆弱性は、選択したグループに従ってグループ化されます。各グループは折りたたまれ、グループごとの脆弱性の合計数が名前の横に表示されます。各グループの脆弱性を表示するには、グループの名前を選択します。

脆弱性の詳細を表示する

脆弱性の詳細を表示するには、脆弱性の説明を選択します。脆弱性の詳細ページが開きます。

脆弱性のステータスを変更する

脆弱性のトリアージを行う際に、脆弱性を無視するなど、ステータスを変更できます。

脆弱性が無視された場合、監査ログには、誰がいつ無視したか、そしてその理由が記録されます。脆弱性のレコードは削除できないため、永続的な記録が常に残ります。

前提要件:

  • プロジェクトのメンテナーロール以上を持っている必要があります。admin_vulnerability権限は、GitLab 17.0のデベロッパーロールから削除されました。

脆弱性のステータスを変更するには、次の手順に従います:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
  2. セキュリティ > 脆弱性レポートを選択します。
  3. 選択方法は次の通りです:
    • 1つ以上の脆弱性を選択するには、各脆弱性の横にあるチェックボックスを選択します。
    • ページ上のすべての脆弱性を選択するには、テーブルヘッダーのチェックボックスを選択します。
  4. ステータスの設定ドロップダウンリストで、必要なステータスを選択します。
  5. やめるステータスを選択した場合は、ドロップダウンリストのSet dismissal reason(却下理由を設定))から目的の理由を選択します。
  6. コメントを追加インプットに、コメントを入力できます。やめるステータスの場合、コメントは必須です。
  7. ステータスの変更を選択します。

選択した脆弱性のステータスが更新され、脆弱性レポートの内容が更新されます。

プロジェクト脆弱性レポート

脆弱性の重大度を変更またはオーバーライドする

この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。

場合によっては、組織の優先順位をより適切に反映するために、検出された脆弱性の重大度を調整する必要があります。たとえば、スキャナーが低い重大度を報告する可能性がありますが、環境または設定に基づいて、より重大であると見なす場合があります。この機能を使用すると、スキャナーによって割り当てられたデフォルトの重大度を上書きできます。

前提要件:

  • プロジェクトまたはadmin_vulnerability権限に対して、少なくともメンテナーロールを持っている必要があります。

脆弱性の重大度を手動でオーバーライドするには、次の手順に従います:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
  2. セキュリティ > 脆弱性レポートに移動します。
  3. 脆弱性を選択します:
    • 個々の脆弱性を選択するには、各脆弱性の横にあるチェックボックスを選択します。
    • ページ上のすべての脆弱性を選択するには、テーブルヘッダーのチェックボックスを選択します。
  4. アクションを選択ドロップダウンリストで、重大度の変更を選択します。
  5. 重大度を選択ドロップダウンリストで、目的の重大度レベルを選択します。
  6. **重大度の変更理由を追加(必須)**テキストボックスに、重大度を変更する理由を簡単に説明する文を追加します。
  7. 重大度の変更を選択します。

脆弱性を選択すると、その都度次の通りとなります:

  • その重大度は、Vulnerability details page(脆弱性の詳細ページ)と脆弱性レポートの両方で更新されます。
  • 重大度にバッジが追加され、重大度がオーバーライドされたことが示されます。
  • 手動による重大度の調整は、脆弱性のhistory(履歴)に記録されます。

脆弱性の重大度のオーバーライド

ユーザーが脆弱性の重大度をオーバーライドするのを防ぐ

この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。

環境によっては、ユーザーが脆弱性の重大度をオーバーライドできないようにする必要がある場合があります。hide_vulnerability_severity_override機能フラグを使用すると、管理者は脆弱性レポートで重大度のオーバーライド機能を非表示にできます。この機能は、組織がプロジェクト全体で標準化された脆弱性の重大度評価を維持するのに役立ちます。この機能を有効にすると、次のようになります:

  • 脆弱性レポートのアクションドロップダウンリストから重大度の変更オプションを非表示にします。
  • ユーザーが重大度レベルを手動で変更できないようにすることで、スキャナーの結果に基づいて一貫した脆弱性スコアリングを保証します。
  • すべてのアクセス方法で一貫性を維持しながら、脆弱性の重大度の変更に関連するすべてのAPIエンドポイントを無効にします。

hide_vulnerability_severity_overrideフラグを有効にするには、機能フラグの背後にデプロイされたGitLab機能を有効/無効にするを参照してください。

既存のイシューに脆弱性を追加する

1つまたは複数の脆弱性を脆弱性レポート内の既存のイシューにリンクできます。

前提要件:

  • 少なくともプロジェクトに対するメンテナーロールか、カスタムロールでのadmin_vulnerability権限を持っている必要があります。admin_vulnerability権限は、GitLab 17.0のデベロッパーロールから削除されました。

脆弱性を既存のイシューにアタッチするには、次のようにします:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
  2. セキュリティ > 脆弱性レポートに移動します。
  3. 脆弱性を選択します:
    • 個々の脆弱性を選択するには、各脆弱性の横にあるチェックボックスを選択します。
    • ページ上のすべての脆弱性を選択するには、テーブルヘッダーのチェックボックスを選択します。
  4. アクションを選択ドロップダウンリストで、既存のイシューにアタッチを選択します。
  5. **イシューのURLか、 <#イシューID>**テキストボックスに、オートコンプリートするイシューのIDを入力するか、イシューのURLを追加します。複数のイシューを入力して、脆弱性を追加することができます。
  6. 追加を選択します。

選択した各脆弱性は、指定したすべてのイシューにリンクされます。

脆弱性を既存のイシューにアタッチ

新規のイシューに脆弱性を追加する

1つまたは複数の脆弱性を新規のイシューにリンクできます。

前提要件:

  • 少なくともプロジェクトに対するメンテナーロールか、カスタムロールでのadmin_vulnerability権限を持っている必要があります。admin_vulnerability権限は、GitLab 17.0のデベロッパーロールから削除されました。

脆弱性を新規のイシューにアタッチするには、次のようにします:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
  2. セキュリティ > 脆弱性レポートに移動します。
  3. 脆弱性を選択します:
    • 個々の脆弱性を選択するには、各脆弱性の横にあるチェックボックスを選択します。
    • ページ上のすべての脆弱性を選択するには、テーブルヘッダーのチェックボックスを選択します。
  4. アクションを選択ドロップダウンリストで、新規のイシューにアタッチを選択します。
  5. イシューの作成を選択します。

新規のイシューにリダイレクトされます。選択した各脆弱性は、すでにリンクされています。

脆弱性を新規のイシューにアタッチ

検出された日付で脆弱性をソートする

デフォルトでは、脆弱性は重大度レベルでソートされ、最も重大度の高い脆弱性がリストの一番上に表示されます。

各脆弱性が検出された日付で脆弱性をソートするには、「検出日」列のヘッダーを選択します。

エクスポート

脆弱性レポートにリストされている脆弱性の詳細をエクスポートできます。エクスポート形式はCSV(カンマ区切り値)です。フィルターはエクスポートに適用されないため、すべての脆弱性が含まれます。

含まれるフィールドは次のとおりです:

  • ステータス(ステータス値がどのようにエクスポートされるかの詳細については、次のテーブルを参照してください)
  • グループ名
  • プロジェクト名
  • レポートタイプ
  • スキャナー名
  • 脆弱性
  • 基本的な詳細
  • 追加情報
  • 重大度
  • CVE(共通脆弱性識別子)
  • CWE(共通脆弱性タイプ一覧)
  • その他の識別子
  • 検出日時
  • 場所
  • アクティビティー: デフォルトブランチで脆弱性が解決された場合はtrueを返し、そうでない場合はfalseを返します。
  • コメント
  • フルパス
  • CVSSベクター
  • 無視する理由
  • 脆弱性ID

完全な詳細については、ジョブアーティファクトAPIをご覧ください。gl-*-report.jsonレポートファイル名のいずれかを*artifact_pathの代わりに使用して、たとえば、脆弱性が検出されたファイルへのパスを取得します。

脆弱性レポートに表示されるStatus(ステータス)フィールドの値は、脆弱性エクスポートに含まれる値とは異なります。それらを一致させるには、次の参照テーブルを使用します。

脆弱性レポート脆弱性エクスポート
トリアージが必要検出済み
削除済み削除済み
解決済み解決済み
確認済み確認済み

詳細をエクスポート

脆弱性レポートにリストされているすべての脆弱性の詳細をエクスポートするには、エクスポートを選択します。

エクスポートされた詳細が利用可能になると、メールが届きます。エクスポートされた詳細をダウンロードするには、メール内のリンクを選択します。

一部のCSVリーダーは、行数または列のサイズに制限があり、大規模なエクスポートと互換性がない場合があります。脆弱性エクスポートは、個々のプログラムの制限を考慮していません。

脆弱性を手動で追加する

GitLab脆弱性データベースで使用できない場合は、脆弱性を手動で追加します。プロジェクトの脆弱性レポートでのみ脆弱性を追加できます。

脆弱性を手動で追加するには、次の手順に従います:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。新しいナビゲーションをオンにしている場合、このフィールドは上部のバーにあります。
  2. セキュリティ > 脆弱性レポートを選択します。
  3. 脆弱性を送信を選択します。
  4. フィールドに入力してフォームを送信します。

新しく作成された脆弱性の詳細ページが開きます。

高度な脆弱性管理

高度な脆弱性管理は、機能フラグによって制御されます。詳細については、履歴を参照してください。

GitLabは主に、脆弱性レポートのフィルター処理にPostgreSQLを使用します。データベースインデックス作成の制限と、複数のフィルターを適用する際のパフォーマンス上の課題のため、GitLabでは特定の脆弱性管理機能に高度な検索を使用します。

高度な検索は、次の機能を強化します:

  1. プロジェクトまたはグループの脆弱性レポートで、データをOWASP 2021カテゴリ別にグループ化します。
  2. プロジェクトまたはグループの脆弱性レポートで、脆弱性の識別子に基づいてフィルター処理を行います。
  3. プロジェクトまたはグループの脆弱性レポートで、到達可能性の値に基づいてフィルタリングします。
  4. プロジェクトまたはグループの脆弱性レポートで、有効性チェックの値に基づいてフィルタリングします。

高度な検索は、これらの特定の機能でのみ使用され、ここには他のフィルターと組み合わせた場合も含まれます。他のフィルターは、個別に使用すると、引き続き標準のPostgreSQLフィルター処理を使用します。

要件

高度な脆弱性管理でフィルターを使用するには:

  • 高度な検索が有効になっている必要があります。
  • プロジェクトまたはグループの脆弱性レポートの参照が必要です。この機能はセキュリティダッシュボードではサポートされていませんが、イシュー537807でサポートが提案されています。

運用上の脆弱性

運用上の脆弱性タブには、運用コンテナスキャン(OCS)によって検出された脆弱性がリスト表示されます。このタブは、プロジェクト、グループ、およびセキュリティセンターの脆弱性レポートに表示されます。