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

脆弱性レポート

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

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

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

パフォーマンス上の理由により、脆弱性の総数が1000を超える場合、脆弱性レポートでは正確な数値ではなく1000以上と表示されます。この制限は、ページ上部に表示されるカウントのみに影響します。テーブル内にはすべての脆弱性を見つけることができます。

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

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

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

脆弱性レポートの内容

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

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

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

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

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

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

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

  • イシュー work-item-issue : 脆弱性に対して作成されたイシューへのリンク。
  • マージリクエスト merge-request : 脆弱性に対して作成されたマージリクエストへのリンク。
  • チェックされた円 check-circle-dashed : 脆弱性は修正されました。
  • 誤検出 false-positive : スキャナーは、この脆弱性が誤検出であると判断しました。
  • 解決策 bulb : 脆弱性に対処策が利用可能であることを示します。
  • 脆弱性の修正 tanuki-ai : 脆弱性に利用可能なAI修正があることを示します。
  • 誤検出判定 tanuki-ai : GitLab Duoがこの脆弱性を誤検出として分析したことを示します。アイコンにカーソルを合わせると、信頼度スコアと説明が表示されます。

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

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

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

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

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

前提条件:

  • プロジェクトまたはグループに対して、セキュリティマネージャー、デベロッパー、メンテナー、またはオーナーのロールが必要です。

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

  1. 上部のバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
  2. 左側のサイドバーで、セキュリティ > 脆弱性レポートを選択します。

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

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

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

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

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

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

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

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

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

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

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

スキャナーフィルター

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

プロジェクトフィルター

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

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

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

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

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

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

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

到達可能性フィルター

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

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

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

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

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

脆弱性をグループ化する

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

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

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

脆弱性をグループ化する

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

  1. 上部のバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
  2. 左側のサイドバーで、セキュリティ > 脆弱性レポートを選択します。
  3. グループごとドロップダウンリストから、グループを選択します。

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

脆弱性の詳細を表示する

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

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

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

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

前提条件:

  • プロジェクトに対して、セキュリティマネージャー、メンテナー、またはオーナーのロールが必要です。admin_vulnerability権限は、GitLab 17.0でデベロッパーロールから削除されました。

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

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

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

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

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

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

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

前提条件:

  • プロジェクトに対して、セキュリティマネージャー、メンテナー、またはオーナーのロール、またはadmin_vulnerability権限が必要です。

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

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

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

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

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

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

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

環境によっては、ユーザーが脆弱性の重大度をオーバーライドできないようにする必要がある場合があります。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. プロジェクトまたはグループの脆弱性レポートにおける有効性チェックのステータスに基づくフィルター。
  5. プロジェクトまたはグループの脆弱性レポートにおけるポリシー違反のバイパス理由に基づくフィルター。
  6. 新しいセキュリティダッシュボードのパネルとすべてのダッシュボードデータをフィルターします。

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

GitLab Self-Managedでは、GitLab 18.7以前のバージョンからアップグレードした後、データ移行が完了するまで、高度な脆弱性管理機能が一時的に(通常は数時間)利用できない場合があります。移行が完了すると、すべての機能が利用可能になります。

要件

高度な脆弱性管理の機能を使用するには:

  • 高度な検索を有効にする必要があります。
  • GitLab Self-Managedでは、高度な検索を設定した後、高度な検索による検索チェックボックスが選択されていることを確認してください。

運用上の脆弱性

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