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

AIで脆弱性を修正する

  • プラン: Ultimate
  • アドオン: GitLab Duo Enterprise、GitLab Duo with Amazon Q
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

GitLab Duo脆弱性の修正は、セキュリティ脆弱性を自動的に解決するのに役立ちます。

概要を見る

AI支援を責任を持って使用する

すべてのAIベースのシステムと同様、大規模言語モデルは常に正しい結果を生成するとは限りません。提案された変更をマージする前に、必ずレビューする必要があります。レビューする際は、以下を確認してください:

  • アプリケーションの既存の機能が維持されていること。
  • その脆弱性が、組織の標準に従って解決されていること。

前提条件

  • プロジェクトのメンバーである必要があります。
  • 脆弱性は、サポートされているアナライザーからのSAST検出である必要があります:
  • 脆弱性は、サポートされているタイプである必要があります。

すべてのGitLab Duo機能を有効にする方法の詳細をご覧ください。

脆弱性の修正でサポートされている脆弱性

提案される解決策の品質を確保するため、脆弱性の修正は特定の脆弱性に限定して提供されています。脆弱性の修正を提供するかどうかは、当該脆弱性のCommon Weakness Enumeration(CWE)識別子に基づいてシステムが判断します。

現在対象としている脆弱性は、自動化システムおよびセキュリティ専門家による検証結果に基づいて選定しています。今後は、より多くの種類の脆弱性に対応できるよう、カバレッジの拡大を進めています。

脆弱性の修正でサポートされているCWEの完全なリストを表示する
  • CWE-23: 相対パストラバーサル
  • CWE-73: ファイル名またはパスの外部制御
  • CWE-78: OSコマンドで使用される特殊文字の不適切なニュートラル化(「OSコマンドインジェクション」)
  • CWE-80: Webページのスクリプト関連HTMLタグの不適切なニュートラル化(Basic XSS)
  • CWE-89: SQLコマンドで使用される特殊文字の不適切なニュートラル化(「SQLインジェクション」)
  • CWE-116: 出力の不適切なエンコードまたはエスケープ
  • CWE-118: インデックス可能なリソースの不正なアクセス(「範囲エラー」)
  • CWE-119: メモリバッファの範囲内での操作の不適切な制限
  • CWE-120: 入力サイズのチェックなしのバッファコピー(「Classicバッファオーバーフロー」)
  • CWE-126: バッファオーバーリード
  • CWE-190: 整数のオーバーフローまたはラップアラウンド
  • CWE-200: 権限のないアクターへの機密情報の公開
  • CWE-208: 観測可能なタイミングのずれ
  • CWE-209: 機密情報を含むエラーメッセージの生成
  • CWE-272: 最小特権の違反
  • CWE-287: 不適切な認証
  • CWE-295: 不適切な証明書の検証
  • CWE-297: ホストのミスマッチによる証明書の不適切な検証
  • CWE-305: 主要な脆弱性による認証バイパス
  • CWE-310: 暗号学的な問題
  • CWE-311: 機密情報の暗号化の欠落
  • CWE-323: 暗号化におけるNonce、キーペアの再利用
  • CWE-327: 破損した、または危険な暗号学的アルゴリズムの使用
  • CWE-328: 脆弱なハッシュの使用
  • CWE-330: 不十分にランダムな値の使用
  • CWE-338: 暗号学的に脆弱な擬似乱数ジェネレーター(PRNG)の使用
  • CWE-345: データ信頼性の不十分な検証
  • CWE-346: オリジン検証エラー
  • CWE-352: クロスサイトリクエストフォージェリ
  • CWE-362: 不適切な同期を使用した共有リソースを使用した同時実行(「競合状態」)
  • CWE-369: ゼロ除算
  • CWE-377: 脆弱な一時ファイル
  • CWE-378: 脆弱な権限を持つ一時ファイルの作成
  • CWE-400: 制御されていないリソース消費
  • CWE-489: アクティブなデバッグコード
  • CWE-521: 脆弱なパスワード要件
  • CWE-539: 機密情報を含む永続的なCookieの使用
  • CWE-599: OpenSSL証明書の検証の欠落
  • CWE-611: XML外部エンティティ参照の不適切な制限
  • CWE-676: 潜在的に危険な関数の使用
  • CWE-704: 不正な型変換またはキャスト
  • CWE-754: 異常または例外的な状態の不適切なチェック
  • CWE-770: 制限またはスロットリングなしのリソースの割り当て
  • CWE-1004: 「HttpOnly」フラグのない機密Cookie
  • CWE-1275: 不適切なSameSite属性を持つ機密Cookie

脆弱性の修正のためにサードパーティのAI APIと共有されるデータ

次のデータは、サードパーティのAI APIと共有されます:

  • 脆弱性名
  • 脆弱性の説明
  • 識別子(CWE、OWASP)
  • 脆弱なコード行を含むファイル全体
  • 脆弱なコード行(行番号)

ワークフロー

脆弱性の修正は、さまざまなワークフローで利用できます。次のことができます:

  • 脆弱性レポートから既存の脆弱性を解決する。
  • マージリクエストのコンテキストで脆弱性を解決する。

脆弱性レポートから既存の脆弱性を解決する

脆弱性の修正をサポートする脆弱性を見つける

脆弱性を解決するには、以下を実行します:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. セキュリティ > 脆弱性レポートを選択します。
  3. オプション。デフォルトのフィルターを削除するには、クリア clear )を選択します。
  4. 脆弱性のリストの上にある、フィルターバーを選択します。
  5. 表示されるドロップダウンリストで、アクティビティを選択し、GitLab Duo(AI)カテゴリの脆弱性の修正は利用可能を選択します。
  6. フィルターフィールドの外側を選択します。脆弱性の重大度の合計と、一致する脆弱性のリストが更新されます。
  7. 解決するSAST脆弱性を選択します。
    • 青色のアイコンは、脆弱性の修正をサポートする脆弱性の横に表示されます。

選択した脆弱性を解決する

解決をサポートする脆弱性を選択したら、次の手順を実行します:

  1. 右上隅で、AIを使用して解決するを選択します。このプロジェクトが公開プロジェクトである場合は、MRを作成すると、脆弱性と提供された解決策が公開されることに注意してください。MRを非公開で作成するには、非公開フォークを作成し、このプロセスを繰り返します。
  2. 追加のコミットをMRに追加します。これにより、新しいパイプラインが強制的に実行されます。
  3. パイプラインが完了したら、パイプラインのセキュリティータブで、脆弱性が表示されなくなったことを確認します。
  4. 脆弱性レポートで、脆弱性を手動で更新します。

AI修正の提案を含むマージリクエストが開きます。提案された変更をレビューし、標準のワークフローに従ってマージリクエストを処理します。

イシュー476553で、この機能に関するフィードバックをお寄せください。

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

GitLab Duo脆弱性の修正をマージリクエストで使用して、マージされる前に脆弱性を修正できます。脆弱性の修正は、脆弱性の検出を解決するマージリクエストの提案コメントを自動的に作成します。

脆弱性の検出を解決するには、以下を実行します:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. マージリクエストを選択します。
  3. マージリクエストを選択します。
    • 脆弱性の修正でサポートされている脆弱性の検出は、タヌキAIアイコン( tanuki-ai )で示されます。
  4. サポートされている検出を選択して、セキュリティ検出ダイアログを開きます。
  5. 右下隅で、AIを使用して解決するを選択します。

AI修正の提案を含むコメントがマージリクエストで開きます。提案された変更をレビューし、標準のワークフローに従ってマージリクエストの提案を適用します。

イシュー476553で、この機能に関するフィードバックをお寄せください。

トラブルシューティング

脆弱性の修正では、提案された修正を生成できない場合があります。一般的な原因は次のとおりです:

  • 誤検出がある:
    • 修正を提案する前に、AIモデルは脆弱性が有効かどうかを評価します。その脆弱性が真の脆弱性ではない、または修正する価値がないと判断する場合があります。
    • これは、脆弱性がテストコード内で発生している場合に起こることがあります。テストコード内であっても脆弱性を修正する方針を取る組織もありますが、モデルによってはそれらを誤検出と判断する場合があります。
    • 脆弱性が誤検出であるか、修正する価値がないことに同意する場合は、脆弱性を無視するして、一致する理由を選択する必要があります。
      • SAST設定をカスタマイズするか、GitLab SASTルールに関する問題を報告するには、SASTルールを参照してください。
  • 一時的または予期しないエラー:
    • エラーメッセージには、an unexpected error has occurredthe upstream AI provider request timed outsomething went wrong、または同様の原因が記載されている場合があります。
    • これらのエラーは、AIプロバイダーまたはGitLab Duoの一時的な問題が原因である可能性があります。
    • 新しいリクエストが成功する可能性があるため、脆弱性の解決をもう一度試すことができます。
    • これらのエラーが引き続き表示される場合は、GitLabにお問い合わせください。
  • Resolution target could not be found in the merge request, unable to create suggestionエラー:
    • このエラーは、ターゲットブランチが完全なセキュリティスキャンパイプラインを実行していない場合に発生する可能性があります。マージリクエストドキュメントを参照してください。