次の方法で共有


依存関係スキャンを設定する

GitHub Advanced Security for Azure DevOps の依存関係スキャンは、ソース コードで使用されているオープンソース コンポーネントを検出し、関連する脆弱性があるかどうかを検出します。 オープンソースコンポーネントから見つかった脆弱性には、アラートとしてフラグが設定されます。 Azure DevOps 用の GitHub Advanced Security またはスタンドアロン エクスペリエンスを使用している場合は、Azure DevOps の GitHub Code Security が有効になっている必要があります。

GitHub Advanced Security for Azure DevOps は、Azure Repos と連携して動作します。 GitHub リポジトリで GitHub Advanced Security を使用するには、GitHub Advanced Security をご覧ください。

[前提条件]

カテゴリ 要求事項
アクセス許可 - リポジトリのすべてのアラートの概要を表示するには、リポジトリに対する「コントリビューター」権限が必要です。
- Advanced Security でアラートを解除するには、プロジェクト管理者の権限が必要です。
- Advanced Security でアクセス許可を管理するには、プロジェクト コレクション管理者グループのメンバーであること、またはAdvanced Security: 設定の管理のアクセス許可が許可に設定されている必要があります。

高度なセキュリティの権限の詳細については、「高度なセキュリティ権限の管理」を参照してください。

依存関係スキャンについて

依存関係スキャンは、脆弱であることがわかった、コードが依存する (直接的または推移的な) オープンソース コンポーネントに対してアラートを生成します。 直接的な依存関係は、コードが直接使用するライブラリです。 推移的な依存関係は、直接依存関係が使用するライブラリまたはその他のソフトウェアです。

依存関係スキャンの検出について説明します

リポジトリの依存関係グラフが変更されるたびに、および依存関係スキャン タスクを含むパイプラインが実行されるたびに、コンポーネントの新しいスナップショットが格納されます。

検出されたすべての使用中の脆弱なコンポーネントについて、コンポーネントと脆弱性がビルド ログに一覧表示され、[高度なセキュリティ] タブにアラートとして表示されます。GitHub によってレビューされ、GitHub Advisory Database に追加されたアドバイザリのみが、依存関係スキャン アラートを作成します。 ビルド ログには、詳細な調査のために個々のアラートへのリンクが含まれています。 アラートの詳細については、「依存関係スキャン アラートの修正」を参照してください。

ビルド ログには、検出された各脆弱性に関する基本情報も含まれています。 これらの詳細には、重大度、影響を受けるコンポーネント、脆弱性のタイトル、関連する CVE が含まれます。

依存関係スキャンのビルド出力のスクリーンショット

サポートされているコンポーネント エコシステムとバージョンの一覧については、 サポートされているパッケージ エコシステムを参照してください。

依存関係スキャンアラートについて

Azure DevOps の Repos の [高度なセキュリティ] タブは、セキュリティ アラートを表示するためのハブであり、既定では依存関係スキャン アラートが表示されます。 ブランチ、パイプライン、パッケージ、重大度でフィルター処理できます。 アラートを選択して、修復ガイダンスなどの詳細を確認できます。 現時点では、アラート ハブには、PR ブランチで完了したスキャンに関するアラートは表示されません。

リポジトリで脆弱なパッケージが検出されたとき、依存関係スキャン アラートの修正作業には、通常、より高いパッケージ バージョンへのアップグレードや、問題のあるパッケージの削除がともないます。 この作業提案は、直接的および推移的 (または間接的) の両方の依存関係に適合します。 [高度なセキュリティ] タブの既定のビューは、リポジトリの既定のブランチに対するアクティブなアラートです。

パイプラインまたはブランチの名前が変更された場合、結果に影響はありません。新しい名前が表示されるまでに最大 24 時間かかる場合があります。

リポジトリの依存関係スキャンアラート ビューのスクリーンショット

依存関係スキャン タスクがインストールされているパイプラインの最新のビルドで脆弱なコンポーネントが検出されなくなると、アラートの状態は自動的に Closed に更新されます。 解決したアラートを表示するには、メイン ツール バーの State フィルターを利用し、Closed を選択します。

閉じた依存関係スキャン アラートを表示するスクリーンショット

リポジトリの Advanced Security をオフにすると、[高度なセキュリティ] タブ内の結果と、[タスクの構築] にアクセスできなくなります。 ビルド タスクは失敗しませんが、Advanced Security が無効になっている間、ビルドの結果はタスクと共に実行され、非表示になり、保持されません。

[アラートの詳細]

特定のアラートをクリックして、アラートに関する詳細と修復ガイダンスの詳細を確認することもできます。

依存関係スキャン アラートの詳細を示すスクリーンショット

セクション 説明
推奨 推奨事項のテキストは、脆弱性データ プロバイダーである GitHub Advisory Database から直接取得されます。 通常、このガイダンスは、識別されたコンポーネントを脆弱でないバージョンにアップグレードすることを提案します。
場所 [場所] セクションでは、依存関係スキャン タスクが使用中の脆弱なコンポーネントを検出するパスについて詳しく説明します。 基になるビルド スキャンからソース内のコミットされたファイルにファイルを解決できる場合は、[場所] カードがクリック可能なリンクとして表示されます。 ビルドの一部 (ビルド成果物など) としてファイルが生成された場合、リンクはクリックできません。 ビルド ログを確認して、コンポーネントがどのようにビルドに取り込まれたかを把握してください。
説明 説明は、GitHub アドバイザリの説明から提供されます。

検出

[検出] タブの下に一覧表示されるパイプラインは、脆弱なコンポーネントが見つかったパイプラインです。 各行は、影響を受けるパイプラインの最新ビルドと、パッケージが最初に導入された日付の詳細を示します。 脆弱なパッケージが一部のパイプラインで固定されているが、すべてではない場合は、部分的に固定された行が表示されます。

修正されていないアラートの依存関係スキャン検出ビューのスクリーンショット

アラートが解決されると、アラートは自動的に Closed 状態に移動し、[検出] タブの下に最新の実行パイプラインに緑色のチェックマークが表示されます。つまり、更新されたコンポーネントを含むコードがそのパイプラインで実行されたことを意味します。

アラートの依存関係スキャン検出ビューのスクリーンショット

重大度

GitHub Advisory Database は CVSS スコアを提供します。これは次のガイドラインを使用してアラートに対する重大度 (低、中、高、または重大) に変換されます。

CVSS スコア 重大度
1.0 < スコア < 4.0
4.0 < スコア < 7.0 ミディアム
7.0 < スコア < 9.0
スコア >= 9.0 危うい

検出の詳細

一般的に、[Finding details] (検索結果の詳細) には、脆弱なパッケージとルートの依存関係という 2 つのセクションがあります。 脆弱なパッケージは、潜在的に脆弱なコンポーネントです。 ルート依存関係セクションには、脆弱性につながる依存関係チェーンを統括する最上位コンポーネントが含まれています。

脆弱なパッケージが直接の依存関係としてのみ参照されている場合は、"脆弱なパッケージ" セクションのみが表示されます。

脆弱なパッケージが直接的な依存関係と推移的な依存関係の両方として参照されている場合、パッケージは "脆弱なパッケージ" と "ルートの依存関係" セクションの両方に表示されます。

脆弱なパッケージが推移的な依存関係としてのみ参照されている場合、パッケージは "脆弱なパッケージ" セクションに表示され、脆弱なパッケージを参照するルート依存関係は "ルート依存関係" セクションに表示されます。

依存関係スキャン アラートを管理する

リポジトリのアラートの表示

既定では、アラート ページには、リポジトリの既定のブランチの依存関係スキャン結果が表示されます。

アラートの状態は、他のブランチとパイプラインにアラートが存在する場合でも、既定のブランチと最新の実行パイプラインの状態を反映します。

依存関係スキャン アラートを修正する

直接的な依存関係は、リポジトリに存在するコンポーネントです。 推移的または間接的な依存関係は、直接的な依存関係から使用されるコンポーネントです。 脆弱性が直接的と推移的のどちらの依存関係に見つかったかに関係なく、プロジェクトは引き続き脆弱です。

脆弱な推移的な依存関係を修正するには、通常、識別された直接的な各依存関係に使用される脆弱なコンポーネントのバージョンを明示的にオーバーライドする形式を使用します。 ルート依存関係が脆弱なコンポーネントの使用を安全なバージョンにアップグレードしたら、複数の個別のオーバーライドではなく、各ルート依存関係をアップグレードできます。

Yarn/Npm の依存関係を更新する

仮に、このパッケージには 2 つの脆弱性があるとします。 1 つは直接的な依存関係である axios に、1 つは推移的な依存関係 (間接的な依存関係、または依存関係の依存関係とも呼ばれます) である acorn に対するものです。

{
 "name": "my-package",
 "version": "1.0.0",
 "dependencies": {
   "axios": "0.18.0",
   "eslint": "5.16.0",
 }
}

axios の現在のバージョンにはサービス拒否 (DoS) の脆弱性があり、v0.18.1 以上に更新することが推奨されています。 これは直接的な依存関係であるため、使用する axios のバージョンを制御できます。必要なのは、取り込む axios のバージョンを更新することのみです。 更新された package.json は次のようになります。

{
  "name": "my-package",
  "version": "1.0.0",
  "dependencies": {
    "axios": "0.19.2",
    "eslint": "5.16.0",
  }
}

現在、表示されるeslintpackage.jsonのバージョンは、正規表現サービス拒否 "Re-DoS" の脆弱性であるacornのバージョンに依存し、バージョン 5.7.4, 6.4.1, 7.1.1 以降に更新することをお勧めします。 依存関係スキャン ツールからアラートを受け取った場合、それには脆弱な依存関係を必要とするルート依存関係が記載されています。

Yarn を使用している場合は、yarn why を使用して、依存関係チェーン全体を見つけることができます。

> $ yarn why acorn
 yarn why v1.22.4
 [1/4] Why do we have the module "acorn"...?
 [2/4] Initialising dependency graph...
 [3/4] Finding dependency...
 [4/4] Calculating file sizes...
 => Found "acorn@6.4.0"
 info Reasons this module exists
   - "eslint#espree" depends on it
   - Hoisted from "eslint#espree#acorn"
 info Disk size without dependencies: "1.09MB"
 info Disk size with unique dependencies: "1.09MB"
 info Disk size with transitive dependencies: "1.09MB"
 info Number of shared dependencies: 0
 Done in 0.30s.

依存関係チェーン全体は eslint>espree>acorn です。 依存関係チェーンがわかったら、Yarn の別の機能である選択的な依存関係解決を使用して、使用される acorn のバージョンをオーバーライドできます。

package.json の resolutions フィールドを使用して、バージョンのオーバーライドを定義します。 パッケージをオーバーライドする 3 つの異なる方法を、お勧めしない順に示します。

{
  "name": "yarn-resolutions",
  "version": "1.0.0",
  "license": "MIT",
  "dependencies": {
    "axios": "0.19.2",
    "eslint": "5.16.0"
  },
  "resolutions": {
    // DO NOT USE!
    "**/acorn": "6.4.1",
    // BETTER
    "eslint/**/acorn": "6.4.1",
    // BEST
    "eslint/espree/acorn": "6.4.1"
  }
}

**/acorn パターンを使用すると、すべての依存関係にわたる acorn パッケージのすべての使用がオーバーライドされます。 これは危険であり、実行時に中断されるため、Yarn v2 で削除しました。

eslint/**/acorn パターンを使用すると、eslint パッケージと、それが依存するすべてのパッケージの下にある acorn パッケージのすべての使用がオーバーライドされます。 すべての依存関係のパッケージをオーバーライドするよりも安全ですが、パッケージの依存関係グラフが大きい場合、ある程度のリスクがあります。 このパターンは、脆弱なパッケージを使用するサブパッケージが多数あり、個々のサブパッケージのオーバーライドを定義することが実用的でないときにお勧めします。

パターン eslint/espree/acorn を使用すると、acorn パッケージ内の espree パッケージでの eslint の使用のみがオーバーライドされます。 脆弱な依存関係チェーンを特定して対象にしていて、パッケージ バージョンのオーバーライドにお勧めの方法です。

エヌピーエム

npm 8.3 以降を使用している場合は、package.json の overrides フィールドを使用できます

推移的な依存関係に特定の変更を加える必要がある場合は、オーバーライドを追加します。 たとえば、依存関係のバージョンを既知のセキュリティの問題でオーバーライドしたり、既存の依存関係をフォークに置き換えたり、同じバージョンのパッケージがどこでも使用されるようにしたりする必要がある場合があります。

{
  "name": "npm-overrides",
  "version": "1.0.0",
  "license": "MIT",
  "dependencies": {
    "axios": "0.19.2",
    "eslint": "5.16.0"
  },
   "overrides":{
       "eslint": {
        "espree": {
          "acorn": "6.4.1"
        }
    }
   }
}

示されているオーバーライドの例は、"acorn パッケージ内の espree パッケージ内の eslint の使用のみをオーバーライドする" npm 版の指定方法を示しています。これは脆弱な依存関係チェーンを特定して対象にしていて、パッケージ バージョンのオーバーライドにお勧めの方法です。 オーバーライドは npm のネイティブ機能です。 依存関係ツリー内のパッケージを別のバージョンに、または全体的に別のパッケージに置き換える方法を提供します。

オーバーライドを設定した後に、package-lock.jsonnode_modules を削除して、npm install をもう一度実行する必要があります。

依存関係とオーバーライド自体の両方がまったく同じ仕様を共有しない限り、直接依存するパッケージのオーバーライドを設定することはできません。たとえば、 axios: "0.18.0" が脆弱であり、 axios: "0.19.2"にアップグレードしようとしているとします。 オーバーライドを使用する代わりに、依存関係のバージョンを直接変更します。

{
  "name": "npm-overrides",
  "version": "1.0.0",
  "license": "MIT",
  "dependencies": {
    "axios": "0.18.0"
  },
  "overrides": {
    // BAD, will throw an EOVERRIDE error
    // "axios": "0.19.2",
  }
}

オーバーライドを設定せずに依存関係のバージョンを更新します。

{
  "name": "npm-overrides",
  "version": "1.0.0",
  "license": "MIT",
  "dependencies": {
    "axios": "0.19.2"
  }
}

Maven の依存関係を更新する

依存関係解決メカニズムは、Yarn で使用されるものほど高度ではありません。 その結果、1 つのプロジェクト内に持つことができる依存関係のバージョンは、1 つのみです。 この問題を解決するために、Maven は "最も近い優先" アルゴリズムを使用します。 つまり、依存関係のツリーでプロジェクトに最も近い依存関係のバージョンが使用されます。

たとえば、次の依存関係グラフがあります。

your-project --- A:1.0.0 --- B:2.0.0
      \
       \__ B:1.0.0

your-projectA:1.0.0 に依存し、次にそれが B:2.0.0 に依存しますが、プロジェクトには B:1.0.0 への直接的な依存関係があります。 したがって、依存関係グラフには 2 つの異なるバージョンの依存関係 B がありますが、依存関係 B のバージョン 1.0.0 はプロジェクトに "最も近い" ため優先されます。

場合によっては、バージョンに互換性があって、このシナリオが機能することがあります。 ただし、A:1.0.0 がバージョン 2.0.0 でのみ使用できる B の何らかの機能に依存している場合、この動作は機能しません。 最悪の場合、このプロジェクトはコンパイルしても実行時に失敗する可能性があります。

実際の例を見てみましょう。

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.microsoft.customer360</groupId>
  <artifactId>maven-dependencies</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>maven-dependencies</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>com.fasterxml.jackson.jaxrs</groupId>
      <artifactId>jackson-jaxrs-json-provider</artifactId>
      <version>2.10.3</version>
    </dependency>
</project>

たとえば、依存している com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider のバージョンが、com.fasterxml.jackson.core:jackson-databindがある のバージョンに依存しているとします。

Maven 依存関係プラグインを使用して、この依存関係を確認できます。 この場合は、mvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databind を実行し、次の出力を取得します。

> $ mvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databind
 [INFO] Scanning for projects...
 [INFO]
 [INFO] ------------< com.microsoft.customer360:maven-dependencies >------------
 [INFO] Building maven-dependencies 1.0-SNAPSHOT
 [INFO] --------------------------------[ jar ]---------------------------------
 [INFO]
 [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ maven-dependencies ---
 [INFO] com.microsoft.customer360:maven-dependencies:jar:1.0-SNAPSHOT
 [INFO] \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.10.3:compile
 [INFO]    \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.10.3:compile
 [INFO]       \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.3:compile
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
 [INFO] Total time:  0.928 s
 [INFO] Finished at: 2020-04-27T14:30:55+02:00
 [INFO] ------------------------------------------------------------------------

まず、脆弱なバージョンの com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider に依存しない com.fasterxml.jackson.core:jackson-databind の新しいバージョンがあるかどうかを確認します。 ある場合、com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider をアップグレードしてそれで完結できます。 そうでない場合は、com.fasterxml.jackson.core:jackson-databind のバージョンをオーバーライドします。

コードスニペットに示されているように、Mavenを使用する場合は「最も近いものが優先される」ため、解決策は脆弱性を修正するためにcom.fasterxml.jackson.core:jackson-databindに直接依存関係を追加することです。

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.microsoft.customer360</groupId>
  <artifactId>maven-dependencies</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>maven-dependencies</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>com.fasterxml.jackson.jaxrs</groupId>
      <artifactId>jackson-jaxrs-json-provider</artifactId>
      <version>2.10.3</version>
    </dependency>
    <!-- Dependency resolutions -->
    <!-- jackson-jaxrs-json-provider -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.10.4</version>
    </dependency>
  </dependencies>
</project>

もう一度 mvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databind を実行して、解決策が機能することを確認できます。

$ mvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databind
[INFO] Scanning for projects...
[INFO]
[INFO] ------------< com.microsoft.customer360:maven-dependencies >------------
[INFO] Building maven-dependencies 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ maven-dependencies ---
[INFO] com.microsoft.customer360:maven-dependencies:jar:1.0-SNAPSHOT
[INFO] \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.10.4:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.827 s
[INFO] Finished at: 2020-04-27T14:32:42+02:00
[INFO] ------------------------------------------------------------------------

依存関係の解決の近くにコメントを追加することをお勧めします。このため、後でだれでも依存関係が存在する理由を把握できます。 これは、ルート依存関係が新しいバージョンを使用するときに、削除できます。それ以外の場合は、依存関係を蓄積します。

実際のプロジェクトでは、依存関係を可能な限りチェーンの上位に追加します。 たとえば、すべてのプロジェクト POM ファイルに別個に配置するのではなく、親 POM ファイルに解決策を追加できます。

NuGet の依存関係を更新する

NuGet で使用される依存関係解決アルゴリズムは、依存関係の 1 つのバージョンのみを使用できるという点で Maven に似ています。 ただし、NuGet は依存関係のバージョンをピン留めしません。

たとえば、依存関係 <PackageReference Include="A" Version="1.2.3" /> がある場合、このパッケージが = 1.2.3 と同等であると予想されるかもしれませんが、実際には >= 1.2.3 を意味します。 厳密なバージョンをピン留めするには、Version="[1.2.3]" を使用する必要があります。 詳細については、NuGet のバージョン範囲についてのドキュメントを参照してください。

既定の範囲の動作に加えて、NuGet は、範囲を満たすために最も低い適用可能なバージョンを復元します。 この動作は、多くの場合、範囲を定義する必要があることを意味します。

Microsoft.AspNetCore.App への依存関係があるこのサンプル プロジェクトを見てみましょう。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>NuGet.Dependencies</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.14" />
  </ItemGroup>
</Project>

これは、Microsoft.AspNetCore.Http.Connectionsに対して脆弱な のバージョンに依存しています。

まず、新しいバージョンの Microsoft.AspNetCore.App に依存する Microsoft.AspNetCore.Http.Connections の更新バージョンがあるかどうかを確認する必要があります。 ある場合、Microsoft.AspNetCore.App をアップグレードしてそれで完結できます。 そうでない場合は、依存する Microsoft.AspNetCore.Http.Connections のバージョンをオーバーライドする必要があります。

NuGet には、yarn why や mvn dependency:tree built-in と同等の機能が無いため、依存関係ツリーを表示する最も簡単な方法として一般的に nuget.org へのアクセスが挙げられます。Microsoft.AspNetCore.App 向けの NuGet ページにアクセスすると、Microsoft.AspNetCore.Http.Connectionsversion >= 1.0.4 && < 1.1.0 に依存していることがわかります。 NuGet のバージョン範囲で、これを表す構文は [1.0.4,1.1.0) です。

Microsoft.AspNetCore.Http.Connections の RCE の脆弱性はバージョン 1.0.15 で修正されているため、バージョン範囲を [1.0.15, 1.1.0) にオーバーライドする必要があります。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>NuGet.Dependencies</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
  </ItemGroup>

  <ItemGroup Label="Dependency Resolutions">
    <!-- Microsoft.AspNetCore.App -->
    <PackageReference Include="Microsoft.AspNetCore.Http.Connections" Version="[1.0.15,1.1.0)" />
  </ItemGroup>
</Project>

依存関係の解決の近くにコメントを追加して、後で誰かが依存関係が存在する理由を知るようにすることをお勧めします。 ルート依存関係が新しいバージョンを使用するときに、削除できます。 それ以外の場合は、依存関係を蓄積します。

使用可能な修正方法がない場合はどうすればよいですか?

既知の修正方法が利用できないときは、アップグレードされたコンポーネントが使用可能になるまで、他の修復方法として次のオプションを使用できます。

  • コンポーネントの使用を停止し、コードから削除します。この削除は、依存関係スキャン タスクがインストールされた次のビルドで検出されます
  • コンポーネント自体に修正を投稿します。 組織にオープンソース コントリビューションに関する特定のガイドラインがある場合は、それらのガイドラインに従ってください。
  • 警告を無視します。 ただし、既知の修正方法がないアラートでも、組織にセキュリティ上の脅威が発生する可能性があります。 既知の修正方法がないだけで、アラートを無視しないことをお勧めします。

依存関係スキャン アラートを無視する

アラートを閉じるには、次の手順を実行します。

  1. 閉じたいアラートに移動し、アラートを選択する。

  2. [アラートを閉じる] ドロップダウンを選択します。

  3. クローズする理由として [リスクの許容] または [誤検知] を選択します (まだ選択していない場合)。

  4. [コメント] テキスト ボックスに、任意でコメントを追加します。

  5. [閉じる] を選択してアラートを送信して閉じます。

  6. アラートの状態が [オープン] から [Closed] (クローズ) に変わり、無視の理由が表示されます。

    依存関係スキャン アラートを無視する方法を示すスクリーンショット

このアクションにより、すべてのブランチでアラートが無視されます。 同じ脆弱性を含む他のブランチも無視されます。 以前に無視されたアラートを手動で再オープンできます。

プル要求に対する依存関係スキャン アラートの管理

プル要求の新しいコード変更に対してアラートが作成された場合、アラートは pull request の [概要 ] タブのコメント セクションの注釈として、および [Advanced Security repository] タブのアラートとして報告されます。pull request ブランチには、新しいブランチ ピッカー エントリを使用できます。

影響を受けるパッケージ マニフェストを確認し、結果の概要を確認すると、[概要] セクションで注釈を解決できます。

アクティブな依存関係 pull request 注釈のスクリーンショット。

プル要求アラートを無視するには、[アラート詳細] ビューに移動して、両方のアラートを閉じて注釈を解決する必要があります。 それ以外の場合は、コメントの状態 (1) を変更するだけで注釈は解決されますが、基になるアラートを閉じたり修正したりすることはありません。

クローズした依存関係のプル要求注釈のスクリーンショット。

プル要求ブランチの全体的な結果を確認するには、[リポジトリ]>[高度なセキュリティ] の順に選択し、プル要求ブランチを選択します。 注釈 [詳細の表示 (2) を選択すると、[セキュリティの詳細設定] タブのアラートの詳細ビューが表示されます。

ヒント

注釈は、影響を受けるコード行が pull request のターゲット ブランチと比較してプル要求の違いに完全に一意である場合にのみ作成されます。