脆弱性ページ

プロジェクト内の各脆弱性には、脆弱性の詳細が記載された脆弱性ページがあります:

  • 説明
  • 検出時
  • 現在の状態
  • 可能なアクション
  • リンクされたイシュー
  • アクションログ

スキャナが脆弱性を誤検出と判断した場合、脆弱性のページの上部に警告メッセージが表示されます。

プロジェクトのデフォルトブランチで脆弱性が検出されなくなったら、そのステータスを解決済みに変更してください。これにより、将来のマージで誤って再導入された場合でも、新しいレコードとして再度レポートされるようになります。複数の脆弱性のステータスを変更するには、脆弱性レポートのアクティビティフィルタを使用します。

脆弱性の説明(ULTIMATE SAAS BETA)

GitLabは大規模な言語モデルを使用することで、脆弱性に対応することができます:

  • 脆弱性を要約します。
  • 開発者やセキュリティアナリストが、脆弱性、脆弱性がどのように悪用されるか、脆弱性を修正する方法を理解できるようにします。
  • 推奨される緩和策を提供します。

脆弱性の説明

脆弱性とその可能な緩和策について理解を深めるには、「この脆弱性について説明する」機能を使用してください。

前提条件:

  • GitLab Ultimateサブスクリプションのティアを持っている必要があります。
  • プロジェクトのメンバーである必要があります。
  • 脆弱性はSASTの発見でなければなりません。

すべてのAI機能を有効にする方法については、こちらをご覧ください。

脆弱性を説明するために

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. セキュリティとコンプライアンス > 脆弱性レポートを選択します。
  3. ツール」ドロップダウンリストで、「SAST」を選択します。
  4. 説明したい SAST 脆弱性を選択します。
  5. 脆弱性のページの下にある「試してみる」を選択します。

ページの右側に応答が表示されます。

Explain this vulnerability

GitLab.comではこの機能が利用できます。デフォルトではGoogleのtext-bison-001 。このモデルでパフォーマンスが低下したイベントには、代わりにAnthropicのclaude

大規模言語モデルが正しい結果を生成することを保証するものではありません。説明は注意して使用してください。

サードパーティのAI APIと共有されるデータ

以下のデータは第三者のAI APIと共有されます:

  • 脆弱性のタイトル(使用するスキャナによってはファイル名を含む場合があります)。
  • 脆弱性の識別子。
  • コードブロック。ただし、「プロンプトと共にコードを送信」チェックボックスが選択されている場合のみ(脆弱性レコードの指示に従い、単一行および複数行)。
  • ファイル名

脆弱性ステータス値

脆弱性のステータスは以下のようになります:

  • 検出されました:新たに発見された脆弱性のデフォルトの状態。UI では “Needs triage” と表示されます。
  • 確認済み:ユーザーがこの脆弱性を確認し、正確であることを確認しました。
  • 却下ユーザがこの脆弱性を確認し、正確でないなどの理由で解決されないと判断した場合。却下された脆弱性は、その後のスキャンで検出されても無視されます。
  • 解決済み:脆弱性が修正されたか、または存在しなくなりました。解決された脆弱性が再び導入され、検出された場合、そのレコードは復活し、ステータスは「検出済み」に設定されます。

脆弱性却下の理由

  • GitLab 15.11 でdismissal_reason という機能フラグで導入されました。
  • GitLab 15.11でGitLab.comで有効になりました。セルフマネジメントのお客様で、GitLab 15.11でこの機能を使用したい場合は、サポートまでご連絡ください。
  • GitLab 16.0ではデフォルトで有効。

脆弱性を却下する場合、なぜ却下するのかを明確にするために以下の理由のいずれかを選択する必要があります:

  • 許容可能なリスク:受容可能なリスク:脆弱性は既知であり、是正も緩和もされていないが、受容可能なビジネスリスクであると考えられる場合。
  • 誤検知:脆弱性が存在しないにもかかわらず、テスト結果が誤ってシステムの脆弱性の存在を示す報告エラー。
  • 緩和策:組織が採用する管理、オペレーション、または技術的統制(すなわち、保護措置または対策)で、情報システムに対して同等または同等の保護を提供するもの。
  • テストで使用:テストの一部である、またはテストデータであるため、発見が脆弱性でないこと。
  • 該当しない脆弱性は既知であり、修正または緩和されていませんが、更新されないアプリケーションの一部にあると考えられます。

脆弱性のステータスの変更

脆弱性ページから脆弱性のステータスを変更するには、以下の手順に従います:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. セキュリティ > 脆弱性レポーターを選択します。
  3. 脆弱性の説明を選択します。
  4. ステータス] ドロップダウン リストからステータスを選択し、[ステータスの変更] を選択します。

    GitLab 15.11以降では、脆弱性のステータスをDismissedに変更する場合、Dismissedの理由を選択する必要があります。

  5. オプションとして、ページの一番下でログエントリにコメントを追加します。

誰がいつ変更したかを含むステータス変更の詳細は、脆弱性のアクションログに記録されます。

脆弱性に対するイシューの作成

脆弱性のページからイシューを作成し、その脆弱性を解決または緩和するために取られたすべてのアクションを追跡することができます。

作成できるのは以下のいずれかです:

Jira 課題を作成するには、プロジェクトでJira インテグレーションが有効になっている必要があります。Jira インテグレーションが有効な場合、GitLab 課題機能は利用できないことに注意してください。

脆弱性の GitLab 課題を作成する

脆弱性の GitLab イシューを作成するには、次のようにします:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. セキュリティ > 脆弱性レポーターを選択します。
  3. 脆弱性の説明を選択します。
  4. シューの作成]を選択します。

プロジェクトにイシューが作成され、脆弱性レポートの情報が事前に入力されます。その後、イシューが開かれ、さらにアクションを実行できるようになります。

脆弱性に対する Jira 課題の作成

前提条件:

  • Jira インテグレーションを有効にします。設定の一部として、[脆弱性からの Jira イシュー作成を有効にする] オプションを選択する必要があります。
  • 各ユーザーは、ターゲット プロジェクトでイシューを作成する権限を持つ個人の Jira ユーザー アカウントを持っている必要があります。

脆弱性の Jira 課題を作成するには、以下の手順に従います:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. セキュリティ > 脆弱性レポーターを選択します。
  3. 脆弱性の説明を選択します。
  4. Jira イシューを作成] を選択します。
  5. Jira にログインしていない場合は、サインインします。

Jira イシューが作成され、新しいブラウザ タブで開かれます。概要と 説明フィールドは脆弱性の詳細から事前に入力されます。

GitLab 課題とは異なり、Jira 課題がオープンかクローズかのステータスは GitLab ユーザーインターフェースには表示されません。

脆弱性とイシューのリンク

note
Jira 課題のサポートが有効になっている場合、GitLab 課題は無効になっているため、この機能は利用できません。

脆弱性を 1 つ以上の既存の GitLab 課題にリンクすることができます。リンクを追加すると、脆弱性を解決または緩和するイシューの追跡に役立ちます。

脆弱性にリンクされたイシューは、脆弱性レポーターと脆弱性のページに表示されます。

脆弱性とリンクされたイシューの間には以下のような条件がありますのでご注意ください:

  • 脆弱性のページには関連するイシューが表示されますが、イシューのページには関連する脆弱性が表示されません。
  • イシューは一度に一つの脆弱性にしか関連づけられません。
  • イシューはグループやプロジェクトをまたいでリンクすることができます。

脆弱性を既存のイシューにリンクさせるには:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. セキュリティ > 脆弱性レポーターを選択します。
  3. 脆弱性の説明を選択します。
  4. リンクされたイシューセクションで、プラスアイコン({plus})を選択します。
  5. リンクする各イシューについて、以下のいずれかを実行します:
    • イシューへのリンクを貼り付けます。
    • イシューのID(先頭にハッシュ#)を入力してください。
  6. Add(追加)を選択します。

選択されたイシューがリンクされたissueセクションに追加され、リンクされたissueカウンターが更新されます。

脆弱性の解決

脆弱性の中には、すでに解決策がわかっているものもあります。そのような場合、脆弱性のページにはマージリクエストで解決するオプションがあります。

以下のスキャナがこの機能でサポートされています:

脆弱性を解決するには、以下のいずれかの方法があります:

Create merge request from vulnerability

マージリクエストによる脆弱性の解決

脆弱性をマージリクエストで解決するには:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. セキュリティ > 脆弱性レポーターを選択します。
  3. 脆弱性の説明を選択します。
  4. マージリクエストで解決する] ドロップダウンリストから、[マージリクエストで解決する] を選択します。

脆弱性の解決に必要なパッチを適用するマージリクエストが作成されます。標準のワークフローに従ってマージリクエストを処理します。

脆弱性の手動解決

脆弱性に対してGitLabが生成したパッチを手動で適用する方法です:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. セキュリティ > 脆弱性レポーターを選択します。
  3. 脆弱性の説明を選択します。
  4. マージリクエストで解決する] ドロップダウンリストから、[解決するパッチをダウンロードする] を選択します。
  5. ローカルプロジェクトに、パッチを生成するために使用されたものと同じコミットがチェックアウトされていることを確認してください。
  6. git apply remediation.patch を実行してください。
  7. 変更を確認し、ブランチにコミットします。
  8. マージリクエストを作成して、変更をメインブランチに適用します。
  9. 標準的なワークフローに従ってマージリクエストを処理します。

脆弱性に対するセキュリティトレーニングを有効にします。

GitLab 14.9で導入されました

note
セキュリティ・トレーニングは、オフラインの環境、つまりセキュリティ対策として公開インターネットから隔離されたコンピュータではアクセスできません。サードパーティのトレーニングベンダーによっては、_無料の_アカウントにサインアップする必要がある場合があります。Secure Code WarriorKontraSecureFlagのいずれかにアクセスしてアカウントにサインアップしてください。GitLabはこれらのサードパーティベンダーにユーザー情報を送信することはありませんが、CWEまたはOWASP識別子とファイル拡張子の言語名を送信します。

セキュリティトレーニングは、開発者が脆弱性を修正する方法を学ぶのに役立ちます。開発者は、検出された脆弱性に関連する、選択された教育プロバイダからのセキュリティトレーニングを閲覧することができます。

プロジェクト内の脆弱性に対するセキュリティトレーニングを有効にするには、以下の手順に従ってください:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. セキュア > セキュリティ設定を選択します。
  3. タブバーで、脆弱性管理を選択します。
  4. セキュリティトレーニングプロバイダを有効にするには、トグルをオンにします。

各インテグレーションは、脆弱性識別子(例えば、CWE や OWASP)と言語をセキュリティトレーニングベンダーに送信します。その結果、ベンダーのトレーニングへのリンクがGitLabの脆弱性に表示されます。

脆弱性のセキュリティトレーニングを見る

GitLab 14.9で導入されました

脆弱性ページには、セキュリティトレーニングが有効になっている場合、検出された脆弱性に関連するトレーニングリンクが含まれているかもしれません。トレーニングが利用できるかどうかは、有効になっているトレーニングベンダーが特定の脆弱性に一致するコンテンツを持っているかどうかに依存します。トレーニングコンテンツは脆弱性の識別子に基づいて要求されます。脆弱性に付与される識別子は脆弱性ごとに異なり、利用可能なトレーニングコンテンツはベンダーごとに異なります。トレーニングコンテンツが表示されない脆弱性もあります。CWE を持つ脆弱性は、トレーニング結果を返す可能性が最も高いです。

脆弱性のセキュリティトレーニングを表示するには、以下の手順に従います:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. セキュリティ > 脆弱性レポーターを選択します。
  3. セキュリティトレーニングを表示する脆弱性を選択します。
  4. トレーニングを表示するを選択します。